0. 객체 지향 프로그램 설계하기
# 디자인 패턴
한 개 혹은 그 이상의 클래스로 이루어진 프로그램을 만들 때, 어떤 형태로 만들지 설계하는 단계에서 미리 정해진 패턴을 가져와서 쓸 때가 있다.
이를 디자인 패턴이라 하며, 구조적으로 버그에 견고한 형태를 위해 혹은 재사용 등의 목적이 있을 때 적용한다.
1. 추상화 (Abstraction)
1) 객체를 설계하는 기초 단계
만들고자 하는 객체의 특성이나 기능이 무엇인지 먼저 정리하는 것
- 개발자가 만들 객체들에 필요한 기능은 어떤 것이 있는지 파악하고 그 기능을 분류해야 된다.
- 정의된 객체의 기능은 클래스의 메소드로 표현된다.
2. 상속 (Inheritance)
1) 부모-자식 관계를 맺는 상속
두 클래스 중 한 클래스가 갖고 있는 속성과 메소드들을 다른 클래스에게 물려주는 것을 의미
- 부모 클래스(parent class), 상위 클래스(super class): 물려 주는 역할을 하는 클래스
- 자식 클래스(child class), 하위 클래스(sub class): 상속받는 역할을 하는 클래스
2) is-a, has-a 법칙
- 논리적으로 부모 클래스와 자식 클래스를 구분할 수 있다.
- is-a, has-a 관계가 성립되는 경우에만 상속 기법을 사용할 수 있다.
- is-a, has-a 관계를 보여주는 상속 관계
3. 캡슐화 (Encapsulation)
1) 관련된 것들을 따로 모은 클래스
- 서로 관련 있는 기능이나 데이터를 한 곳으로 모아서 효율적으로 관리 및 사용할 수 있도록 하는 것
- 꼭 필요한 데이터나 기능만 외부에 노출시키는 것
* 이를 정보 은닉(hiding information)이라 한다.
- 내부의 중요한 데이터가 외부에 노출되지 않기 때문에 데이터의 무결성(정밀성, 정확성)을 유지할 수 있다.
4. 다형성 (Polymorphism)
1) 하나의 기능을 수행하지만 형태를 다양하게 가질 수 있는 기법
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day02 | 동적 로딩, 정적 로딩, static 키워드 (0) | 2018.01.11 |
---|---|
JAVA2_day02 | 참조변수 this, super (0) | 2018.01.11 |
JAVA2_day01 | 추가공부 (상속) (0) | 2018.01.10 |
JAVA2_day01 | 상속 (Inheritance) (0) | 2018.01.10 |
JAVA2_day01 | 접근 지정자 (Access modifier) (0) | 2018.01.10 |