일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- rnn
- JDBC
- 자바스크립트
- 정보처리기사실기
- 중학1-1
- 파이썬
- JSP
- 디버깅
- 혼공머신
- CSS
- JSP/Servlet
- 데이터베이스
- 딥러닝
- 컴퓨터구조
- 자바 실습
- 개발일기
- 상속
- c언어
- 데이터분석
- ChatGPT
- 머신러닝
- 순환신경망
- 자바스크립트심화
- html/css
- 자바
- 연습문제
- 정보처리기사필기
- 중학수학
- SQL
- 컴퓨터비전
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
상속 25 - 연습문제 실습편 문제 풀기 3 : 문제 5~8번 본문
이번에 풀 문제는 4문제가 함께 묶여있는 문제들이다. 한 점의 좌표를 나타내는 문제인데 이제 풀어보기로 하자. 가능하면 빠른 시간 내에 풀어볼 것이다.
연습문제 실습편 문제 풀기 세 번째
문제 5번
문제 코드
문제 풀기
ColorPoint 클래스
Main 클래스
코드 설명
1. 클래스 구조
- Point 클래스
- 2차원 좌표 (x, y)를 표현하는 클래스
- x, y는 private 멤버로 직접 접근은 불가하고, getX(), getY() 메서드를 통해 값을 가져온다.
- move() 메서드로 좌표를 변경할 수 있다.
- ColorPoint 클래스
- Point를 상속받아 좌표 외에 색상(color) 정보를 추가로 관리하는 클래스
- 주요 메서드
- setColor() : 색상을 설정
- setXY() : 좌표를 변경한다. 부모 클래스의 move() 메서드를 호출한다.
- toString() : 색상과 좌표 정보를 문자열로 반환한다.
2. 주요 흐름
- 객체 생성
- ColorPoint cp = new ColorPoint(5, 5, "YELLOW");
- 좌표 (5, 5)와 색상 "YELLOW"를 가진 객체를 생성한다.
- ColorPoint cp = new ColorPoint(5, 5, "YELLOW");
- 메서드 호출
- cp.setXY(10, 20); : 좌표를 (10, 20)으로 변경한다.
- cp.setColor("RED"); : 색상을 "RED"로 변경한다.
- 정보 출력
- toString() 메서드로 객체 정보를 가져와 출력한다.
- 출력값: "RED색의 (10,20)의 점이다."
문제 6번
문제 코드
현재는 코드에 오류가 있는데 이제 PointColor 클래스를 수정해 줄 것이다.
문제 풀기
ColorPoint 클래스
Main 클래스
코드 설명
- ColorPoint 클래스
- Point를 상속받아 좌표 외에 색상 정보를 관리
- 생성자를 통해 기본값 또는 초기값 설정
- 부모 클래스의 메서드(move)를 활용하여 좌표를 변경
- main 메서드
- 기본 생성자로 초기값 (0, 0)과 "BLACK"을 설정
- 매개변수 생성자로 초기값 (10, 10)과 "BLACK"을 설정한 후, 메서드를 통해 값을 변경
문제 7번
문제 코드
아직은 Point3D 클래스를 만들지 않아서 빨간줄이 뜨고 있다.
문제 풀기
Point3D 클래스
Main 클래스
코드 설명
1. 클래스 개요
- Point 클래스는 2차원 평면 상의 점을 표현하며 x, y 좌표를 관리한다.
- Point3D 클래스는 Point 클래스를 상속받아 3차원 공간의 점을 표현하며 추가로 z 좌표를 관리한다.
2. 코드 흐름 요약
- 객체 생성
- Point3D 객체를 (1, 2, 3)으로 초기화한다.
- moveUp()
- z 값을 증가시켜 (1, 2, 4)로 만든다.
- move(int x, int y)
- 부모 클래스의 메서드를 호출하여 x와 y 값을 (10, 10)으로 변경한다.
- move(int x, int y, int z)
- x, y, z 값을 (100, 200, 300)으로 변경한다.
이 문제는 6번에서 더 나아가 2차원의 점이 3차원의 점으로 확장한 것을 보게 된다.
문제 8번
문제 코드
메인 클래스를 이것으로 변경했다. 이제 PositivePoint 클래스를 만들 것이다.
문제 풀기
PositivePoint 클래스
Main 클래스
코드 설명
주어진 요구사항
- Point 클래스를 상속받아 양수 좌표만 허용하는 PositivePoint 클래스를 구현
- PositivePoint 클래스
- (0,0) 기본 좌표로 초기화하는 기본 생성자
- x, y 좌표 값을 지정하는 생성자 (음수 좌표가 들어오면 (0,0)으로 초기화)
- 양수 좌표로만 이동 가능하도록 move() 메서드를 재정의
- 부모 클래스의 toString()을 활용하여 위치를 출력
코드의 동작 설명
- 객체 생성
- PositivePoint는 Point를 상속받아 확장된 클래스
- 기본 생성자는 (0,0)으로 초기화
- 좌표를 입력받는 생성자는 음수 값이 들어오면 (0,0)으로 강제 설정
- move() 메서드
- PositivePoint 클래스에서 move() 메서드를 재정의하여, 입력받은 좌표가 양수일 때만 이동 가능하도록 제한
- toString() 메서드
- 부모 클래스 Point의 toString()을 그대로 사용하여 현재 좌표를 출력
하지만 출력을 해보니 이런 결과가 나왔다. 그 이유는 toString() 메서드가 적절히 오버라이딩되지 않았기 때문이다.
Object 클래스의 기본 toString() 구현은 객체의 클래스 이름과 객체의 해시코드(hashcode)를 반환한다.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
따라서, PositivePoint 클래스에서 toString() 메서드를 오버라이딩하지 않았다면, 기본적으로 위와 같은 형식의 문자열이 출력된다.
코드 수정하기
아래쪽에 toString() 메서드를 오버라이딩했다.
이제 출력이 잘 되었다.
학습을 마치고
이번 문제도 쉽지 않았지만 풀이가 이어지는 문제라서 여기까지는 그래도 풀만한 문제였다. 모두 풀이를 참고하며 코드를 작성하기는 했지만 말이다.
남은 문제는 6문제이다. 절반 이상 왔으니 새벽 시간에 충분히 이 문제들을 풀 수 있을 것 같다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
상속 27 - 연습문제 실습편 문제 풀기 5 : 문제 11~12번 (0) | 2024.12.03 |
---|---|
상속 26 - 연습문제 실습편 문제 풀기 4 : 문제 9~10번 (0) | 2024.12.03 |
상속 24 - 연습문제 실습편 문제 풀기 2 : 문제 3~4번 (0) | 2024.12.03 |
상속 23 - 연습문제 실습편 문제 풀기 1 : 문제 1~2번 (0) | 2024.12.02 |
상속 22 - 연습문제 이론편 문제 풀기 4 : 문제 12~16번 (0) | 2024.12.02 |