thumbnail

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

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

📋 [ 독서목록 ] 시리즈 몰아보기 (1)

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

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


📚 들어가기에 앞서...

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

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


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

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

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

👉 협력

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

👉 역할과 책임

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

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

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

  • 하나의 객체2개 이상의 역할을 수행할 수 있다.

    • 규모가 작은 동네 카페의 경우 카운터가 바리스타의 역할을 동시에 수행해도 문제없다.
  • 반대로 여러 객체하나의 역할을 수행할 수 있다.

    • 능률 향상을 위해 2명 이상의 바리스타를 고용해도 된다.
  • 역할은 대체 가능성을 내포하고 있다.

    • 손님 입장에선 바리스타가 누구인지는 전혀 상관없다. 문제가 발생할 경우 해당 바리스타를 해고하고 새로운 바리스타를 고용하면 그만이다.
  • 객체는 스스로 책임을 수행할 방법을 정할 수 있다.

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

📌 객체를 지향한다는 의미

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


참고문서

# javascript
# js
# 메모리
# 책
# 코어자바스크립트

💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!

👨‍💻 관련 포스트