객체지향의 원칙에 대해서 한번 살펴보고 가겠습니다.
일단 객체지향이라는 것에 대해서 알아봐야 하는데, 객체지향과 비교할 수 있는 절차지향부터 뭔지 알아봐야 겠습니다.
일단 우리가 밥을 한다고 생각해볼게요
절차지향의 방식대로 한다면 아래의 순서대로 갈 것입니다.
쌀씻기 -> 밥솥에 밥하기 -> 된장 끓이기 -> 국 퍼기 -> 밥상 차리기 -> 완료
그런데 이걸 하다보니, 중간에 된장끓이기 전 고기를 굽거나 하는 일이 발생할 수 있고, 엄마가 밥하는 것을 도와줄 수 있습니다. 그리고 중간에 된장을 빼야 하는 경우도 생기겠죠?
그러다 보니 저 과정들을 관리하기가 어려워졌습니다.
때문에 이 기능들을 개별적으로 아래와 같이 만들어놓고
- 쌀씻기
- 밥솥에 밥하기
- 된장 끓이기
- 국 퍼기
- 밥상 차리
- 완료
필요할 때 마다 가져오고 수정하는 형태로 구현하는 것이 객체지향입니다.
그러면 객체지향으로 설계를 할 때 어떤 방식으로 할 수 있을까요?
1. 추상화
2. 캡슐화
3. 상속
4. 다형성
의 원칙대로 합니다.
1. 추상화
수많은 정보 중, 클래스의 기능을 수행하기 위해 필요한 정보와 행위를 묶어서 설계하는 것을 추상화라고 합니다.
2. 캡슐화
꼭 사용자가 알 필요 없는 부분은 접근할 수 없도록 캡슐안에 넣어둔다는 의미로 캡슐화라고 합니다. 내가 만든 클래스 내에서 불필요한 곳에는 직접 접근할 수 없도록 하여 리소스의 공유와 보안 사이 균형을 맞추는 방법입니다.
3. 상속
재사용성을 위해 부모클래스의 속성을 상속받아서 사용합니다.
4. 다형성
오버라이딩, 오버로딩을 통해 다양하게 동작되도록 설계합니다.
- 참조
https://codevang.tistory.com/77?category=827598
https://codevang.tistory.com/78?category=827598
'기술' 카테고리의 다른 글
프로토콜 버퍼란? (0) | 2022.12.01 |
---|---|
Heap Stack (0) | 2021.09.27 |
OSI 7 Layer (0) | 2021.08.24 |
DB Index (0) | 2021.08.14 |
프로세스(Process)와 쓰레드(Thread)의 차이 (0) | 2021.08.13 |