본문 바로가기
CS

[CS/SW설계] Basic principles of object oriented - 객체지향의 기본 원리에 대해

by Warehaus 2022. 3. 24.

Object oriented 의 기본 원리

객체지향 설계의 기본원리는 5가지로 구성되어 있습니다.

 

1. Abstraction

2. Encapsulation

3. Inheritance

4. Polymorphism

 

객체지향의 특징이라고 표현하기도 하는데요, 객체지향 프로그래밍 언어를 이용하여 SW를 구현 시 추상화, 캡슐화, 상속, 다형성, 구성 관계를 띄게 됨을 의미합니다.

 

이런 원리를 기반으로 구현 된 Software를 우리는 객체지향 소프트웨어라고 말할 수 있을 것입니다.

 

 

추상화

 

추상화는 관련있는 정보는 그대로 두고, 관련없는 내용을 지우는 특성입니다.

달리 말하면, 관련정보들은 조금 더 강조해서 표현하고, 크게 중요하지 않은 정보들은 요약해 버리는 것을 의미합니다.

 

자동차를 예로 들어보면 관련정보는 무엇이고 중요하지 않은 정보는 무엇일까요?

 

저라면 이렇게 표현할 것 같습니다.

 

관련정보 (강조) : 핸들, 프레임, 바퀴, 엔진 ..

요약가능정보 : 패들쉬프트, 우산꽂이 ...

 

본질이 아닌 특성들을 요약정보로 생략하고, 모두가 가지고 있는 관련정보들을 모아서 하나의 자동차라는 개념(Object)을 우리는 추상화 할 수 있습니다.

 

캡슐화

 

캡슐화는 내부 동작을 모르더라도 하나의 객체를 사용할 수 있도록 만드는 것 입니다.  정보은닉이 목적이라고도 할 수 있겠습니다.

 

클래스의 Operation (함수) 는 Public 하게 유지하고, 각종 정보와 함수의 구현은 Private하게 은닉하여 Object가 필요한 작업을 수행할 수 있도록 합니다.

 

 

상속

 

상속은 is-a, is a kind of 관계를 의미합니다.  Single inheritance 와 Multiple inheritance가 존재하나, 언어에 따라서 다중 상속은 지원하지 않는 경우도 존재합니다.

 

상속을 이용하여 하나의 클래스를 조직화 하여 구현할 수 있으며, 여러 클래스를 일반화(Generalization)하여 상위 클래스로 구현할 수도 있습니다.

 

다형성

 

다형성은 여러개의 구현을 하나의 인터페이스로 통합하는 것을 의미합니다. 단일 인터페이스를 이용함에도 Context에 따라서 서로 다른 동작/결과 를 얻을 수 있는 특성입니다.

 

현실 세계의 예를 들어보면, "밤" 이라는 단어가 캄캄한 밤을 의미하기도, 먹는 밤을 의미하기도 합니다. 이렇 듯 말이나 상황에 따라서 의미가 달라지는 다형성이 언어에 존재하듯이 객체지향에도 이러한 특성이 존재합니다.