자바스크립트 - 유효성체크 예제

안녕하세요

이번 시간에는 일반적으로 홈페이지 같은 곳에서

회원가입을 할 때 아이디, 연락처, 이메일 등 다양한 정보를 적을 때

이 값들에 유효성을 체크하는 자바스크립트 예제를 올려봅니다.



위의 그림과 보시다시피 비밀번호를 입력하지 않으면 비밀번호를 입력하세요 라는 메시지가 나오거나 연락처를 문자로 입력하면 숫자로 입력하라는 등의 메시지를 체크하는 예제입니다.

폼 화면은 간단하니 직접 구현하시고

자바스크립트에서 함수 기능을 구현해봤으니 참고 하시면 되겠습니다.





function check()
{
 if(!frm.uid.value){
  alert("아이디를 입력하세요");
  frm.uid.focus(); // 입력 포커스 주기
  return;
 }
 if(!frm.upwd.value){
  alert("비밀번호를 입력하세요");
  frm.upwd.focus();
  return;
 }
 if(!frm.tel.value){
  alert("전화번호를 입력하세요");
  frm.tel.focus();
  return;
 }
 if(!frm.email.value){
  alert("이메일을 입력하세요");
  frm.email.focus();
  return;
 }
 // 아이디 4자~8자 길이 체크
 var objId=frm.ui.value;
 if(objId.length<4 objid.length="">8){
  alert("ID 길이는 4자이상 8자이내여야 합니다.");
  frm.uid.select(); // 마킹 포커스 주기
  return;
 }
 if(!isUserid(frm.uid)){
  alert("아이디는 영문자, 숫자, !, @, _여야 해요");
  frm.uid.select();
  return;
 }
 // 아이디가 알파벳, 숫자, !, @, _인지 체크
 if(!isUserid(frm.uid)){
  alert("아이디는 영문자, 숫자, !, @, _여야 해요");
  frm.uid.select();
  return;
 }
 function isUserid(obj){
  var str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!@";
  return containChars(obj,str); // obj는 사용자가 입력한 값, str은 id를 체크하는 유효성 값
 }
 function containChars(obj, chars){
  var val=obj.value.toUpperCase(); // 소문자를 대문자로 변환
  for(var i=0;i

자바(Java) - 사용자 정의 예외 클래스 예제

안녕하세요

이번 시간에는 자바에서 제공해주는 예외 클래스외에

사용자가 직접 정의할 수 있는 예외 클래스의 사용 방법을 올려봅니다.

사용자 정의 예외 클래스를 만들기 위해서는..

- Exception을 상속받는 클래스를 만들어야 합니다.

- 생성자를 구성하고, 생성자 안에서 super(예외 메시지); 를 호출해야 합니다.
-->여기에 들어간 예외 메시지가 getMessage()를 호출할 때 반환되는 메시지가 됩니다.

- 사용자 예외 클래스 객체를 생성해서 throw 라는 키워드로 던져주고, 반드시 메소드 헤더부분에 해당 예외를 throws 해줘야 합니다.


public class PongSite {
 public static void login(String name, String pwd) throws NotSupportedNameException{
  System.out.println("***Login Page***");
  char lastName=name.charAt(0); // 첫번째 글자를 lastName 변수에 저장
  if(lastName=='퐁'){
   System.out.println(name+"님 환영합니다.");
  }else if(lastName=='콩'){
   //사용자 정의 예외 발생
   throw new NotSupportedNameException("콩씨는 절대로 입장 불가");
   /* throw new 예외();
    * throw와 throws는 세트로 함께 사용하자.
    * */
  }else{
   //기타 성씨인 경우
   throw new NotSupportedNameException("기타 성씨분들은 이용에 제한이 있어요");
  }
 }
 public static void main(String[] args) {
 //명령줄 인수로 이름, 비번을 받자.
 if(args.length!=2){
  System.out.println("명령줄 인수 2개를 입력하세요[이름, 비밀번호]");
  return;
 }
 
 String name=args[0];
 String pwd=args[1];
 try{
  login(name,pwd);
 }catch(NotSupportedNameException e){
  String msg=e.getMessage; // 예외 메시지를 문자열로 반환한다.
  System.out.println(msg);
  //스택기록을 출력하여 예외가 발생된 지점을 보여줌(디버깅용으로 사용)
  e.printStackTrace();
  return;
 }
 System.out.println(">>>사이트 이용<<<");
}


위의 소스 코드를 실행하면 다음과 같은 결과가 나옵니다.


자바(Java) - FileReadException 처리

안녕하세요

이번 시간에는 파일을 읽어들어 출력하는 클래스를 만들어 보고,

파일을 읽어들일 때 처리하는 예외 처리에 관련된 예제를 올려봅니다.

전에 올렸던 예외처리 예제와 큰 틀은 벗어나지 않지만

이 역시, 이런게 있다는 정도로만 보시면 좋을것 같습니다.

결과 화면은 아래와 같습니다.



파일의 속성에 들어가 주소값을 복사한 후에..




입력창에 파일 주소 값을 붙여넣고 '확인'을 누르면..




출력문에 해당 소스 코드가 출력된느 것입니다.


예제 소스코드는 아래와 같으니 참고하시면 좋을것 같습니다.



public class FileReadExceptionTest{
 public static String readFile(String filename){
  FileReader fr=null; //파일을 읽는 메소드를 갖는다.
  char[] data=new char[1000]; //파일 내용을 char 배열에 담아 읽자.
  try{
   fr=new FileReader(filename);
   //FileNotFoundException 발생할 수 있음
   fr.read(data, 0, data.length);
   // 배열 인덱스 0부터 끝까지 읽어들인다, 파일을 읽어서 파일내용을 data배열에 담는다.
   //IOException
   if(fr!=null) fr.close();
  }catch(FileNotFoundException e){
   System.out.println(filename+"파일을 찾을 수 없습니다");
   return null;
  }catch(IOException e){
   System.out.println("입출력 오류 발생");
  }catch(Exception e){
   System.out.println("기타 오류 발생");
  }
  String fileData = new String(data);
  return fileData; // 메인 함수로 리턴 해줌
 }
 public static void main(String[] args) {
  String filename=JOptionPane.showInputDialog("읽을 파일명을 입력하세요");
  String contents=readFile(filename);
  if(contents!=null){
    System.out.println(">>>>"+filename+"<<<<");
    System.out.println(contents);
  }
 }
}

자바(Java) - 예외(Exception) 이란?

안녕하세요

이번 시간에는 자바에서 오류 처리를 위해 자주 쓰이는 Exception에 대해

개념과 예제를 보여드리는 시간을 가지겠습니다.


자바에서 Exception 이란?
프로그램이 진행하는 과정에서 만나게 되는 오류(가벼운 정도의 에러)입니다.

예외 관련 상속도는 아래와 같이 구성되어 있습니다.




예외 처리의 목적은 프로그램 진행시 발생할 수 있는 상황들을 미리 정해놓고, 해당하는 예외가 발생했을 경우 적절한 조치를 취해서 프로그램이 정상적으로 작동하도록 하기 위함입니다.

예외 처리의 방법은 두 가지가 있습니다.

1) Handle하는 방법: 직접 처리하는 방법 try~catch 절을 이용

-사용예-
try
{
    예외 발생 코드
}
catch(해당예외클래스 e)
{
    예외처리코드
}

2) Declare하는 방법: 선언하는 방법 throws 절을 이용
예외 처리를 직접 하지 않고 메소드를 호출하는 쪽으로 넘긴다.

-사용예-
public void sub() throws IOException{
   int r=System.in.read();
} // 위 처럼 선언하면, sub()를 호출하는 쪽으로 IOException 을 넘겨준다.

그리고 finally절이 try~catch문에서 맨 마지막에 나오는데

이것은 선택 사항입니다. finally를 넣는 다는 것은 반드시 한번은 코드를 실행해야 한다는 부분을 넣겠다는 것입니다.

[심지어 return 문이 오더라도 finally블럭은 반드시 실행되며,
단 System.exit(0)의 경우는 실행되지 않고 종료됩니다.]

자 그럼 예를 한번 볼까요~

public class ExceptionTest5 {
 public static void main(String[] args) {
  try{
   int num2=Integer.parseInt(JOptionPane.showInputDialog("숫자 입력하세요");
   System.out.println("입력하세요=>");
   String a= "나무";
   int num=System.in.read()-48;
   int num3=50/(num*num2);
   System.out.println("num : "+num);
   System.out.println("num2 : "+num2);
   System.out.println("num3 : "+num3);
  }catch(NumberFormatException e){
   System.out.println("숫자를 입력하세요");
   return; // return문이 오면 반드시 실행돼야 할 코드가 안 옴->finally 문장을 추가
  }catch(ArithmeticException e){
   System.out.println("분모가 0이 되면 안됩니다");
   System.exit(0);//시스템 종료
  }catch(java.io.IOException e){
   System.out.println("입출력 오류 발생");
  }catch(Exception e){
   System.out.println("기타 오류");
  }finally{
   System.out.println(":::반드시 실행돼야 할 코드:::");
  }
  System.out.println("***The End***************");
}



실행 결과는 아래와 같습니다.

정상적인 상황

ArithmeticException 발생


NumberFormatException 발생



자바스크립트 - 배열 생성 방법 및 예제

안녕하세요

이번 시간에는 자바스크립트에서 배열을 생성하는 방법과 간단한 예제에 대해

글을 써볼까 합니다.

먼저 배열을 생성하는 방법은 2가지가 있습니다.

1) 배열 리터럴을 사용하는 방법

2) Array()라는 생성자 함수를 이용하는 방법


자 그럼 위의 2가지 방법을 활용하여 직접 배열을 만들어보겠습니다.




//1번 방식
var arr1 = [1,2,3,4];
var arr2 = [1,'ABC',true,12.3];
for(var i=0;i<<4;i++){
 document.write(arr1[i]+", ");
}
for(var i=0;i<4;i++){
 document.write(arr2[i]+", ");
}
//2번 방식
var arr3= new Array(90,80,70);
for(var i=0;i<3;i++){
 document.write(arr3[i]+", ");
}
var arr4= new Array(5);
arr4[0]='Hello';
arr4[1]=10;
arr4[2]=[100,200];
for(int i=0;i<3;i++){
 document.write(arr4[i]+", ");
}
var arr5=new Array(true, false, ['A', 'b', 1]);



위의 소스 코드를 실행하면 아래와 같은 결과가 나옵니다.


자바스크립트 - history 객체를 활용한 아주~~ 간단한 예제

안녕하세요

이번 시간에는 자바스크립트에서 history 객체를 활용한 예제를 올려봅니다.

너무너무 간단하니 허무하지 마십시오 ㅋ


결과 화면은 위와 같습니다. 참 간단하죠? ㅋ

소스코드도 매우 간단합니다.
var goBack=function(){
 // 하나 이전 페이지로 이동한다/
 window.history.back();
}
var goForward=function(){
 window.history.forward();
}
var goNaver=function(){
 location.href="http://www.naver.com";
}


아래는 html 예제로 위의 자바스크립트 소스 코드 밑에 이어서 코딩하셔야합니다.



자바스크립트 - 실제 달력을 만들어보자~!!

안녕하세요

이번 시간에는 자바스크립트에서 실제 달력을 만들어 보는 시간을 갖겠습니다.




보시다시피 위의 두 개의 버튼이 있습니다.

각각의 버튼을 누르면 해당 날짜가 보여지는 예제입니다.


var btn=document.getElementById('btn1');
btn1.onclick=function(){
 var year=2016;
 var month=9;
 
 show(year,month);
}
var btn2=document.getElementById('btn2');
btn2.onclick=function(){
 var year=2017;
 var month=2;
 
 show(year,month);
}
function show(year,month){
 var total_days; // 각 달의 총 일수
 switch(month)
 {
  case 1: case 3: case 5: case 7:
  case 8: case 10: case 12:
  total_days=31; break;
  case 4 : case 6: case 9:
  case 11:
  total_days=30; break;
  /*윤년(29일)
    1)기원 연수가 4로 나누어 떨어지는 해를 우선 윤년(29일)
    2)그 중에서 100으로 나누어 떨어지는 해는 평년(28일)
    3)다만 400으로 나누어 떨어지는 윤년(29일)
    */
  case 2 :{
   if(year%4==0 && year%100!=0 || year%400==0){
    total_days=20;
   }
   else
    total_days=28;
  }break;


아래의 소스는 이미지로 보여드리겠습니다.

직접 보고 이해하면서 타이핑 해주세요~!



자바스크립트 - Date 객체 활용으로 달력 만들어보자~!

안녕하세요

이번 시간에는 자바스크립트에서 Date 객체를 활용하여

특정 날짜를 나오게 하는 이벤트를 처리하는 소스 코드를 올려봅니다.



자 그럼 아래의 소스코드를 참고해보세요~!



// 작년 날짜를 보여주는 함수
function showLast(lastYear){
 var str="";
 var lastYear = new Date(2015, (9-1), 20);
 var obj=document.getElementById('msg');
 show(lastYear);
}
// 오늘 날짜를 보여주는 함수
function show(lastYear){
 if(!lastYear){
  var today=new Date();
 }else{
  today=lastYear;
 }
 //년도 월 일 요일
 var str="";
 str+=today.getFullYear()+"년 "; // 4자리수 년도 정보
 str+=today.getMonth()+1+"월 ";
 //Jan:0, Feb:1 ... Dec:11 따라서 +1을 해야함
 str+=today.getDate()+"일 ";
 str+=myDay(today.getDay())+"요일 "; // 사용자 정의 함수 myDay 만들기
 //Sun:0, Mon:1 ...
}
function myDay(day){
 var str="";
 switch(day){
  case 0: str="일"; break;
  case 1: str="월"; break;
  case 2: str="화"; break;
  case 3: str="수"; break;
  case 4: str="목"; break;
  case 5: str="금"; break;
  case 6: str="토"; break;
 }
 return str;
}

자바스크립트 - location 객체 활용 예제

안녕하세요

이번 시간에는 자바스크립트에서 BOM의 location 객체의 간단한 활용 예제 올려봅니다.

정말 간단하니 이런것이 있구나 하고 봐주세요~


먼저 결과 화면은 위와 같습니다.

특정한 경로로 페이지를 이동하는 버튼과, 새로고침 하는 버튼.

마지막으로 버튼을 누른 후 3초후에 특정 경로로 이동하는 특성을 가진 버튼

총 세개의 버튼이 있습니다.

구현하기 위해서는 아래의 소스 코드를 참고하시면 됩니다.


 function go(){
  //[1]href 속성
  window.location.href="이동할 경로.html";
 }
 function refresh(){
  location.reload(); // 새로고침
 }
 function goUrl(url){
  window.setTimeout('location.href="'+url+'"',3000);
 }

자바스크립트 - document 객체 활용

안녕하세요

이번 시간에는 자바스크립트에서 BOM(Browser Object Model)에서 document 객체에

관련된 간단한 소스코드를 올려봅니다.

그냥 이런게 있다 정도로만 보시면 될 것 같습니다.



  //doucment 속성:[1]title 속성
  window.document.title="현재 문서 제목입니다";
  //[2] write()함수:문서영역에 문자열/데이터 출력
  document.write("

"+document.title+"

"); //[3] lastModified속성 : 현재 html 문서가 마지막에 저장된 시간 document.write("

"+document.lastModified+"

"); function change(){ //[4] bgColor속성: 배경색 //[5] fgColor속성: 글자색 document.bgColor="#ff0066"; document.fgColor="#009966"; }



결과 화면은 위와 같습니다. 색상변경 버튼을 누르면 글자색과 배경색이 바뀝니다.

자바(Java) - 인터페이스(Interface) 개념과 예제

안녕하세요

이번 시간에는 저번 시간 자바의 final에 이어서

인터페이스(Interface) 개념과 예제를 올려봅니다.

자바에서 인터페이스는 모든 메소드가 추상메소드이고, 모든 속성이 상수(final 변수)로 구성된 틀  : 멤버가 추상메소드+ 상수로만 구성된 것을 말합니다.

 - 인터페이스를 상속받을 때는 implements 란 키워드를 사용합니다.
 - 인터페이스는 다중 상속이 가능합니다.

인터페이스 구현방법은 아래와 같습니다.
interface MyInter{
   void sub();
   // 추상메소드 -- public과 abstract를 생략해도 자동으로 붙는다.
}

또한 인터페이스를 상속받으려면 반드시 추상메소드를 오버라이딩 해야합니다.

class MyClass implements MyInter{
   public void sub(){
      System.out.println("Sub()");
   }
}

개념은 여기까지 설명하고 아래 실제 예제를 올려봅니다.


interface Inter1{
 String bar();
}
interface Inter2{
 void baz();
}
interface Inter3 extends Inter1, Inter2{
 int ADD=1;
 int DELETE=2;
}
//interface는 자동으로 abstract가 붙지만 추상클래스는 수동으로 입력해줘야함
abstract class AbsClass{
 abstract void foo();
 public void print(){
  System.out.println("AbsClass");
 }
}
/*[실습] Inter3, AbsClass를 상속받은 뒤
 * 에러나지 않도록 메소드를 오버라이드 하세요
 * */
class MyClass2 extends AbsClass implements Inter3{
 
 @Override
 public void foo(){
  System.out.println("foo()");
 }
 @Override
 public void print(){
  System.out.println("MyClass2");
 }
 @Override
 public String bar(){
  return "리턴";
 
 @Override
 public void baz(){
  System.out.println("baz()");
 }
}
public class InterfaceTest2{
 public static void main(String[] args) {
  MyClass2 m1 = new MyClass2();
  m1.foo();
  m1.print();
  System.out.println(m1.bar());
  m1.baz();
  System.out.println(Inter3.ADD);
  System.out.println(m1.DELETE)
  //AbsClass타입으로 선언 MyClass2 객체 생성;
  AbsClass a1 = new MyClass2();
  a1.foo();
  a1.print();
  //a1.bar;[x]
  //Inter3타입으로 선언 MyClass2 객체 생성
  Inter3 a2 = new MyClass2();
  System.out.println(a2.bar());
  a2.baz();
  System.out.println(Inter3.ADD);
  System.out.println(a2.DELETE);
 }
}

자바(Java) - final 지정자란? 개념과 예제 포함~!

안녕하세요

이번 시간에는 자바에서 fianl 지정자에 대해 글을 써봅니다.

우선 final 지정자는 abstract와 반대 개념으로 생각하시면 됩니다.


크게 어려운 개념은 아니라서 

바로 예제로 들어갑니다.



/*[1]final + class : 상속을 못받게 함
 *[2]final + method : 오버라이딩을 못하게 함 
 *[3]final + 변수 : 값 할당을 못하게 상수로 만든다. 
 * 
 * */
final class Super{
 void foo(){
  System.out.println("Super's foo()");
 }
}
class Sub{ // extends Super(){ [x] class 앞에 final이 붙으면 상속 불가
 
 void bar(){
  System.out.println("bar###");
 }
 final void baz(){
  System.out.println("baz@@@");
 }
}
class SubSub extends Sub{
 
 int x=10; // 인스턴스 변수
 final int y=20; // final인 인스턴스 변수
 public static final int z=30; // final인 클래스 변수
 @Override
 protected void bar(){
  System.out.println("bar!!!!!");
 }
 /*protected void baz(){ [x] 재정의 불가. final메소드이므로
  System.out.println("baz%%%%%");
 }*/
}
public class FinalTest {
 public static void main(String[] args) {
  
  //SubSub의 x,y,z 값을 출력하기
  SubSub d = new SubSub();
  System.out.println("d.x : " + d.x);
  System.out.println("d.y : " + d.y);
  System.out.println("d.z : " + d.z);
  System.out.println("SubSub.z : " + SubSub.z);
  System.out.println("--값 변경--------");
  
  d.x=50;
  System.out.println("d.x : " + d.x);
  
  //final이 붙은 변수는 값 변경이 불가
  /*d.y=60;
  SubSub.z=90;*/
 }
}

자바(Java) - BorderLayout과 GridLayout을 활용한 예제

안녕하세요

이번 시간에는 자바 애플릿에서 BorderLayout과 GridLayout을 활용한 예제를 올려봅니다.

일단 결과 사진을 보여주면 아래와 같습니다.


보기에는 단순해보이지만, 생각해보다 머리를 쓰면서 구현을 해야 저 그림이 나옵니다.

먼저 BorderyLayout을 기반으로 하여

패널(Panel)울 두 개 생성하여 중앙, 남쪽에 배치하고

그 각각의 패널에 버튼을 붙입니다.

자 그럼 아래 소스 코드를 보시죠~


public class LayoutTest extends Applet {
 
 Button y1,y2,y3,y4;
 Button pp1,pp2;
 Panel p1,p2; // 부모 패널 변수
 
 @Override
 public void init(){
 //애플릿 전체의 레이아웃 설정
 BorderLayout b = new BorderLayout();
 setSize(400,400);
 setLayout(b);
 // 패널 1,2를 생성해서 부착
 p1 = new MyPanel(); // 자식의 메소드를 오버라이드(상속 받아서 내가 필요한것만 재정의) 10,10,10,10로 여백 지정
 p2 = new MyPanel(20,10,20,10); // MyPanel 클래스의 매개변수 4개 받는 생성자로 이동
 add(p1, "Center");
 add(p2, "South");
 p1.setBackground(Color.YELLOW);
 p1.setBackground(Color.PINK);
 y1=new Button("버튼1");
 y2=new Button("버튼2");
 y3=new Button("버튼3");
 y4=new Button("버튼4");
 p1.setLayout(new GridLayout(2,2,10,10));
 p1.add(y1);p1.add(y2);
 p1.add(y3);p1.add(y4);
 pp1=new Button("버튼1");
 pp2=new Button("버튼2");
 p2.setLayout(new GridLayout(2,1,10,10));
 p2.add(pp1);
 p2.add(pp2);
}
 

아래의 소스는 제가 재정의한 MyPanel 클래스입니다.

저 클래스는 애플릿의 안쪽 여백을 지정했습니다.


public class MyPanel extends Panel{
 int a,b,c,d;
 public MyPanel(){ // 기본 생성자
  this(10,10,10,10);
 }
 // 생성자 오버로드
 public MyPanel(int a, int b, int c, int d){
  this.a=a;
  this.b=b;
  this.c=c;
  this.d=d;
 }
 @Override
 public Insets getInsets(){
  return new Insets(a,b,c,d);
 }
}

자바(Java) - 추상클래스(abstract class)에 대해 알아보자

안녕하세요

이번 시간에는 자바에서 '추상 클래스'에 대한 개념을 알아보는 시간을 가지겠습니다.

추상클래스란 한개 이상의 추상 메소드를 가지는 클래스를 말합니다.

추상메소드(abstract method)란?

메소드 몸체(body)없이 선언만 하는 것으로..
이 때 메소드 앞에 abstract 란 modifier를 붙여 줍니다.
ex) abstract public void sub();

추상클래스에서 좀 더 유의해야 할 사항이 있다면 아래와 같습니다.

추상 클래스를 상속받은 클래스에서는 추상 메소드를 강제적으로 오버라이딩해야 합니다. 그렇지 않을 경우 그 자식 클래스도 추상 클래스가 되어야 합니다

추상 클래스는 타입선언은 할 수 있으나 new 해서 객체 생성은 할 수 없으며, 반드시 상속을 통해서만 완성됩니다.

자 이론은 여기까지 하고 실제 구현 예를 봅시다.

abstract public class Animal{
 abstract public void crySound();
 abstract public String getBaby(int num);
}
class Dog extends Animal{
 public void crySound(){
  System.out.println("@@ 개 짖는 소리 @@");
  System.out.println("멍멍~~");
 }
 public String getBaby(int x){
  String str="";
  str=x+"마리의 새끼를 낳았어요";
  return str;
 }
}
class Cat extends Animal{
 public void crySound(){
  System.out.println("@@ 고양이 우는 소리 @@");
  System.out.println("야옹~~");
 }
 public String getBaby(int x){
  String str="";
  str=x+"마리의 새끼를 낳았어요";
  return str;
 }
}

위의 소스는 추상화 클래스에서 두 개의 추상 메소드를 구현하고

개, 고양이 클래스에서 추상 메소드를 사용한 예제입니다.

아래의 소스는 자바의 swing을 활용하여 응용한 예제입니다.


public class T_AnimalTest {
 public static void main(String[] args) {
  String type=JOptionPane.showInputDialog("동물 유형을 입력하세요");
  String strNum=JOptionPane.showInputDialog("마리수를 입력하세요");
  
  int num = Integer.parseInt(strNum);
  Animal d = null; // 부모타입 Animal d 선언
  if(type.equals("개")){ // 문자열 내용 비교
   d = new Dog();
  }else if(type.equals("고양이")){
   d= new Cat();
  }else{
   System.out.println("그런 동물 안키워~~");
   return; // 밑의 소스로 안내려감, return에서 끝나버림
  }
  
  d.crySound();
  String s = d.getBaby(num);
  System.out.println(s);
 }
}

자바스크립트 - Window 객체 함수(setTimeout, setInterval)를 활용해보자

안녕하세요

이번 시간에는 자바스크립트에서

Window 객체 함수(setTimeout, setInterval)를 활용하여 재밌는 이벤트들을 만들까 합니다

실제로도 많이 쓰이니 잘 활용하시면 좋을것 같습니답~! ㅎㅎ

먼저 결과 예시 화면을 보자면 아래와 같습니다.


3초 뒤라는 버튼을 누르면 3초 뒤에 '꽝' 이라는 메시지가 나옵니다.

옆에 3초 마다 버튼을 누르면 '꽝' 이라는 메시지가 3초마다 나오고

중지를 누르면 안나오게 됩니다.


밑에 현재 시간 버튼을 누르면 현재 시간이 나옵니다.

그리고 시계 동작을 누르면 1초 마다 시간이 움직이고

멈춤 버튼을 누르면 시계 동작이 스톱됩니다.

아래에 예제 소스가 있으니 참고하십시요~
<script type="text/javascript">
var go=function(){
window.alert("꽝!");
}
function showTime(){
//현재 시간 구하기=>Date 객체 활용
var today = new Date();
var str="";
str+=today.getHours()+"시 ";
str+=today.getMinutes()+"분 ";
str+=today.getSeconds()+"초 ";
//아이디가 msg인 곳에 현재 시간정보를 출력
var obj=document.getElementById('msg');
obj.innerHTML="<h2 style='color:blue'>"+str+"</h2>";
}
</script>
<body>
<button onclick="obj1=window.setTimeout(go,3000)">3초 뒤
(setTimeout)</button>
<!--
변수1=window.setTimeout(함수명,숫자); // 특정 시간 경과 뒤 한번 함수를 호출함
window.clearTimeout(변수1)
변수2=window.setInterval(함수명,숫자); // 주기적으로 함수를 호출함
window.clearInterval(변수2);
-->
<button onclick="obj2=window.setInterval(go,3000)">3초 마다
(setInterval)</button>
<button onclick="window.clearInterval(obj2)">중지
(clearInterval)</button>
<button onclick="showTime()">현재 시간</button>
<button onclick="timer=setInterval(showTime, 1000)">시계 동작</button>
<button onclick="clearInterval(timer)">시계 멈춤</button>
<hr color="red">
<p></p>
<div id="msg"></div>

자바스크립트 - 브라우저 내장객체(Window객체) 활용

안녕하세요

이번 시간에는 자바스크립트에서 BOM(Browser Object Model) 이라고 하여 웹브라우저 윈도우를 관리할 목적으로 제공되는 객체 모음에 대해 글을 써봅니다.

BOM에는 계층이 있는데 계층도는 아래와 같습니다.



제가 알아볼 객체는 5가지 입니다.

window: 최상위 객체

navigator: 브라우저 이름, 버전 정보를 보관하는 객체

document: 현재 문서에 대한 정보를 보관하는 객체

location: 현재 보여지는 웹페이지의 url정보를 보관하는 객체

history: 현재 브라우저가 접근했던 url정보를 보관하는 객체

이번 시간에는 window 객체의 활용법을 다룬 소스코드를 올려봅니다.

먼저 결과 화면을 보여주면 아래와 같습니다


버튼은 4개가 있습니다.

먼저 팝업창을 열면 아래와 같은 화면이 나옵니다.

물론 아래의 화면은 제가 예시로 짠 화면이고, 링크를 걸어둘 화면을 

간단하게 구현하시면 됩니다.



창이 열리면 팝업창 닫기 버튼을 눌러서 닫을수 있고,

위치도 지정된 위치로 변경할 수 있습니다.

아래의 사진은 화면이 좀 더 커진 모습입니다.

자 그럼 이제 소스를 보시죠~




<script type="text/javascript">
var win=null; // 전역변수
var openWin=function(){
var url="가야할 주소.html";
//변수선언=window.open(url, '창이름', '속성들');
win=window.open(url, "팝업창", "width=400, height=400, left=100, top=100,
resizable=yes, scrollbars=no, menubar=yes, toolbar=yes, location=yes");
}
var closeWin=function(){
//window 객체의 close() 함수
if(win!=null){
win.close();
win=null;
}
}
</script>
<button onclick="openWin()"> 팝업창 열기 </button>
<button onclick="openWin()"> 팝업창 열기 </button>
<button onclick="win.moveTo(300,300)">팝업창 위치 변경</button>
<button onclick="win.resizeTo(700,700);win.focus()">팝업창 크기 변경 </button>

자바(Java) 애플릿 - BorderLayout 예제

안녕하세요

이번 시간에는 자바 애플릿에서 자주 쓰이는

BorderLayout 예제 올려봅니다.

이것도 마찬가지로 사용법이 간단합니다.

결과 화면은 아래와 같습니다



보시다시피 버튼이 5개이고,

각 버튼이 동,서,남,북,중앙으로 배치되어있습니다.

대충 어떤 코드가 나올지 예상되시죠? ㅎㅎ




import java.applet.Applet;
import java.awt.*;

public class MyBorederlayout extends Applet{
	Button b1,b2,b3,b4,b5;
	/*BorderLayout은 동,서,나무,북,중앙의 경계지역을
	 * 지정해 배치하는 방식
	 * */
	
	@Override
	public void init(){
		setSize(400,400);
		BorderLayout b_1= new BorderLayout(10, 20); // 버튼들의 간격 지정
		setLayout(b_1);
		
		b1=new Button("b1");
		b2=new Button("b2");
		b3=new Button("b3");
		b4=new Button("b4");
		b5=new Button("b5");
		//add 할 때 영역을 지정해야 함
		add(b1,"North"); // add(b1,BorderLayout.NORTH);
		add(b2,"South");
		add(b3,"East");
		add(b4,"West");
		add(b5,"Center");
		//영역을 지정하지 않고 붙이면 디폴트 센터에 붙는다.
	} //init------------------
	
	//public Insets getInsets(): 컨테이너의 바깥여백을 주고자 할 때 오버라이드(재정의해 사용)
	@Override
	public Insets getInsets(){ // Insets : 반환형
		//Insets(int top, int left, int bottom, int right) 
		Insets in = new Insets(10,20,30,40);
		return in;
	}
	
}

자바(Java) 애플릿 - FlowLayout 예제

안녕하세요 이번 시간에는 자바 애플릿에서 쓰이는 레이아웃의 종류와

그 중에서 FlowLayout 활용 예를 보여드리겠습니다.

Layout은 아래와 같이 5개가 많이 사용됩니다.

 * [1] FlowLayout
 * [2] BorderLayout
 * [3] GridLayout
 * [4] GridBagLayout
 * [5] CardLayout

아래는 FlowLayout 결과 화면입니다.

생각보다 평범하죠? ㅋ


레이아웃을 사용한 예라 간단합니다.

컴포넌트로는 버튼 5개를 넣었습니다.


import java.applet.Applet;
import java.awt.*;

public class MyFlowlayout extends Applet {
	//애플릿(Panel 계열) 기본 레이아웃 : FlowLayout
	Button b1, b2, b3, b4, b5;
	
	@Override
	public void init(){
		//setLayout(new BorderLayout()); //레이아웃 설정
		FlowLayout  f1 = new FlowLayout(FlowLayout.LEFT, 20, 40); // 수평간격(hgap) : 20, 수직간격(vgap) : 40
		setLayout(f1);
		
		setSize(400,400);
		b1 = new Button("B1");
		b2 = new Button("B2");
		b3 = new Button("B3");
		b4 = new Button("B4");
		b5 = new Button("B5");
		
		add(b1);add(b2);add(b3);
		add(b4);add(b5);
		
	}
}

자바(Java) - 애플릿 간단 예제(Choice, List, Scrollbar)

안녕하세요

이번 시간에는 저번 포스팅에 이어 애플릿 간단 예제 올려봅니다.

간단한 활용법이니 머리 식힐겸 보시면 됩니다.

일단 결과 화면은 아래와 같습니다.


자 그럼 소스코드를 보시죠~



import java.applet.Applet;
import java.awt.*;

public class MyGui2 extends Applet {
	
	Choice ch;
	List lst1, lst2;
	Scrollbar sr1, sr2;
	
	public void init(){
		//init()안에서 레이아웃 설정 및 컴포넌트 객체 생성
		//부착을 한다
		setSize(400,400);
		ch = new Choice();
		add(ch);
		ch.add("Java"); // 인덱스:0
		ch.add("HTML5"); // 1
		ch.add("CSS3.0"); // 2
		ch.add("JavaScript");
		
		System.out.println(ch.getItem(2));	
		
		lst1 = new List(5); // 단일 선택 목록
		add(lst1);
		lst1.add("JSP");
		lst1.add("Oracle");
		lst1.add("Spring");
		System.out.println(lst1.getItem(2));
		
		lst2 = new List(4, true); // 리스트에서 다중 선택 가능
		add(lst2);
		lst2.add("유비");
		lst2.add("관우");
		lst2.add("장비");
		lst2.add("조운");
		
		sr1 = new Scrollbar(sr1.VERTICAL );
		add(sr1);
		
		//Scrollbar(int orientation, int value, int visible, int minimum, int maximum) 
		sr2 = new Scrollbar(sr1.HORIZONTAL ,50,10,0,255+10); // 초기값, 바의폭, 최소값, 최대값
		
		add(sr2);
		
	}
}

자바(Java) - 애플릿 간단 예제(Button, Label, TextField, TextArea, Checkbox)

안녕하세요 이번 시간에는 자바에서

api를 잘 쓰고 불러오는 데 유용한 애플릿 예제를 올려봅니다.

애플릿을 처음 해보는데 그렇게 어렵지 않네요.

결과 화면은 아래와 같습니다.


조금 조잡하죠? ㅋ 

아직 레이아웃을 설정하지 않고 간단하게 사용하는거라 UI는 신경쓰지 않았습니다 ㅋ

이번 시간에는 그냥 사용하는 걸로 해봅시다~!





import java.awt.*;
import java.applet.*;
public class MyGui extends Applet{
	Button b1, b2, b3;
	Label lb1, lb2, lb3;
	TextField tf1, tf2, tf3;
	TextArea ta1, ta2;
	Checkbox c1, c2, c3, cm, cf;
	// Button is a Component
	// Applet is a Contianer
	// -> 애플릿이라는 컨테이너에 버튼이라는 컴포넌트를 부착!
	public void init(){ // 생성자 역할을 함=>멤버변수 초기화
	// 객체가 생성될 때 딱 한번만 호출됨
		setSize(400,400);
		b1 = new Button("Home");
		b2=new Button("로그인");
		b3=new Button("회원가입");
		
		//컴포넌트를 컨테이너에 부착해야 나옴
		this.add(b1); // this 빼도 됨
		add(b2);
		add(b3);
		//버튼의 배경색 주기
		b1.setBackground(Color.green);
		b2.setBackground(Color.CYAN);
		b3.setBackground(Color.WHITE);
		//버튼의 글자색 주기
		b1.setForeground(Color.black);
		b2.setForeground(Color.PINK);
		b3.setForeground(Color.orange);
		//애플릿의 배경색을 lightGray로 주세요
		setBackground(Color.lightGray);
		lb1=new Label(" 이름 : "); // 디폴트 : 왼쪽정렬
		lb2=new Label("  키  : ", Label.RIGHT); // 중앙정렬
		lb3=new Label("초능력: ", Label.CENTER); // 오른쪽 정렬
		add(lb1);
		add(lb2);
		add(lb3);
		lb1.setBackground(Color.white);
		lb2.setBackground(Color.yellow);
		lb3.setBackground(Color.blue);
		tf1=new TextField(10);
		tf2=new TextField("호랑이사자치타");
		tf3=new TextField("여우고래상어", 20);
		add(tf1);
		add(tf2);
		add(tf3);
		ta1=new TextArea("안녕하세요, 호날두입니다", 10, 20);
		add(ta1);
		ta2=new TextArea("까꿍", 5, 5, TextArea.SCROLLBARS_VERTICAL_ONLY);
		add(ta2);
		
		c1=new Checkbox("선택해주세요");
		c2=new Checkbox("등산", true);
		c3=new Checkbox("운동", false);
		add(c1);
		add(c2);
		add(c3);
		//awt 패키지에는 라디오 버튼이 없기 때문에 이것을 사용하려면 Checkbox를 그룹지어야 함
		CheckboxGroup gr = new CheckboxGroup();
		cm=new Checkbox("남자",true,gr);
		cf=new Checkbox("여자",false,gr);
		add(cm);
		add(cf);
	}
}
		
	
		
		
		

자바(Java) - 오버라이딩이란??

안녕하세요

이번 시간에는 자바에서 역시나 중요한 개념 중 하나인 오버라이딩(Overriding)에 대해서

글을 써봅니다.


오버라이딩은 메소드 재정의로, 부모의 메소드를 자식 클래스에서 다시 정의하여 구성하는 것입니다.

오버라이딩에는 5가지의 규칙이 있습니다.

1) 부모의 메소드와 이름을 동일하게
2) 매개변수의 자료형, 갯수, 순서 모두 동일하게
3) 반환타입도 부모의 것과 동일하게
4) 접근지정자는 부모의 것과 동일하거나 더 넓은 범위의 지정자 사용이 가능하다
5) Exception의 경우 부모 클래스의 메소드와 동일하거나 더 구체적인 Exception을 발생시켜야 한다.  (대신 메소드 바디는 부모와 다르게 구성)

아래에 오버라이딩 예제를 올려봅니다.

public class Human{
	String name;
	int height;
	
	public Human(String name, int height){
		this.name=name;
		this.height=height;
	}
	public void showInfo(){
		System.out.println("이름 : "+name);
		System.out.println("키 : "+height);
	}
}
class Superman extenhds Human{
	int power;
	public Superman(){
		super("슈퍼맨", 170); // super 명령어를 사용하여 부모 Human 클래스를 호출함
	}
	public Superman(String name, int height, int power){
		super(name, height);
		this.power=power; // power는 Superman 클래스에서 설정
	}
	//오버라이드
	@Override
	public void showInfo(){
		super.showInfo();
		System.out.println("초 능 력 : "+ power);
	}
	//오버로드
	public void showInfo(String title){
		System.out.println(title);
		this.showInfo(); // 위의 showInfo() 메소드로 이동
	}
	public String showInfo(String title, int pw){
		String str="";
		this.showInfo(title); // 위의 showInfo(String title) 메소드로 이동
		power+=pw;
		str+=">>>초능력 UP>>"+power+"<<<\n";
		return str;
	}
}

아래 소스는 Overriding이라는 메인 클래스에서 위의 Human, Superman 클래스를 불러온 소스 코드입니다.

부모와 자식의 상속관계를 맺을 경우, 객체를 생성할 때

------------------------------------------------------
부모타입의 변수선언 = new  자식객체생성자();
------------------------------------------------------
가능합니다.

하지만 자식의 고유한 변수나 메소드는 접근할 수 없습니다.

또 자식클래스에 오버라이드한 메소드가 있을 때는

자신의 클래스보다 오버라이드한 자식의 메소드를 우선 호출하니 주의 바랍니답


public class Overriding {
	public static void main(String[] args) {
		Human h1 = new Human("홍길동", 160);
		Superman s1 = new Superman("리차드", 170, 220);
		h1.showInfo();
		s1.showInfo();
		
		s1.showInfo("##슈퍼맨 정보");
		String info = s1.showInfo("-- 슈퍼맨 정보 --", 300);
		System.out.println(info);
		Human hs = new Superman("토마스", 180, 300);
		System.out.println("hs.name="+hs.name);
		System.out.println("hs.height="+hs.height);
		hs.showInfo(); // human 타입이라도 Override 된 메소드를 우선
		
		// 강제 형변환도 가능, .의 우선순위가 높기 때문에 괄호로 처리하여 먼저 형변환
		((Superman) hs).showInfo("$$슈퍼맨 정보$$");
		// Human 타입의 배열을 생성하여 저장, for루프를 이용하여 출력
		Human[] h_arr = {h1, s1, a1, hs, ha};
		/* 참조변수 instanceof 클래스명
		   참조변수가 클래스의 객체면 true를 반환, 아니면 false를 반환
		*/
                // for문을 돌려야 하는데 에러가 나서 위에 간단히 구현하세요~
		// h_arr[i]가 Superman 객체이면..
			if(h_arr[i] instanceof Superman){
				((Superman)h_arr[i]).showInfo("####슈퍼맨####");
			}else if(h_arr[i] instanceof Aquaman){// Aquaman 객체면..
				((Aquaman)h_arr[i]).showInfo("~~~~~아쿠아맨~~~~~~");
			}else{
				System.out.println("----------");
				h_arr[i].showInfo();
			}
		}
	}
}

나루티밋 스톰 4 Road to BORUTO 트레일러

안녕하세요



이번 시간에는  나루티밋 스톰 4 Road to BORUTO 트레일러를 올려봅니다.

이번 시리즈 같은 경우는..

보루토 세대의 인물들과 나뭇잎 마을이 배경으로 등장하며, 스토리는 보루토가 나온 극장판을 충실히 재현하고 있어서 보루토 세대의 플레이어블 캐릭터들이 등장한다고 하네요

 
 
 
 
 

아비를 패는 우즈마키 보루토 ㅋㅋ


 
 

역시 나루토에 빠질 수 없는 우치하 캐릭터들도 어떻게 나올지 기대되네요.




루피(Luffy) vs 알비다(Alvida)

안녕하세요

이번 시간에는 루피의 첫 일기토~!

]

루피와 알비다의 싸움을 올려봅니다.

원피스의 시작을 알리는 싸움이기도 하면서 동시에 루피의 괴상망칙한 능력이 나오는 순간이죠



루피한테 개털린 알비다는.. 그때부터 루피를 좋아하기 시작하죠 ㅋ

알비다, 핸콕, 나미 등 루피를 좋아하는 여자들이 많네요.

전생에 나라를 세 번 구한듯 합니다 ㅋㅋ