객체 지향 프로그래밍#1

정민세·2022년 9월 21일
0

객체 지향 프로그래밍(Object Oriented Programming)

프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

클래스 (Class)

  • 객체를 만들어 내기 위한 설계도 혹은 틀
  • 연관되어 있는 변수와 메서드의 집합

객체 (Object)

  • 소프트웨어 세계에 구현할 대상
  • 클래스에 선언된 모양 그대로 생성된 실체

인스턴스 (Instance)

  • 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것

생성자 함수 (Constructor function)

  • 객체를 생성하는 함수를 생성자 함수라고 한다..
  • 함수와 일반적인 기술차이는 없지만, 다른 건 함수명이 무조건 대문자로 시작한다.
  • 생성자 함수를 바탕으로 객체를 만들기 위해서 new 라는 키워드를 사용한다.
  • ES5식 생성자 함수
    function FishBunFrame(a, b){  //-> 일반적인 함수선언과 크게 다를게 없음. 대문자로 시작하는것만 다름
        this.base = a; //--> this는 새로 생성되는 객체를 말함
        this.flaver = b;
    }
    let choco = new FishBunFrame('쌀', '초콜렛');
    console.log(choco); //-->  {base: "쌀", flaver: "초콜렛"}
  • ES6식 생성자 함수
    class FishBunFrame2 {   //--> class로 생성자 함수 생성
        constructor(c, d){   //--> constructor로 parameter 받음
        this.base = c;
        this.flaver = d;
    }
    }
    let banana = new FishBunFrame2('옥수수가루', '바나나');
    console.log(banana); //--> {base: "옥수수가루", flaver: "바나나"}

클로저 모듈 패턴

  1. IIFE(즉각실행함수)를 이용하거나 new 키워드를 이용한 인스턴스를 생성해 캡슐화된 모듈을 제작 가능하다.
  2. 내부에서만 사용할 수 있는 Private한 요소를 정의할 수 있고 외부에서 사용가능한 Public 요소를 제공해 줄 수 있다.
function makeCounter() {
  let value = 0;
  return {
    increase: function() {
      value++;
    },
    decrease: function() {
      value--;
    },
    getValue: function() {
      return value;
    }
  }
}
let counter1 = makeCounter()
counter1.increase()
counter1.getValue() // 1
let counter2 = makeCounter()
counter2.decrease()
counter2.decrease()
counter2.getValue() // -2

하지만 클로저를 이용해 계속적으로 특정 변수를 참조하고 사용하고 있다면 성능 저하를 일으킬 수 있다.(메모리 누수 현상)

profile
하잇

0개의 댓글