목차
객체지향의 4대 특성 : 캡슐화, 상속, 다형성, 추상화
1. 캡슐화 ( Encapsulation )
- 객체의 속성(Variable)을 보호하기 위해 사용한다.
- 객체와 객체 간의 의사소통을 위해 필요한 정보만을 노출한다.
- 실제 내부 구현 정보는 숨긴다.
[ Method 설계 ]
- 자신이 가지고있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다.
- 실물 객체가 가진 기능을 모두 제공해야 한다.
- 각각의 Method는 서로 관련성이 있어야 한다. ( getter - setter ) (add - delete ) 등
- Getter / Setter : 외부에서 내부 속성에 직접 접근하지 못하도록 사용
- CRUD Method : 데이터 처리를 위한 기본적인 CRUD Method 제공
- Business Logic Method : 비즈니스 로직 처리를 위한 Method
- 객체의 생명주기 처리 Method : 객체 소멸에 대한 Method
- 객체의 영구성 관리 Method : 대부분 속성은 외부에서 접근이 불가하도록 private로 선언하고, getter/setter 등을 이용해 접근하도록 설계
[ 캡슐화의 장점 ]
- 추상화 제공 : 외부에서 내부를 알지 못해도 객체 단위로 프로그램 설계 가능
- 재 사용성 향상
- 유지보수의 효율 향상
[ 무결성 ]
Getter/Setter을 제외하고는 public method는 입력된 매개변수를 Validation 한 후 실행하는 것을 기본으로 한다.
- Validation을 통해, 객체의 값을 바꾸거나 값에대한 유효성을 판단할 수 있다.
일반적으로, 변수는 private으로 선언, Method는 public으로 선언하는 형태
2. 상속 ( Inheritance )
- 프로그램을 쉽게 확장할 수 있게 해주는 강력한 수단이다.
- 상위 클래스와 하위 클래스는 계층적 관계를 갖는다.
- 상위클래스에서 하위 클래스로 내려갈 수록 구체화 되는 것이 중요하다.
< 상속의 효과 >
1) 프로그램 구조에 대한 이해도 향상
- 최상위 클래스의 구조를 보고, 하위 클래스의 동작을 이해하기 쉬워진다.
2) 재사용성 향상 (중복 감소)
- 해당 클래스에서 필요한 속성, 메서드를 모두 정의하지 않고 상속을 받아서 사용할 수 있다.
3) 확장성 향상
- 일관된 형태의 클래스 객체를 추가할 수 있어서, 프로그램 확장이 쉬워진다.
4) 유지보수 효율 향상
3. 다형성( polymorphism )
- 하나의 개체가 여러 개의 형태로 변화하는 것
- 외부에서 보이는 모습은 한 가지 형태이지만, 다형성을 이용해 여러 가지 기능을 수행할 수 있다.
- overloading, overriding을 통해서 구현 가능
4. 추상화( Abstraction )
- 객체지향에서 추상화는 모델링이다.
- 어떤 현실 모델에서 불필요한 부분은 빼고, 필요한 부분만 이용하여 클래스로 만드는 것이다.
- 필요한 속성과 행동을 골라서 클래스로 구현하는 것이 추상화를 하는 것이다.
- 다형성, 상속 모두 추상화에 속한다.
반응형
'[ Computer Science ] > 프로그래밍 이론' 카테고리의 다른 글
[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향) (1) | 2024.02.02 |
---|---|
[CS] SOLID : 객체지향 설계 5 원칙 (0) | 2024.02.02 |
[Computer Science/디자인 패턴] 전략 패턴(strategy pattern) (0) | 2024.01.25 |
[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조 (0) | 2024.01.22 |
[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리 (0) | 2023.10.01 |
객체지향의 4대 특성 : 캡슐화, 상속, 다형성, 추상화
1. 캡슐화 ( Encapsulation )
- 객체의 속성(Variable)을 보호하기 위해 사용한다.
- 객체와 객체 간의 의사소통을 위해 필요한 정보만을 노출한다.
- 실제 내부 구현 정보는 숨긴다.
[ Method 설계 ]
- 자신이 가지고있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다.
- 실물 객체가 가진 기능을 모두 제공해야 한다.
- 각각의 Method는 서로 관련성이 있어야 한다. ( getter - setter ) (add - delete ) 등
- Getter / Setter : 외부에서 내부 속성에 직접 접근하지 못하도록 사용
- CRUD Method : 데이터 처리를 위한 기본적인 CRUD Method 제공
- Business Logic Method : 비즈니스 로직 처리를 위한 Method
- 객체의 생명주기 처리 Method : 객체 소멸에 대한 Method
- 객체의 영구성 관리 Method : 대부분 속성은 외부에서 접근이 불가하도록 private로 선언하고, getter/setter 등을 이용해 접근하도록 설계
[ 캡슐화의 장점 ]
- 추상화 제공 : 외부에서 내부를 알지 못해도 객체 단위로 프로그램 설계 가능
- 재 사용성 향상
- 유지보수의 효율 향상
[ 무결성 ]
Getter/Setter을 제외하고는 public method는 입력된 매개변수를 Validation 한 후 실행하는 것을 기본으로 한다.
- Validation을 통해, 객체의 값을 바꾸거나 값에대한 유효성을 판단할 수 있다.
일반적으로, 변수는 private으로 선언, Method는 public으로 선언하는 형태
2. 상속 ( Inheritance )
- 프로그램을 쉽게 확장할 수 있게 해주는 강력한 수단이다.
- 상위 클래스와 하위 클래스는 계층적 관계를 갖는다.
- 상위클래스에서 하위 클래스로 내려갈 수록 구체화 되는 것이 중요하다.
< 상속의 효과 >
1) 프로그램 구조에 대한 이해도 향상
- 최상위 클래스의 구조를 보고, 하위 클래스의 동작을 이해하기 쉬워진다.
2) 재사용성 향상 (중복 감소)
- 해당 클래스에서 필요한 속성, 메서드를 모두 정의하지 않고 상속을 받아서 사용할 수 있다.
3) 확장성 향상
- 일관된 형태의 클래스 객체를 추가할 수 있어서, 프로그램 확장이 쉬워진다.
4) 유지보수 효율 향상
3. 다형성( polymorphism )
- 하나의 개체가 여러 개의 형태로 변화하는 것
- 외부에서 보이는 모습은 한 가지 형태이지만, 다형성을 이용해 여러 가지 기능을 수행할 수 있다.
- overloading, overriding을 통해서 구현 가능
4. 추상화( Abstraction )
- 객체지향에서 추상화는 모델링이다.
- 어떤 현실 모델에서 불필요한 부분은 빼고, 필요한 부분만 이용하여 클래스로 만드는 것이다.
- 필요한 속성과 행동을 골라서 클래스로 구현하는 것이 추상화를 하는 것이다.
- 다형성, 상속 모두 추상화에 속한다.
반응형
'[ Computer Science ] > 프로그래밍 이론' 카테고리의 다른 글
[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향) (1) | 2024.02.02 |
---|---|
[CS] SOLID : 객체지향 설계 5 원칙 (0) | 2024.02.02 |
[Computer Science/디자인 패턴] 전략 패턴(strategy pattern) (0) | 2024.01.25 |
[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조 (0) | 2024.01.22 |
[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리 (0) | 2023.10.01 |