개발일지/수업내용

210804(수)_DAY 11 (Gui와 로직 연결 / throw와 throws / 동적 바인딩 )

jungwonyu 2021. 8. 5. 01:14
728x90

[오늘 목표]

1. Gui와 로직 연결을 할 수 있다.

2. 예외처리를 선언하고 구현할 수 있다.


[Gui와 로직 연결]

 - 인터페이스, 추상 클래스, 상속을 구현한 구조에서 선조의 주소 번지를 이용하여 후손의 기능을 제어하는 것을 구현!

eg/ 

public List getAllMember() {
                   return ....;
}
public void setMember(Member m) { //Member를 포함한 후손들은 누구나 대입할 수 있다.
}

만들어둔 Frame에 로직을 연결시켰다

 1) Address

 - 이름 / 주소 / 전화번호를 입력 후 [Ok]를 클릭하면 값을 return 한다.

 - [Clear] 버튼을 클릭하면 값이 지워진다. (이건 Workshop 시간에 한 것! 그래서 그런지 Clear 버튼도 크기가 좀... 그렇다.)

Workshop 시간에 만든 Menu와 MenuItem

 

 2) Score

 - 이름 / 국어 점수 / 영어 점수 / 수학 점수를 입력 후 [OK]를 클릭하면 값을 return 한다.

 > 각각의 점수가 나오고, total 점수와 average가 나오도록 했다. average를 통해 grade가 정해진다.

 

 - 위의 Address와 마찬가지로 [Clear] 버튼을 클릭하면 값이 지워진다.

 

각각의 이름

구현한 Gui를 통해 내용을 정리해봤다.

Menu 관련해서 만드는 순서는 아래와 같다!

1️⃣MenuItem 2️⃣Menu 3️⃣MenuBar

 

[Exception(예외) 처리]

 

* try ~catch ~Finally 를 써줘야 함을 잊지 않기!

catch가 리턴한 객체를 대입받아 처리 한다!

[* throw와 throws 차이점 / (혼자 공부)]

1. throw

- exception(예외)을 throw 할 때 사용하는 키워드 
- 강제로 exception이 발생


2. throws
 - 메소드나 생성자를 수행할 때 발생하는 exception을 사용하는 키워드 
 - exception을 본인이 처리하지 않고 자신을 호출하는 메소드가 처리하도록 함
  > 메소드 정의 시 throws를 추가하면 메소드를 호출하는 곳에서 exception 처리해야 함

 

 [바인딩]

  바인딩은 함수를 호출할 때 위치한 곳에 있는 함수를 실행하는 의미이고, 동적 바인딩과 정적 바인딩이 있다.

 동적 바인딩을 사용하는 것이 효율적이다! 

 1️⃣ 정적 바인딩(= Static binding): 컴파일 시에 실행되는 객체 연동

 2️⃣ 동적 바인딩(= dynamic binding): 런타임 시에 실행되는 객체 연동

동적 바인딩 예시1

짜장, 짬뽕, 카레, 볶음밥의 재료와 요리 방법은 공통이다.

무엇을 넣고 볶느냐에 따라 차이점이 생긴다.

 

정적 바인딩으로 이것을 구현할 경우엔 공통된 부분조차도 개별적으로 써줘야 한다.

장점은 쉽게 알아볼 수 있다는 것이고 단점은 너무 많은 메뉴가 있을 때는 효율적이지 못하다는 것이다. 런타임 속도가 느리다!

 

동적 바인딩으로 이것을 구현할 경우엔 공통된 부분은 한 번만 작성하고 각각의 메뉴에서 불러오면 된다.

장점은 효율적이고 런타임 시에 실행하면 되기 때문에 런타임 속도가 빠르다!

동적 바인딩 예시2

abstract도 동적 바인딩이다.

확실한 것만 작성하고 불확실한 것은 선언만 해둔다.