[ Computer Science ]/프로그래밍 이론

[CS] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화)

HSRyuuu 2024. 2. 2. 01:00

객체지향의 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 )

  • 객체지향에서 추상화는 모델링이다.
  • 어떤 현실 모델에서 불필요한 부분은 빼고, 필요한 부분만 이용하여 클래스로 만드는 것이다.
  • 필요한 속성과 행동을 골라서 클래스로 구현하는 것이 추상화를 하는 것이다.
  • 다형성, 상속 모두 추상화에 속한다.
반응형