** 설계 측면 **
1.상속관계(is ~ a : 상속) 은 ~ 이다
2.포함관계 (has ~ a : 포함) 은 ~ 을 가지고있다 (member field)
ex) 원 도형(점,선,면)
1.원은 도형이다 (상속관계) 원 extends 도형
2.원은 도형을 가지고있다(케바케) - 포함관계
원 점
1.원은 점이다 (X)
2.원은 점을 가지고있다(O) - 포함관계
ex) 원,삼각형,사각형 만드는 설계도 작성
도형 : 추상화,일반화 >> 공통분모 - 그리다,색상
원 : 구체화 >> 점(포함관계) >> 반지름(원만이 가지는 특징) - 특수성
점 : 좌표값(x,y) >> 원,삼각형,사각형은 점을 가지고 있다.
class Shape -> 일반화,추상,공통 >> 상속
class Point -> 점 >> 포함
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//추상화 , 일반화 ,공통 class Shape{ String color = "gold"; // 공통속성 void draw() { //공통 기능 System.out.println("그리다"); } }
상속받아서 사용할때랑 멤버필드로 포함했을때의 차이점 ??
//포함관계 class Point extends Shape{ int x; int y; Point(){ //this.x = 1; //this.y = 1; this(10,15); --> 중복되는 것 배제 효율적 } Point(int x,int y){ this.x = x; this.y = y; } }
class Circle extends Shape{ //상속관계 Point point; // 포함관계 (member field) int r; // 반지름 (특수성)
Circle(){ //this.r = 10; //this.point = new Point(10,15); this(10,new Point(10,15)); --> 효율적인 코드 }
Circle(int r,Point point){ //반지름 , 점의값을 임의로 지정가능 this.r = r; this.point = point; // 주소값 할당 }
} //Circle circle = new Circle() //Circle circle = new Circle(15,new Point(10,15)) --> Point 클래스 타입으로 객체를 생성한다음 생성자로 초기화를 해줌
public static void main(String[] args) { Circle c = new Circle(); System.out.println("반지름:"+c.r); System.out.println("부모:"+c.color); System.out.println("X좌표:"+c.point.x); System.out.println("Y좌표:"+c.point.y); c.draw();
Circle c1 = new Circle(20,new Point(2,5)); System.out.println("반지름:"+c1.r); System.out.println("부모:"+c1.color); System.out.println("X좌표:"+c1.point.x); System.out.println("Y좌표:"+c1.point.y); c1.draw(); } |
cs |
'프로그래밍 언어' 카테고리의 다른 글
자바입출력 bufferedReader/Writer (0) | 2020.09.17 |
---|---|
IO 입출력 (0) | 2020.03.21 |
서버와 클라이언트 채팅 (0) | 2019.09.29 |
소켓 네트워크 프로그래밍 (0) | 2019.09.07 |
서버와 클라이언트 (0) | 2019.09.07 |