Languages/Java

[자바 중급 개념] 03. 인터페이스와 추상 클래스

Dev다D 2021. 3. 9. 17:12
반응형

그림판 어플

 

Circle, Square, Rectangle 등 몇 가지 도형 클래스를 만들었고, 각 클래스는 추상 클래스 AbstractShape의 자식입니다.

이 중 Square와 Rectangle은 콘솔에 출력도 가능하게 만들고 싶습니다. 예를 들어서 가로 길이가 4이고 세로 길이가 3인 Rectangle 인스턴스는 아래와 같은 모양을 출력합니다.

 

 

출력 기능 계약서인 Printable 인터페이스를 작성합시다. 쉽게 말해서, implements Printable을 하는 클래스는 콘솔에 모양을 그려주는 print 메소드를 꼭 구현해야 합니다.

 


package Ex0307;

public interface Printable {

    void print();
}
package Ex0307;

public class Rectangle extends AbstractShape implements Printable {
    // 길이
    double side1; // 세로
    double side2; // 가로

    // 생성자
    public Rectangle(double side1, double side2) {
        super(0, 0);
        this.side1 = side1;
        this.side2 = side2;
    }

    // 넓이
    public double getArea() {
        return side1 * side2;
    }

    // 둘레
    public double getPerimeter() {
        return 2 * (side1 + side2);
    }

    @Override
    public void print() {
        for (int i = 0; i < side1; i++) {
            String line ="";
            for (int j = 0; j < side2; j++) {
                line += "*";
            }
            System.out.println(line);
        }
    }
}
package Ex0307;

public class Square extends AbstractShape implements Printable{
    // 길이
    double side;

    // 생성자
    public Square(double side) {
        super(0, 0);
        this.side = side;
    }

    // 넓이
    public double getArea() {
        return side * side;
    }

    // 둘레
    public double getPerimeter() {
        return 4 * side;
    }

    @Override
    public void print() {
        for (int i = 0; i < side; i++) {
            String line ="";
            for (int j = 0; j < side; j++) {
                line += "*";
            }
            System.out.println(line);
        }
    }
}

본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형