요약 - 도형 계산기
Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 33번째.
챌린지
쉬움이 장에서 배운 모든 다형성 개념을 하나로 모으는 도형 계산기를 만들어 보겠습니다. 추상 클래스인 Shape와 이를 상속받는 구체적인 서브클래스들을 생성한 다음, 다형성을 사용하여 면적을 계산하고 일관되게 표시할 것입니다.
코드는 다음 네 개의 파일로 구성됩니다:
Shape.java: 모든 도형의 기초가 되는 추상 클래스를 생성합니다. 모든 도형은name필드(String)를 가집니다. 이를 초기화하는 생성자, 게터 메서드인getName(), 그리고 double을 반환하는 추상 메서드getArea()를 포함하세요. 또한[name]: [area]를 반환하는describe()메서드를 추가하세요 (여기서 area는String.format("%.2f", getArea())를 사용하여 소수점 둘째 자리까지 포맷팅되어야 합니다).Circle.java: Shape를 상속받는 구체 클래스를 생성합니다. 원은radius필드(double)를 가집니다.super를 사용하여 "Circle"을 이름으로 전달하세요.Math.PI * radius * radius를 사용하여 면적을 반환하도록getArea()를 구현하세요.Rectangle.java: Shape를 상속받는 또 다른 구체 클래스를 생성합니다. 사각형은width와height필드(둘 다 double)를 가집니다. 부모 생성자에 "Rectangle"을 이름으로 전달하세요. 너비와 높이를 곱한 값을 반환하도록getArea()를 구현하세요.Main.java: 다형성이 실제로 작동하는 모습을 보여주는 도형 계산기를 빌드합니다. 원의 반지름, 사각형의 너비와 높이 등 세 개의 입력을 받게 됩니다.Circle과 Rectangle을 생성한 다음, 이들을
Shape참조 배열에 저장하세요. 배열을 루프하며 각 도형에 대해describe()메서드를 사용하여 설명을 출력하세요.루프가 끝난 후, 모든 도형의 총 면적을
Total area: [sum]형식으로 계산하여 출력하세요 (이 또한 소수점 둘째 자리까지 포맷팅되어야 합니다). 별도의 루프나 누산기를 사용하여 각 도형 참조에서getArea()를 호출해 면적의 합계를 구하세요.
세 개의 입력을 받습니다: 원의 반지름(double), 사각형의 너비(double), 사각형의 높이(double).
출력은 세 줄로 표시되어야 합니다 - 각 도형에 대한 설명 한 줄씩과 그 뒤에 이어지는 총 면적입니다. 각 도형이 자신만의 방식으로 면적을 계산하는 동안, 추상 타입인 Shape를 통해 서로 다른 도형들을 어떻게 일관되게 다룰 수 있는지 확인해 보세요!
직접 해보기
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 입력 읽기
double radius = scanner.nextDouble();
double width = scanner.nextDouble();
double height = scanner.nextDouble();
// TODO: radius를 사용하여 Circle 객체 생성
// TODO: width와 height를 사용하여 Rectangle 객체 생성
// TODO: Shape 참조 배열을 생성하고 두 도형을 모두 저장
// TODO: 배열을 순회하며 describe()를 사용하여 각 도형의 설명을 출력
// TODO: 모든 도형의 전체 면적 계산
// 루프나 누산기를 사용하여 각 도형의 getArea()를 호출해 면적 합산
// TODO: "Total area: [sum]" 형식으로 전체 면적 출력
// 포맷팅을 위해 String.format("%.2f", totalArea) 사용
}
}
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조