Chapter 01. 객체지향
객체지향의 4대 특성
1. 캡슐화
캡슐화는 개체의 속성(Variable)을 보호하기 위해서 사용합니다.
객체의 캡슐화는 현실 세계에서도 볼 수 있습니다. 컴퓨터 본체 안에 수많은 부품이 있지만, 전원을 켜기 위해서는 메인보드에 전기 신호를 직접 주는 것이 아닌, 외부 케이스에 있는 전원 버튼을 통해서 상태 속성은 On/Off 하도록 변경합니다.
Method 설계
- 속성이 선언되었으나, 이의 상태를 변경하는 method가 없다면, 잘못 선언된 속성이다.
즉, 자신이 가지고 있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다.
- 실물 객체가 가진 기능을 모두 제공해야 한다.
예를 들면, 자동차의 렌탈, 반납, 주행거리 계산 등등
- 각각의 Method는 서로 관련성이 있어야 한다.
차량의 렌탈/반납, 자동차 등록증 등록/해지 등 각 속성의 상대되는 기능을 제공해야 한다.
- 객체 안의 Method는 객체 안의 속성을 처리해야 하며, 다른 객체를 전달받아 해당 다른 객체에 정의된 속성을 직접 처리하면 안 된다.
단, Method에 실행에 필요한 값들은 객체의 형태가 아닌 매개변수의 형태로 전달되어야 한다.
- Getter / Setter Method
외부에서 내부 속성(Variable)에 직접 접근하는 것이 아닌 Getter/Setter Method를 통해서 접근하도록 적용 - CRUD Method
데이터 처리를 위한 기본적인 CRUD Method를 제공 - Business Logic Method
비즈니스 로직 처리를 위한 Method를 제공 - 객체의 생명 주기 처리 Method
흔히 destroy(), disconnect() 등 quit() 등 소멸에 대한 method - 객체의 영구성 관리 Method
영구성(유효성) 속성에 대한 변경이 필요한 경우 외부에서는 접근이 불가능하도록 private로 선언하며, 내부의 다른 Method를 통해서 사용되도록 한다.
Method의 속성은 반드시 1개에 속할 필요는 없으며, 여러 속성에 해당될 수 있다.
장점
- 객체지향의 패러다임 중 하나인 추상화를 제공한다.
실제로 Method가 어떻게 동작하는지는 외부에서는 이해할 필요가 없으며, 이를 단순 호출만으로 해당 기능을 실행할 수 있고, 이를 통해서 객체 단위로 프로그램 설계가 가능하다. - 재 사용성 향상
한 객체에 관련된 속성 및 Method는 모두 캡슐화의 형태로 제공되므로, 객체의 모듈성과 응집도가 높아진다. 이를 통하여 재 사용성이 높아진다.
만일 절차적 프로그래밍에서, Method를 재사용한다면, 함수가 참조하고 있는 전역 변수 및 내부에서 호출하는 Method가 미치는 영향을 모두 체크해야 하나, 객체의 경우는 단일 객체에만 영향을 주기에 재 사용성이 높다. - 앞선 이유로 인하여, 유지보수의 효율성이 향상된다.
무결성
보통의 캡슐화 코딩이라고 한다면, 주로 변수는 private로 선언하고, Method를 public으로 선언하는 형태를 많이 가지게 됩니다.
이는 객체의 무결성을 위함입니다. Getter/Setter를 제외하고는 public method는 입력된 매개변수를 Validation을 한 후에 실행하는 것을 기본으로 합니다.
Validation을 통하여, 객체의 값을 바꾸거나, 값에 대한 유효성을 가질 수 있습니다.
2. 상속
- 객체지향에서의 상속은, 속성의 상속이 아닌, 하위로 내려갈수록 구체화되는 것이다.
상속의 효과
- 프로그램 구조에 대한 이해도 향상
최상위 클래스의 구조를 보고, 하위 클래스의 동작을 이해할 수 있다. - 재사용성 향상
상속을 이용하여, 해당 클래스에 필요한 속성 및 메서드를 모두 정의하지 않고, 상속을 받아서 사용할 수 있다. - 확장성 향상
일관된 형태의 클래스 객체를 추가할 수 있어, 간단하게 프로그램 확장이 가능하다.
Ex) 신규 유닛 - 유지보수성 향상
각 객체마다, 자신의 메서드를 정의하고 있다면, 코드 수정에서 많은 작업이 필요하지만, 상속을 사용한 경우 일관된 형태로 작성이 가능하다.
3. 다형성
- 다형성은 하나의 개체가 여러 개의 형태로 변화하는 것을 말하며, 이를 객체지향에서도 유사하게 사용을 하고 있습니다.
- 다형성을 하기 위해서는 오버 라이딩을 통해서 가능합니다.
4. 추상화
- 객체지향에서의 추상화는 모델링이다.
- 구체적으로 공통적인 부분, 또는 특정 특성을 분리해서 재조합하는 부분이 추상화입니다.
- 앞에서 배운 다형성, 상속 모두 추상화에 속한다.
'Be Smart > Spring' 카테고리의 다른 글
Singleton Pattern (0) | 2021.08.20 |
---|---|
디자인 패턴 (0) | 2021.08.19 |
POJO JAVA (0) | 2021.08.19 |
객체지향 설계 5원칙 SOLID (0) | 2021.08.19 |
객체지향이란? (0) | 2021.08.19 |
댓글