자바 12일차

12. GUI 이벤트처리및 객체형변환-> 창(2)+생성자배치(1)+배치관리자(4)+->이벤트처리(4)  =>7장(중첩클래스)->6장.다형성(객체형변환)



과제풀이)->강사님
Shape(추상클래스)->사각형의 면적, Drawable(인터페이스)->원의 면적
ShapeTest.java로 저장할것
도형(원, 삼각형, 직사각형….)
실행결과)
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
1
원의 반지름? 3 -> 3*3*3.14
최종 원의 면적은 ?
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
가로? 5
세로? 4
최종 사각형의 면적은? 20
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
3
정상적으로 프로그램이 종료됩니다.

Ex) Shape.java(추상클래스)

Shape

Ex) Drawable(원의 면적)

Drawable

Ex) ShapeTest.java(추상, 인터페이스를 상속받아서 작성)

ShapeTest

전체 프로그램
추상
인터페이스->간결한 기능
Ex) 늑대인간 => 인간+늑대의 기능+뱀파이어
class human + interfasce 늑대
 


● 이벤트처리(Event)

=> 운영체제가 인식가능한 사용자들의 모든 행동양식(키보드작업, 마우스작업, 터치이벤트)

이벤트소스                       대상자 이벤트 발생종류             이벤트핸들러
이벤트이름+Listener
대상자                                                                                    ActionListener
버튼click                        ActionEvent->메서지큐
메뉴클릭                                                                                    처리메서드
입력->엔터                          actionPerformed

객체명.메서드명(~)
콜백메서드 -> 운영체제가 알아서 호출해주는 메서드(생성자랑 비슷한 의미)
Ex) WindowTest.java(BorderLayout)

WindowTest

Ex) ButtonTest.java((1)이벤트발생 -> 자기클래스(self)->일반)
(GridLayout, ActionListener, actionPerformed,getActionCommand())

ButtonTest ButtonTest_1

Ex) ButtonTest2.java((2)이벤트발생-> 다른 클래스가 처리(외부클래스))

※ 이벤트 감지

 1. ~XXXXXListener(인터페이스) ActionListener
2. ~XXXXXAdapter(클래스) ActionAdapter
  이벤트 처리방법
ButtonTest2  ButtonTest2_1

(3) 이벤트발생-> 다른 클래스가 처리(내부클래스의 이름이 있는 경우)

Ex) ButtonTest3.java
ButtonTest3.class
ButtonTest3$MyOuter.class
ButtonTest3$내부클래스명.class
ButtonTest3

(4) 이벤트발생-> 다른 클래스가 처리(내부클래스의 이름이 없는 경우)

Ex) ButtonTest4.java(Annonymous)
ButtonTest4.class
ButtonTest4$1.class=> 이름이 없는 경우(번호)

ButtonTest4ButtonTest4_1
 


● 내부클래스(7장)와 객체형변환(6장)



1. 접근지정자를 신경쓰지 않고 편하게 외부의, 내부의 클래스 객체를 생성
-> 메서드호출
2. 이벤트처리를 하기위해서 내부클래스를 사용
중첩 클래스(Nested class)

♦ Inner class

Ex) Outer.java(Member Inner, Local Inner , static Inner)

Outer
 


♦ 자바의 형변환

 1.2장(기본형형변환)——>자동형변환
byte->short->int->long->float->double
<———————–(int)5.6
객체형변환-> 상속
정의)
자식클래스의 객체가 부모클래스형으로 형변환될때는 자동형변환
<–>부모클래스의 객체는 반드시 자식클래스의 객체로 형변환되기위해서는
(자식클래스형)을 써줘야 된다.
도형(Shape)-> 원,점,삼각형,직사각형
(1,2)  물
| (Point)
– Point(점)(1,2) +(3,4)-> 종이컵에 든 물
|
Line(선)(1,2,3,4)+(5,6)-> 1.5.리터물
|
Square(다각형)(1,2,3,4,5,6)+(7,8)->생수통

Ex) ShapeTest2.java

ShapeTest2ShapeTest2_1


♦ 다형성

-> 같은메서드를 쓰지만 호출되는것은 다양하게 표현

instanceof => 객체가 특정 부모로부터 만들어졌는지 확인시켜주는 연산자
형식) 객체명 instanceof 부모클래스명=>true(반환값)
Ex) tico instanceof Car => Car tico = new Car();
=====================================
Employee(부모)-> 직원
|
Manager(팀장), Enginner(전문기술자)
Employee(부) Manager(자)
//자동형변환
Employee e = new Employee();
Employee e2 = new Manager();
Employee e3 = new Engineer();
//
Manager m = (Manager)new Employee();
팀장                 일반직원
Engineer e = (Engineer)new Employee();
팀장                 일반직원

Ex)Ex06_8.java

Ex06_8
 


 =>다음시간 -> 예외처리, 입출력