학원/JAVA

10/5 15-4 interface(인터페이스 연습)

도원결의 2022. 10. 5. 22:42

추상화처럼 도형의 면적 구하기 인터페이스로 연습 해 보자

클래스와 동일하게 인터페이스 하나당 자바파일(.java) 하나가 원칙임!


1. figure 인터페이스 

           public interface Figure {
                        void area(String figureName);    추상메소드
                             }

2. Drawable 인터페이스

           public interface Drawable {
                       void draw(String figureName);     추상메소드
                              }


1.FigureData 클래스

           public class FigureData {
                          int width,height,radius;
                   [인자 생성자]
           public FigureData(int radius) {
                     this.radius = radius;
                               }
           public FigureData(int width, int height) {
                     this.width = width;
                     this.height = height;
                               }
                   }

2.Triangle 클래스

     public class Triangle extends FigureData implements Figure, Drawable {

            public Triangle(int width, int height) {
                       super(width, height);
                               }
            @Override
            public void draw(String figureName) {
                 System.out.println(figureName+"을 3개의 선으로 그리다");
                                  }
             @Override
             public void area(String figureName) {
                 System.out.println(figureName+"의 면적:"+(int)(width*height*0.5));
                                  }
                         }

3.Rectangle 클래스

    public class Rectangle extends FigureData implements Figure,Drawable {

            public Rectangle(int width, int height) {
                super(width, height);
                        }
            @Override
            public void draw(String figureName) {
                System.out.println(figureName+"을 4개의 선으로 그리다");
                        }
            @Override
            public void area(String figureName) {
                 System.out.println(figureName+"의 면적:"+width*height);
                        }

              }  

4.Circle 클래스

    public class Circle extends FigureData implements Figure, Drawable {

            public Circle(int radius) {
                super(radius);
                        }
            @Override
            public void draw(String figureName) {
                System.out.println(figureName+"을 하나의 선으로 연결해서 그리다");
                        }
            @Override
            public void area(String figureName) {
                System.out.println(figureName+"의 면적:"+(int)(radius*radius*Math.PI));
                        }
           }


메인

public static void main(String[] args) {
        Figure f = new Rectangle(100,100);
         f.area("사각형");
         f.draw("사각형");  
        ((Rectangle)f).draw("사각형");
        ((Drawable)f).draw("사각형");

        Drawable d = new Triangle(100, 100);
        d.draw("삼각형");
        ((Triangle)d).area("삼각형");
        ((Figure)d).area("삼각형");

        d= new Circle(100);
        d.draw("원");
        ((Circle)d).area("원");
        ((Figure)d).area("원");