관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

상속 28 - 연습문제 실습편 문제 풀기 6 : 문제 13~14번 본문

프로그래밍 언어/자바

상속 28 - 연습문제 실습편 문제 풀기 6 : 문제 13~14번

huenuri 2024. 12. 3. 07:11

이제 연습문제 실습편의 마지막 문제만을 남겨두고 있다. 정말 여기까지 오느라 수고가 많았다. 이 공부를 마치면 엘리스 자바 2 뒷부분을 학습할 생각이다. 이 공부도 8월 중순에 공부하다 말았다.

싱글톤 패턴 등이 나오는데 지금 공부하기에는 어려운 내용 같았다. 이제 충분히 할 수 있는 실력이 되니 학습을 마무리해볼 것이다.

 

마지막 남은 문제도 힘내서 풀어보겠다.


 

 

 

 

 

연습문제 실습편 문제 풀기 여섯 번째

 

문제 13번

 

 


 

 

 

 

문제 코드

 

 

Shape 인터페이스


 

 

 

Main 클래스


 

 

 

 

문제 풀기

 

Circle 클래스(Shape 인터페이스 구현)


 

 

 

 

Main 클래스


 

 

코드 요약

  1. Shape 인터페이스
    • PI: 상수 값(3.14) 정의
    • draw: 추상 메서드로, 각 도형이 자신의 그리기 동작을 구현하도록 강제
    • getArea: 추상 메서드로, 각 도형이 면적 계산 로직을 구현하도록 강제
    • redraw: 디폴트 메서드로, 다시 그리기와 draw 호출 결합
  2. Circle 클래스
    • Shape 인터페이스를 구현
    • radius: 반지름을 저장
    • draw: 원의 반지름을 출력
    • getArea: 원의 면적을 계산
  3. Main 클래스
    • Shape 타입의 donut 객체에 Circle 인스턴스 할당
    • redraw 호출로 그리기 수행
    • getArea 호출로 면적 출력

 

 

이렇게 출력이 잘 되었다.


 

 

 

 

문제 14번

 

 

이 문제는 인터페이스를 활용하여 다양한 도형(Shape)을 표현하는 클래스를 구현하고, 이를 배열로 관리하며 동적 바인딩을 통해 공통된 인터페이스 메서드를 호출하는 프로그램을 작성하는 문제이다.


 

 

 

문제 코드

 

메인 클래스만 문제에서 주어졌는데 아직 오류가 뜨는 게 많다. 이제 코드를 작성해 볼 것이다.


 

 

 

 

문제 풀기

 

Oval 클래스


 

 

Rect 클래스


 

 

 

 

Main 클래스

 

코드에 오류가 많아서 한참 헤맷는데 드디어 해결 방법을 찾았다.


 

 

 

코드 설명

  1. 인터페이스(Shape) 구현
    • draw(): 도형의 정보를 출력
    • getArea(): 도형의 면적을 계산
  2. Circle, Oval, Rect 클래스
    • Shape 인터페이스를 구현
    • 생성자를 통해 필요한 데이터를 초기화
    • draw()와 getArea()를 구체적으로 구현
  3. Main 클래스
    • Shape 배열을 생성하고 Circle, Oval, Rect 객체를 각각 초기화
    • redraw()를 호출해 도형을 다시 그리고, 면적을 출력

 

 

드디어 잘 출력되었다.


 

 

 

 

학습을 마치고

드디어 5장 상속 단원 학습을 모두 마쳤다. 책에 있는 30문제나 되는 연습문제도 모두 풀고 확인해 보았다. 스스로 풀기보다 자료를 찾아가며 풀었지만 그렇게라도 문제를 익히는 것이 도움이 된다.

오늘은 JDBC 공부를 시작해도 될 것 같다. 오늘도 새벽 1시 반에 일어나 5시간 반이 넘도록 공부에 열중했다.

 

아침 루틴을 수행할지 아니면 공부를 더할지 고민이 된다.