CS 공부

[OOP] 객체지향프로그래밍의 특성

콘요맘떼 2022. 1. 31. 20:06

1. 상속 (Inheritance)

- 자식 클래스가 부모 클래스의 변수·메소드 등을 사용할 수 있다.

- 자식 클래스는 부모 클래스에 속하기 때문에 is a 관계에 속한다.

- 하위 클래스로 갈수록 객체는 구체화된다.

 

  • 장점

(1) 재사용성 향상 : 필요한 속성 및 메소드를 모두 다시 정의하는 것이 아니라 일부 상속받아서 사용 가능

(2) 확장성 및 유지보수성 향상 : 객체에서 어느 정도 일관성 확보 가능

 

 

2. 다형성(Polymorphism)

- 같은 메소드가 객체에 따라 다른 기능을 수행할 수 있음

- 오버라이딩 : 부모클래스의 메소드와 같은 이름에 같은 매개변수 사용하면서 내부 소스 재정의

- 오버로딩 : 같은 이름 함수를 여러 개 정의 후 매개변수를 다르게 설정한 뒤 경우에 따라서 원하는 메소드를 호출

 

 

3. 캡슐화(Encapsulation)

- 실제 구현하는 부분이 외부에 드러나지 않도록 한다.

- 데이터는 해당 객체의 메소드를 통해서 접근하거나 변경할 수 있다.

- 메소드는 해당 객체 안에 있는 속성만을 처리해야 한다.

 

  • 장점

(1) 모듈성·응집도 상승 : 객체의 모든 내용(속성, 메소드)이 캡슐 형태로 제공

(2) 유비보수 효율성 향상

(3) 재사용성 향상 : 객체의 메소드는 해당 객체에만 영향을 끼치며 전체 프로그램에는 영향을 끼치지 않기 때문

 

 

4. 추상화 (Absctraction)

- 객체들의 공통적인 부분들을 도출해서 재조합하는 과정

- 클래스를 정의하는 것이 추상화에 해당한다.