- 객체란?
- 객체는 실제로 존재하는 구체적인 대상이다.
: 눈으로 보고 손으로 만질 수 있는 모든 대상을 객체라고 말할 수 있다.
- 객체는 다른 객체와 구분되며 고유하다.
- 객체는 상태를 가지며 행위를 제공할 수 있다.
: 상태는 객체가 가질 수 있는 속성을 나타낸다.
속성(Property) 표현
+ : Public
- : Private
# : Protected
~ : Package
underline : static data member
- 객체는 문제 영역에서 의미있는 존재이다.
: 세상에서 인식 가능한 모든 대상이 객체가 될 수 있다. - 클래스란?
- 클래스는 동일한 유형의 여러 객체들을 주상화 시킨 것이다.
: 유사한 객체들을 만들 수 있는 것을 클래스라고 할 수 있다.
- 동일한 유형의 객체란 객체의 상태와 행위가 유사함을 뜻한다.
: 같은 속성과 함수를 가지고 있는 클래스로 만들어진 것? - Instance
- 추상적 개념인 클래스로부터 객체를 만드는 것을 인스턴스화라고 하고 그렇게 만들어진 객체를 인스턴스라고 부른다.
- 객체는 클래스의 인스턴스다. - UML 구성 요소
- Element
- Relation
- Diagram (View)
Element, Relation 두개를 합친 개념을 Model이라고 한다. - 객체지향 설계원칙(SOLID)
- SRP: Single Responsibility Principle(단일 책임의 원칙)
한가지 책임만을 가진다.
수정할 이유가 존재하면 이것 또한 한가지 이유여야만 한다.
- OCP: Open Closed Principle (개방 폐쇄의 원칙)
확장이 가능하고 변경은 불가능해야 한다.
새로운 요구사항에 대해서 많은 수정을 하지 않게 만들어지면 OCP를 잘 지켜 개발한 것이다.
- LSP: Liskov Substitution Principle (리스코프 대체 원칙)
확장된 소스가 기존의 소스를 대체 할 수 없다.
Client가 어떤 상속관계에 있을 때 객체를 상위 클래스로 캐스팅을 할 때 문제가 발생하는지? is a 관계가 맞는지 확인해 본다.
- ISP: Interface Segregation (Interface 분리 원칙)
사용하지 않는 인터페이스에 영향을 받지 않아야 한다.
- DIP: Dependency Inversion Principle (의존 역전의 원리)
클라이언트는 사용을 할때 구체 클래스보다는 인터페이스, 추상클래스를 사용하라는 것. 인터페이스를 바라보고 있으면 구체클래스가 바뀌더라도 클라이언트가 변경할 필요가 없다. - 연관관계(Association)
- 연관관계는 상대 클래스의 객체에게 메세지를 전달할 때 사용되는 통로의 역할을 한다. 연관관계를 맺은 클래스의 객체에게만 메세지를 전송하여 무엇인가를 요청 할 수 있다.
일부 내용 출처: 클래스 구조의 이해와 설계 (한빛미디어)
'Java' 카테고리의 다른 글
클래스 간에 연관관계 (0) | 2012.12.06 |
---|---|
이클립스에 기존에 만들어진 Project를 Import 하는 방법 (0) | 2012.12.04 |
Java GUI - Image (0) | 2012.12.01 |
Java GUI - 간단한 Table 이용방법 (0) | 2012.12.01 |
Java GUI - 간단한 메모장 만들기 (0) | 2012.12.01 |