💡 객체 지향 프로그래밍 (Object Oriented Programin) : 데이터와 기능, 함수들을 묶어 하나의 객체로 만들어 사용한다.
💡 절차적 프로그래밍 (Procedural Programming) : 데이터를 중심으로 함수를 만들어 사용한다.
좋은 설계를 하기 위해서는 객체지향을 이해하고 응용하는 것이 중요하다.
var speaker = (function () {
var volume = 0;
return {
volumeUp: function () {
volume += 10;
},
volumeDown: function () {
volume -= 10;
}
}
})();
speaker.volumeUp();
speaker.volumeDown();
speaker
함수 외부에서 volumeUp()
, volumeDown()
함수를 이용하여 volume
의 값을 올리거나 내릴 수는 있지만, 외부에서 volume
변수에 직접 접근하여 바꾸는 것은 불가능하다. 이렇게 마음대로 변수의 값을 바꿀 수 없도록 내부의 정보를 외부로부터 은폐하는 것을 캡슐화라고 한다.var speaker = (function () {
var volume = 0;
return {
volumeUp: function () {
volume += 10;
},
volumeDown: function () {
volume -= 10;
},
autoVolumeOff: function () {
setTimeout(function () {
volume = 0;
}, 5000);
}
}
})();
autoVolumeOff()
이라는 함수를 추가했다. 이 함수는 5초후 volume
의 값을 0으로 만들어준다.speaker.volumeUp(); // 10
speaker.volumeUp(); // 20
speaker.volumeUp(); // 30
speaker.volumeUp(); // 40
speaker.volumeDown(); // 30
console.log("5초후");
speaker.autoVolumeOff(); // 0
사용자는 어떤 원리에 의해 volume
이 0이 되는지 함수를 호출한 부분만 보고선 알 수 없다. 복잡한 원리나 구동 방식을 노출시키지 않고 단순한 이름으로 정의하여 추상화시켰기 때문이다.
📚 참고자료
혹시나 잘못된 정보가 있다면 댓글로 알려주세요 ! 저의 성장의 큰 도움이 될 것 같습니다.🌱