OOP (Object Oriented Programming)

npm ๋ชจ๋“ˆ ๊ฐ™์€๊ฑฐ ์“ฐ๊ธฐ ํŽธํ•œ, ๋ฐœ๋ช…ํ’ˆ ๊ฐ์ฒด๋ฅผ ์œ„์ฃผ๋กœ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.

๋ฌผ๊ฑด์„ ๋ฐœ๋ช…ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋ ˆ๊ณ ๋ฅผ ์ค€๋‹ค. ์ด๊ฑธ ์ด์šฉํ•ด์„œ ๋ฌด์—‡์„ ๋งŒ๋“ค์ง€๋Š” ์ฐฝ์˜์„ฑ์— ๋‹ฌ๋ฆฐ๊ฒƒ์ด๋‹ค.

๋„ˆ๋ฌด ๊นœ๊นœํ•ด! ๋žจํ”„๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด!

var lamp = {
  brightness: 0, //this๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•จ์ˆ˜ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ 'ใ…'?
  turnOn: function () {
    this.brightness = 100;
  },
  turnOff: function () {
    this.brightness = 0;
  }
};

lamp.turnOn();
lamp.turnOff();
lamp.brightness = 10000000000000;
function lamp() {
  var brightness = 0; // ์บก์Аํ™” ์ง€์—ญ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.
  this.turnOn = function () { // ํด๋กœ์ €๋กœ ๊ธฐ์–ตํ•œ๋‹ค.
    brightness = 100;
    console.log(brightness);
  };
  this.turnOff = function () {
    brightness = 0;
  }
};

var myLamp = new lamp();
myLamp.turnOn();

์บก์Аํ™”(Encapsulation)

์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด๋ถ€์ •๋ณด๋ฅผ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.

์ถ”์ƒํ™”(Abstraction)

์†Œํ”„ํŠธ๋Š” ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์‚ฌ์šฉ์ž๋Š” ๊ธฐ๊ณ„์•ˆ์— ์ƒ์„ธ๋‚ด์šฉ์„ ์•Œ ํ•„์š”๋Š” ์—†๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

factory ํ•จ์ˆ˜ - ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๊ฐ์ฒด๋ฅผ returnํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ƒ์„ฑ์žํ•จ์ˆ˜์™€ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ณต์žฅ์ฒ˜๋Ÿผ ์ฐ์–ด๋‚ด๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

link

ํ˜„๊ด€๋ฌธ์— ์žˆ๋Š” ๋žจํ”„๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. ์ด ๋žจํ”„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๊ฑฐ์ง€, ์ด ์ƒ์„ธ๋‚ด์šฉ์„ ์•Œ ํ•„์š”๋Š” ์—†๋‹ค.

๋žจํ”„๊ฐ€ ๋ช‡ ๊ฐœ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

construrctor ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€๋‹ค

Factory๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ brightness๋ฅผ ์ด์šฉํ•ด์„œ brightness๋ฅผ privateํ•˜๊ฒŒ ๋งŒ๋“ฌ

Factory ํ•จ์ˆ˜๋ž€? ์–ด๋– ํ•œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ๊ทธ์น˜๋งŒ ์ด๊ฒƒ์€ ์ƒ์„ฑ์žํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋งŒ์•ฝ brightness๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

Inheritance

SOLID Principle, Principle, KISS, GRASP

์ „๊ธฐ์ฐจ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž

Car์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

  • ์ฃผ์ธ์ด ์กด์žฌํ•œ๋‹ค.

  • ์–‘๋„๋ฅผ ํ•œ๋‹ค.

์ž๋™์ฐจ๊ฐ€ ํฐ ์นดํ…Œ๊ณ ๋ฆฌ์— ์žˆ๊ณ  ๊ทธ ๋ฐ‘์— ์ „๊ธฐ์ฐจ๊ฐ€ ์žˆ๋‹ค. ํ–‰๋™ ์œ„์ž„์„ ํ†ตํ•ด ์ž๋™์ฐจ์˜ ๊ธฐ๋Šฅ์„ ์ „๊ธฐ์ฐจ๊ฐ€ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.

SOLID Principle(๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„)

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ๋งํ•˜๋ฉฐ, ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋‹ค์„ฏ๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™์„ ๋งํ•œ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์‰ฌ์šด ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์ด ์›์น™๋“ค์„ ํ•จ๊ป˜ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋…

์„ค๋ช…

Single responsibility principle(๋‹จ์ผ ์ฑ…์ž„ ์›์น™)

ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

Open / closed principle(๊ฐœ๋ฐฉ ํ์‡„ ์›์น™)

ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜๊ณ  ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผํ•œ๋‹ค.

Dependency inversion principle(์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™)

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ์ง€, ๊ตฌ์ฒดํ™”์— ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค.???

Last updated

Was this helpful?