Java2009. 2. 1. 15:05

- ex) 모델하우스
                          Controller
                                |
           view   --  JCheckBox  --  Model 

- Model: JCheckBox에 대한 정보 저장, 제공

- view: model의 정보를 이용해 화면에 보여줌

- Controller: 이벤트 감지 model에 정보를 변경

- 기존의 모델을 쓰지않고 사용자가 모델을 확장할 때 interface를 구현

- 기존의 뷰를 쓰지않고  사용자가 뷰를 확장할 수 있다
  xxx.Render(interface)를 이용해서 확장

- swing은 controller와 view를 합쳐놓았다.
  (실제 하나에 클래스안에 내부클래스로 합쳐져있음 xxx.UI)
  model은 xxxx.Model

Posted by 위푸
Java2009. 2. 1. 15:02

       Object
           |
    Component
           |
     Container
           |
    JComponet
      |           |
  JButton    JLabel

Frame       Dialog
  |               |
JFrame    JDialog

- 스윙은 확장해서 쓸수있는게 목적.(Container에 상속된 이유)

Posted by 위푸
Java2009. 2. 1. 14:57

- 데이터 저장 검색을 위한 매커니즘(데이터 구조), Object[]에 대한 래퍼 클랙스

                                             Collection
                                           <<interface>>
                |                         |
       Set(보따리)           List(CD케이스)         Queue               Map
      <<interface>>        <<interface>>                        특징: 키, 중복안됨.
      특징: 순서가 없다    특징: 순서가 있다.                     |                  |
      중복 허용X             데이터 중복 허용.                  Hashtable     HashMap
             |                       |           |
        HashSet            ArrayList    Vector

- 하나짜리 객체는 Object타입의 객체

- Vector는 동기화 처리가 가능하여 안전성 보장
  단점: 리소스를 많이 잡아먹는다. 많이 쓰면 속도가 떨어짐..
  동기화: 동시간대에 처리될경우 가장 먼저 실행되는 명령어만 처리하고
          나머지는 처리못하게 닫는다.
  Vector는 add대신에 addElement를 쓴다.
  elements를 사용할경우 리턴형이 열거형인 Enumeraion으로 반환
  -> 동기화 처리를 위해 Object[]을 건드리지 않는다.

- 여러클라이언트에 접속이 필요하여 데이터 관리가 중요한경우 vector

- 데이터를 전달하는것이 중요한 경우 List


- 제네릭(콜렉션API)을 이용한 동일한 데이터 타입만 담을경우 사용
  데이터의 안정성과, 형변환이 필요없어진다.
  다형성이 줄어드는 단점.

Posted by 위푸
Java2009. 1. 14. 21:29
- 자바 개발/실행 구조 
1. xxx.java(소스파일) -> 2. 컴파일(javac.exe) -> 3. xxx.class(바이트코드) -> 4. java.exe(인터프리터)

- 프로그램
1. 클라이언트(desktop app): java fletform(j2se)
2. html일정부분에서 돌아가는 프로그램: applet, active x, flash
3. 웹 어플리케이션: servlet, jsp
4. 엔터프라이즈 어플리케이션: ejb

- 식별자
식별자는 숫자나 특수문자가 앞에 와서는 안된다.
식별자는 특수 문자를 사용할 수 없다. ($,_ 는 예외), 대소문자 구분한다.

- 주석
//: 한줄, /* */: 여러줄, /** */: 도큐먼트 주석(javadoc.exe)
Posted by 위푸
Java2009. 1. 12. 22:37
- 이벤트 처리 메커니즘(마우스 이벤트 경우)
1. 사용자 이벤트 소스에 이벤트 발생
2. JVM: new MouseEvent() -> JVM에 의해 해당 Event객체 생성
3. 해당하는 이벤트에 대한 인터페이스를 구현하는 이벤트 처리 클래스(핸들러)를 implements
4. 이벤트 소스에 이벤트 핸들러 등록 ex) addXXXListener(이벤트 핸들러)

- 액션 이벤트에서 여러개의 이벤트를 처리할 경우 어떤것의 이벤트를 처리할지 알려주어야 한다.
  ex) Object eventSource = e.getSource()

- 이벤트는 frame클래스에서 한꺼번에 구현하는 것보다 따로 클래스를 만들어 구현하는 것이 좋다.

- 내부 클래스의 장점: 내부 클래스는 클래스에 있는 인스턴스 변수, 인스턴스 메소드를 모두 사용할 수 있다.
  외부에서 내부클래스를 사용할수 있다.

