[코어자바스크립트] 변수 선언과 데이터 할당

Choco Ham·2023년 2월 2일
0

웹개발 필수도서

목록 보기
2/2

🚗 현대인을 위한 3줄요약.

기본형 데이터와 참조형 데이터 모두 주솟값을 복사한다. 다만 그 과정에 있어서 차이가 있을 뿐이다.


📚 들어가기에 앞서...

해당 문서는 도서 코어 자바스크립트의 내용에서 발췌하였습니다. 더 자세한 내용은 아래 링크를 참고해 주시길 바랍니다.

도서링크 : http://www.yes24.com/Product/Goods/78586788


📌 객체의 역할과 책임, 협력

카페에서 음료를 주문한다는 상황을 가정해보자. 손님, 바리스타 등의 사람을 객체로, 음료의 주문을 메세지로, 요청을 처리하는 것(주문전달, 음료제조 등)을 메소드로 해석했을 때 이를 객체지향이라 할 수 있겠다.

주제가 객체지향인 만큼 객체를 중심으로 생각했을 때 객체와 객체는 저마다의 역할을 수행하기 위해 존재하며 메세지를 통해 requestresponse를 주고받는다. 역할을 부여받은 객체들은 각각 기능을 수행할 책임이 있고 이 과정에서 협력이 발생하게 된다.

👉 협력

현대사회에서 혼자서 모든 일을 수행하는것은 불가능에 가깝다. 문제를 해결하고자 한다면 해당 문제 해결에 도움이 되는 객체에게 요청(request)를 하게 되며 요청받은 객체는 역할을 수행한 후 요청 주체에게 응답(response)하게 된다.

👉 역할과 책임

역할을 기준으로 객체를 분리한다면 아마 다음과 같을것이다.

  • 손님 : 음료를 요청하고 주문한 음료를 수령하는 역할
  • 카운터 : 손님의 요청을 바리스타에게 전달하고 바리스타의 응답을 손님에게 전달하는 역할
  • 바리스타 : 카운터의 요청에 의해 음료를 제조하고 카운터에게 응답하는 역할

주어진 역할을 수행하는 것을 본인의 책임으로 볼 수 있기에 명확한 역할을 구분하는 것이 중요하며 이를 위해선 다음과 같은 역할/책임의 특성을 고려할 필요가 있다.

  • 하나의 객체2개 이상의 역할을 수행할 수 있다.
    - 규모가 작은 동네 카페의 경우 카운터가 바리스타의 역할을 동시에 수행해도 문제없다.

  • 반대로 여러 객체하나의 역할을 수행할 수 있다.
    - 능률 향상을 위해 2명 이상의 바리스타를 고용해도 된다.

  • 역할은 대체 가능성을 내포하고 있다.
    - 손님 입장에선 바리스타가 누구인지는 전혀 상관없다. 문제가 발생할 경우 해당 바리스타를 해고하고 새로운 바리스타를 고용하면 그만이다.

  • 객체는 스스로 책임을 수행할 방법을 정할 수 있다.
    - 모든 카페의 바리스타는 손님에게 음료를 제공한다는 동일한 책임을 부여받지만 각 프렌차이즈 별로 다른 원두, 장비, 로스팅 방법 등을 사용한다. 이를 다형성(polymorphism) 라고한다.


📌 객체를 지향한다는 의미

당장 떠오르는 클래스, 메소드 따위에 매몰되지 말고 객체의 역할, 책임, 협력에 집중해야 한다. 결국 객체지향이란 상호작용하는 자율적인 객체들의 공동체를 통해 시스템을 분할하는 방법이다.


참고문서

profile
야호

0개의 댓글