-
[객체지향의 사실과 오해-1] 객체,캡슐화,추상화개발/프로그래밍 2021. 10. 16. 17:29
흔히 커피를 주문할때 필요한 사람은 손님과 캐시어 그리고 바리스타로 구성된다.
손님은 커피를 주문하고 캐시어는 바리스타에게 주문을 알려준다. 그리고 바리스타는 커피를 제조할것이다.
이 사람들을 객체로 생각해보자 각 객체는 역할과 책임을 다한다.
손님은 주문을 할 역할과 책임, 캐시어는 주문을 받아 바리스타에게 커피를 요청할 역할과 책임
그리고 바리스타는 커피를 제조할 역할과 책임을 가진다.
그리고 각 객체들은 각자의 역할과 책임을 가지며 협력한다.
또 각 객체들은 자율성을 가지고있다. 자율성이란 자기 스스로 원칙에따라 일을하거나 스스로 통제 절제하는것이다.
예로 어떻게 주문할지 어떻게 커피를 만들지 의 문제는 각 객체가 스스로 판단하여 행동한다.
그것을 자율적이라 표현한다.
각 객체들이 협력을 하기위해 메시지를 전달한다. "커피를 주세요" 라는 메시지가 전달되고
캐시어는 이 메시지를 받고 일을 처리하는데 이때 '자율적' 으로 적합한 메소드를 선택한다.
캐시어가 어떻게 일을 할지는 손님이 관여 하지 않는다. 단지 요청하여 응답을 받을뿐이다.
이상한 나라의 앨리스에서 앨리스는 작은 문을 통과하기위해 음료를 마시는 내용이있다.
음료를 마시면 키가 40cm 으로 작아진다. 이때 앨리스와 음료를 객체라 생각해보자.
객체는 상태를 가지고있다. 현재 앨리스의 키는 130cm 이며 음료는 1리터가있다.
앨리스가 음료를 마시는 행동으로 인해 앨리스의 키는 40cm가 되었고 음료는 0.5리터가 남게되었다.
이렇게 객체의 행동으로 인해 상태가 변경된다.
이때 앨리스는 0.5리터의 음료를 마셨지만 음료가 얼마나 남은지는 알수가없다.
이것을 음료라는 객체자신만이 자신의 상태를 알고있으며 이것을 캡슐화라고 한다.
카페에는 다양한 사람이있다. 안경을쓰고 공부하는학생, 데이트하는 커플, 일하는 직장인, 수다떠는 아줌마들 등등 다양한 사람들이 카페에 앉아있다. 이 사람들을 모두 표현 하자니 너무 많다. 이럴때 우리는 추상화를 사용해 단순하게 표현한다.
가장 단순하게 "사람들" 이되겠다. 조금 덜 단순하게는 "여자", "남자" 로 나뉠수도 있겟다.
이렇게 추상화를 사용해 불필요한 세부사항을 제거 하고 복잡함을 줄인다.
이때 어떻게 나눌지는 특정 컨셉(개념)을 사용한다. 특정 컨셉을 사용해 이 사람들을 분류한다.
어떤부분이 필요하고 불필요한지에따라 나뉘는게 달라질것이다. 남녀가 중요한 개념이면 남녀를 나눌것이고
나이가 중요하면 나이라는 개념으로 젊은사람 늙은사람으로 나눌것이다.
이렇게 객체들을 개념을 적용시켜 분류하는것이 객체지향에서 중요한부분이다.
이때 이 개념을 프로그래밍 용어로 "타입" 이라 한다. 타입을 가지고 공통점이 있는 객체들을 묶는다.
객체지향에서 이 중요한 "공통점" 이라는것은 같은 행동을 기반으로 한다.
같은 타입에 속한 객체들은 같은 메시지를 받아 일을 처리 할수있어야한다.
단지 어떻게 일을 하는지와 응답이 다를뿐이다. 이렇게 내부적인 요소가 다른것을 객체의 다형성이라 한다.
'개발 > 프로그래밍' 카테고리의 다른 글
객체지도 (0) 2021.11.07 [객체지향의 사실과 오해-2] 역할,책임,협력,책임주도 설계 (0) 2021.10.30 클린코드 - 클래스 (0) 2020.10.12 클린코드 - 오류,예외처리 (0) 2020.10.07 클린코드 - 객체와 자료구조 (0) 2020.10.06