[코어자바스크립트] 변수 선언과 데이터 할당
[코어자바스크립트] 변수 선언과 데이터 할당
📋 [ 독서목록 ] 시리즈 몰아보기 (1)
🚗 현대인을 위한 3줄요약.
기본형데이터와참조형데이터 모두 주솟값을 복사한다. 다만 그 과정에 있어서 차이가 있을 뿐이다.
📚 들어가기에 앞서...
해당 문서는 도서 코어 자바스크립트의 내용에서 발췌하였습니다. 더 자세한 내용은 아래 링크를 참고해 주시길 바랍니다.
📌 객체의 역할과 책임, 협력
카페에서 음료를 주문한다는 상황을 가정해보자. 손님, 바리스타 등의 사람을 객체로, 음료의 주문을 메세지로, 요청을 처리하는 것(주문전달, 음료제조 등)을 메소드로 해석했을 때 이를 객체지향이라 할 수 있겠다.
주제가 객체지향인 만큼 객체를 중심으로 생각했을 때 객체와 객체는 저마다의 역할을 수행하기 위해 존재하며 메세지를 통해 request와 response를 주고받는다. 역할을 부여받은 객체들은 각각 기능을 수행할 책임이 있고 이 과정에서 협력이 발생하게 된다.
👉 협력
현대사회에서 혼자서 모든 일을 수행하는것은 불가능에 가깝다. 문제를 해결하고자 한다면 해당 문제 해결에 도움이 되는 객체에게 요청(request)를 하게 되며 요청받은 객체는 역할을 수행한 후 요청 주체에게 응답(response)하게 된다.
👉 역할과 책임
역할을 기준으로 객체를 분리한다면 아마 다음과 같을것이다.
- 손님 : 음료를
요청하고 주문한 음료를수령하는 역할 - 카운터 : 손님의
요청을 바리스타에게 전달하고 바리스타의응답을 손님에게 전달하는 역할 - 바리스타 : 카운터의
요청에 의해 음료를제조하고 카운터에게응답하는 역할
주어진 역할을 수행하는 것을 본인의 책임으로 볼 수 있기에 명확한 역할을 구분하는 것이 중요하며 이를 위해선 다음과 같은 역할/책임의 특성을 고려할 필요가 있다.
하나의 객체가2개 이상의 역할을 수행할 수 있다.- 규모가 작은 동네 카페의 경우 카운터가 바리스타의 역할을 동시에 수행해도 문제없다.
반대로
여러 객체가하나의 역할을 수행할 수 있다.- 능률 향상을 위해 2명 이상의 바리스타를 고용해도 된다.
역할은
대체 가능성을 내포하고 있다.- 손님 입장에선 바리스타가 누구인지는 전혀 상관없다. 문제가 발생할 경우 해당 바리스타를 해고하고 새로운 바리스타를 고용하면 그만이다.
객체는 스스로 책임을 수행할 방법을 정할 수 있다.
- 모든 카페의 바리스타는 손님에게 음료를 제공한다는
동일한 책임을 부여받지만 각 프렌차이즈 별로 다른 원두, 장비, 로스팅 방법 등을 사용한다. 이를다형성(polymorphism)라고한다.
- 모든 카페의 바리스타는 손님에게 음료를 제공한다는
📌 객체를 지향한다는 의미
당장 떠오르는 클래스, 메소드 따위에 매몰되지 말고 객체의 역할, 책임, 협력에 집중해야 한다. 결국 객체지향이란 상호작용하는 자율적인 객체들의 공동체를 통해 시스템을 분할하는 방법이다.
참고문서
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!