Computers/Language java

Interface / polymorphism / Event Handling / Inheritance / GUI

emzei 2011. 4. 10. 20:01
전용뷰어 보기

ch11. Interface and Polymorphism


 코드의 재사용, ★ polymorphism으로 구현

- inner class는 implements로 event-handler interfaces하는 classes에 유용


  • To learn about interfaces (인터페이스에 대해 배우기)
    • Interface : A model for a class that specifies the fields and methods that must be present in a class that implements the interface
    • 실행되어야 하는 중요한 코드를 more general, more reusable 하게 한다
    • Interface의 특징 ( 클래스와의 차이점 )
      • Abstract (추상적이다) : 이름, 매개변수, 리턴 값은 있다. 실행문은 없다. ( No implementation! )
      • Public : interface type안의 ALL method는 자동적으로 public이다.
      • No instance field : Interface 안에서는 instance가 허용되지 않는다. 
        • ※ Interface는 constant(상수)로 명시된것만 허용한다. Interface 필드 내에는 자동적으로 public static final이 된다.
        • ※ 객체를 선언한다하더라도public static final 형태로 되기 때문에 다른 객체가 final로 선언된 객체를 reference 할 수 없다. 다만 final로 선언된 객체안의 내용은 변경할 수 있다.
    • implements : interface 끌어올 때 쓰는 keyword. 
    • A class can implements more than one interface type. 하나 이상의 interface 끌어오는 것 가능! ( 물론, class는 반드시 끌어다온 interface안에 있는 method를 다 구현해둬야함 *_*)

  • To be able to convert between class and interface references
    • You can convert from a class type to an interface type, provided the class implement
    • Cannot convert between unrelated types
    • 유의사항*_*
      • Interface 타입의 변수는 선언가능하다 (ex. Measurable x; )
      • 그러나, interface로 construct할 수 없다. (ex. Measurable x = new Measurable(); // ERROR)
      • Interface는 Class가 아니다. 따라서 Interface 타입의 객체는 존재하지 않는다. 만약 어떤 Interface 변수가 어떤 객체를 가리킨다면, 그 객체는 분명히 어떤 Class에 속한 것이고 , 그  Class는 interface를 implements 한 것이다. (ex. Measurable x = new BankAccount(); // OK )

  • To understand the concept of polymorphism
    • "Concept" Polymorphism : principle that behavior can vary depending on the actual type of an object.
    • http://terms.co.kr/polymorphism.htm 참고
    • Example : Overloaded -> when a single program has several methods with the same name but different parameter types.
    • 또한, interface의 경우와 inheritance 모두 polymorphism 개념이 적용된 것이라 볼 수 있다.

  • To appreciate how interfaces can be used to decouple classes
  • To learn how to implement helper classes as inner class
  • To understand how inner classes access variables from the surrounding scope
    • Inner class : defined inside another class
    • used for tactical classes that should not be visible elsewhere in a program.
    • not a publicly accessible feature
    • The compiler turns an inner class into a regular class file
    • Methods of an inner class can access variables from the surrounding scope
    • Local variables that are accessed by an inner-class method must be declared as final ( inner-class에서 접근하는 지역변수들은 반드시 final 이어야 한다!)
  • To implement event listeners for timer
    • 단위 : 1/1000 second (millisecond)
  • 참고 : Mock Object
    • 완전한 프로그램이기 전에 class를 test하고 싶은 경우에 사용
    • Interface를 이용한 기법



ch12. Event Handling
To understand the Java event model




ch13. Inheritance
- Code Reuse!
  • To learn about inheritance
    • Inheritance : a mechanism for enhancing existing classes by adding methods and fields
    • more general class : called "super class"
    • super class로부터 상속받는 specialized class : called "sub class"
    • Every class extends the Object class (either directly or indirectly)
    • Super class has state and behavior, and sub classes inherit them.
    • cf. Interface is Not class. Interface has NO state and NO behavior
  • To understand how to inherit and override superclass methods
    • Use the super keyword to call a method of the superclass
  • To be able to invoke superclass constructor
    • super(parameter); - super class's constructor
      • must be the first statement of the subclass constructor
    • subclass reference를 superclass reference로 convert -> OK
    • 그러나, superclass reference를 subclass reference로 바꾸는 것은 위험함
    • instanceof 연산자 : 어떤 객체가 어느 타입에 속해있는지 테스트 하는 연산자
      • object instanceof TypeName
      • ex.

if(anObject instanceof BankAccount)

{

BankAccount anAccount = (BankAccount) anObject;

,,,

}

      • anObject가 null을 가리키면 false, anObject가 BankAccount로 cast 가능하다면 true


  • To learn about protected and package access control
    • Protected - can be accessed by all subclasses and all classes in the same package
    • hard to modify , cannot be changed
  • To understand the common superclass Object and how to override its toString and equals methods
    • String toString()
    • boolean equals(Object otherObject)
    • Object clone()



ch14. Graphic User Interface
  • To use inheritance to customize frames
    • Design a subclass of JFrame
  • To understand how user-interface components are added to a container
  • To understand the use of layout managers to arrange user-interface components in a container
    • Layout-management ~ JPanel
      • flow layout(default)
      • border layout - center/north/south/east/west 로 구성. add할때 위치지정! 
        • ex. 
        • panel.setLayout(new BorderLayout());
        • panel.add(component, BorderLayout.NORTH);
      • grid layout - 표모양
      • grid-bag layout
        • 각 열이 다른 크기를 가질 수 있음
    •  
  • To become familiar with common user-interface components, such as buttons, combo boxes, text areas, and menus
    • Choices
      • Radio buttons
        • only one button can be selected at a time (단일 항목만 선택 가능)
        • 버튼이 클릭되면 이전에 클릭되어있던 버튼은 자동으로 turn off
        • ButtonGroup으로 묶어야 단일 항목 선택 가능!
        • isSelected : 버튼이 선택되었는지 여부
      • Check boxes
        • Two states : 체크 / 체크안됨
        • don't ButtonGroup ! 버튼그룹은 단일항목만 선택하게 함. 체크박스는 중복선택 가능해야함
      • Combo boxes
        • setEditable 이용
    • Menus
      • frame > menu bar > menus
  • To build programs that handle events from user-interface components
  • To learn how to browse the Java documentation