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에 따라서 서로 다른 동작/결과 를 얻을 수 있는 특성입니다.
현실 세계의 예를 들어보면, "밤" 이라는 단어가 캄캄한 밤을 의미하기도, 먹는 밤을 의미하기도 합니다. 이렇 듯 말이나 상황에 따라서 의미가 달라지는 다형성이 언어에 존재하듯이 객체지향에도 이러한 특성이 존재합니다.
'CS' 카테고리의 다른 글
[디자인패턴] Singleton pattern (싱글톤 패턴) 의 Java 코드구현 예시 - 단일 스레드 환경 (0) | 2022.04.05 |
---|---|
[CS/SW설계] Object oriented development - 객체지향 개발의 개념 1 (0) | 2022.03.25 |
윈도우 에서 리눅스처럼 hosts 를 바꾸는 방법 - hosts file in Windows 10 (0) | 2022.03.23 |
gcov를 이용한 C++ 코드 커버리지의 확인, 테스트 지표 사용하기 (0) | 2022.03.18 |
데브옵스(devops)와 개발자가 되려면 무엇을 배워야 하는가? - Developer Roadmaps / Devops roadmap (0) | 2022.03.08 |