[TIL] 02 OOP Basic Concepts - Encapsulation(캡슐화)

유민규·2020년 7월 27일
0

Today-I-Learned

목록 보기
2/10
post-thumbnail

Encapsulation(캡슐화)

카페에 들어가 커피를 주문하는 상황을 생각해보자. 커피를 주문하고 계산을 한다. 커피가 다 만들어질 때까지 우리는 기다렸다가 커피를 받아온다.

특별한 경우가 아니면 우리는 커피가 어떻게 만들어지는지 그 과정을 알 필요가 없다.
또 커피를 만드는 과정에 있어 우리가 관여할 필요도 없다.
카페 직원도 커피를 만드는 공간에 손님들이 들어가서 커피를 만드는 과정에 관여하는 것을 원하지 않을 것이다.

객체도 이와 비슷하다고 생각한다. 객체의 외부에서는 객체 내부에 접근해 내부의 변수를 젼경하지 못한다. 또한 객체 내부의 정보를 숨길 수 있는 '은닉'이라는 특성이 있다.
('은닉'은 OOP의 목적이 아닌 캡슐화의 부산물이라고 한다.)

간단한 코드로 캡슐화를 이해해보자

// 캡슐화 전

let baseSalary = 30_000;
let overtime = 10;
let rate = 20;

let getWage = (baseSalary, overtime, rate) => {
  return baseSalary + overtime * rate;
}

getWage(baseSalary, overtime, rate);
// 캡슐화 후

let employee = {
  baseSalary: 30_000,
  overtime: 10,
  rate: 20,
  getWage: function() {
    return this.baseSalary + this.overtime * this.rate;
  },
};

employee.getWage();

Photo by Joshua Rodriguez on Unsplash

https://vandbt.tistory.com/10
https://http://www.tonymarston.net/php-mysql/what-is-oop.html
https://webclub.tistory.com/137
https://brunch.co.kr/@kd4/4
https://m.blog.naver.com/PostView.nhn?blogId=love_junim&logNo=220584421589&proxyReferer=https%3A%2F%2Fwww.google.com%2F

profile
올라운더가 되고싶은 욕심많은 백엔드 개발자

0개의 댓글