[오브젝트] 절차지향적인 코드를 통해 배운 캡슐화

junhyeong·2023년 6월 26일
0

어제 오브젝트 chapter01의 step01에서 손님이 입장하여 티켓을 사는 프로세스를 만들었다. 아래 코드는 theater가 손님이 입장했을때 작동하는 코드이다.
코드를 따라가며 작성하면서 theater가 모든 객체의 데이터를 직접 조작하는게 맞는지에 대한 의문이 들었다. 예를들어서 코드상으로 theater가 audience의 가방에서 돈을 꺼내고 티켓을 넣어주는데 객체지향을 배운 입장에서는 theater가 audience의 가방을 마음대로 조작하는건 이상했기 때문이다.

그러나 오늘 다음 부분을 읽으면서 왜 이상함을 느꼈는지 알게되었다.

그건 바로 작가가 객체지향의 캡슐화를 알려주기 위해 의도적으로 절차지향적인 코드를 작성했기 때문이었다.

캡슐화를 통해 절차지향에서 객체지향으로

캡슐화를 통해 객체지향에서는 객체가 자신이 소유한 데이터를 스스로 처리하는 자율적인 존재여야 한다는 원칙이 있다. 그래서 외부의 간섭을 최소화하고, 메시지를 통해서만 협력하는 자율적인 객체들의 공동체를 만들어야 한다.

여기까지가 내가 알고 있던 캡슐화의 개념적 지식이다. 하지만 개념적으로만 알고 있다보니 크게 와닿지는 않는 개념이기도 했다.

아래는 위의 코드를 객체지향적으로 캡슐화한 코드이다.

같은 프로세스이지만 캡슐화를 통해서 각 객체가 맡은 역할에만 책임을 지니므로 코드를 이해하기 쉽고, 변경이 발생해도 간단히 처리할 수 있도록 변했다.

결론

한곳에서 프로세스를 관리하는 절차지향 코드를 프로세스에서 자신이 맡은 부분만 책임지는 객체지향 코드로 바꾸어 보았다.

그리고 이를 통해서 코드의 이해와 변경을 쉽게 하기 위해 객체지향의 캡슐화를 써야한다는걸 알 수 있었다.

profile
매일매일이 성장하는 하루가 될 수 있도록!

0개의 댓글