- 내부클래스를 외부클래스에서 사용하는 예
  ChatWindow.ExitHandler exiter = new ChatWindow().new ExitHandler();

- 내부 클래스 
1. 멤버 내부 클래스: 클래스 안에 내부 클래스가 있는 경우 ex)ExitHandler
2. 이름있는 지역 내부 클래스: 클래스의 메소드 안에 내부 클래스가 있는 경우
   메모리의 효율적인 관리를 위해서 쓴다. 메소드 안에 클래스가 있을 경우 메소드가 종료시
   메모리 영역에서 없어지기 때문이다. 잘안씀. 메소드 안에만 클래스를 쓰기 때문에 다른 클래스에서 쓸수 없다.
3. 이름없는 지역 내부 클래스: 이벤트 종료처리에 쓰임.


Posted by 위푸
Java2009. 1. 12. 22:22
- java.awt 구조
                Component(setSize(),setVisable())
         |                      |                        |
    Button            TextArea          Container(abstracts)
                                                  |             |
                                              Panel     window(abstracts)
                                                  |             |
                                               Frame      Dialog
                                                                |
                                                            File Dialog

- GUI를 선언할때는 default로 선언하면 된다.

- BorderLayout의 특정 영역에 들어가는 것은 size를 주어도 크기를 정하지 못한다.
Posted by 위푸
Java2009. 1. 12. 22:11
- indexOf(): 글자가 몇번째 위치에 있는지 리턴해줌

- charAt(): index위치의 글자를 리턴해줌

- String은 char[]을 쓰기 때문에 char[]의 특징을 따라간다.(상수처리 된다)

- String 클래스는 복사되어서 힙영역에 다시 생성됨 따라서 주소를 생성된 클래스로 바꾸어 주어야 한다.
Posted by 위푸
Java2009. 1. 12. 22:01

- 예외란? 사소한 에러

- 기본적인 예외처리에서 JVM은 예외가 발생할 경우 예외가 발생한 지점에서 예외를 보여주고 강제종료 한다.
  예외가 발생할 경우 JVM은 예외 객체를 생성
  Java는 프로그램 실행시 발생할수 있는 예외를 클래스로 만들어 놓았다. 70~80개

- try{ }는 예외가 발생하는 코드부분
  catch(){ }는 예외가 발생하면 실행되는 부분

- finally{ }예외가 발생하든 안하든 항상 실행되는 부분 ex)리소스 해제 코드
  finally가 필요한 이유 return 키워드가 있어도 finally부분을 실행하기 때문에
  System.exit();는 finally실행안됨. (JVM강제 종료이기 때문에)

- 사용자가 직접 예외를 만들수 있다. Exception 클래스를 상속 받아서

- throws: 예외를 던질수 있다.

- throw: 예외를 던진다.

- 예외 클래스 구조
                                          Object

                                       |
                                         Throwable
                   |                                               |
                 Error                                          Exception
                                                        |            |     |              |     
                                                    IOException     ...    ....     RuntimeException
                                                                   |             |       |
                                                      Array..      Null..   Arith...   ClassCast...

- Compile Checked Exception(일반적 예외):
  예외처리를 꼭 해주어야 한다. Exception 밑 IOException, InterruptedException

- Runtime Exception(실행시 예외): 예외처리할 필요없다.


Posted by 위푸
Java2009. 1. 12. 21:47
- 자동으로 임포트: 컨트롤+쉬프트+o

- 자동으로 주석(한줄): 컨트롤+/

- 자동으로 주석(여러줄): 블럭 설정후 컨트롤+쉬프트+/ 

- 자동 정렬(들여쓰기): 컨트롤+쉬프트+f
Posted by 위푸
Java2009. 1. 12. 21:45
- 추상클래스: 수직적 규약, 추상클래스는 UML상에서 기울어진 에틸렉체로 표시한다.

- 인터페이스: 수평적 규약(호환성을 위해)
  클래스간의 의사 소통을 위해 미리 어떤 기능(메소드를 구현) 하라고 미리 정해두는 것.
  인터페이스를 사용하는 입장(개발자) 관점에서는 메뉴얼이다.

- 벤더: 특정한 표준을 준수하며 만든다.

- 인터페이스 옵션
1. 인터페이스간 다중 상속 가능 ex)interface B extends A,C{ }
   인터페이스 -> 추상클래스 -> 클래스의 구조가 생긴다.
2. 다중 구현 기능 ex)public class MyClass implements A,B{}

- scjp 인터페이스 관련 문제:
// 변수형태로 선언해도 public static final int x = 10;
int x = 10;
// 자동으로 public이 붙는다.
void a();
void b();
Posted by 위푸