[7/22] 21일차 회고록(객체 지향 프로그래밍)

원지렁·2022년 7월 22일
0
post-thumbnail

오늘의 학습내용

1. 클로저 모듈 패턴

1) 매소드 호출

: 객체 내에 매소드를 호출하는 방법

let counter1 = {
  value: 0,
  increase: function() {
    this.value++ // 메서드 호출을 할 경우, this는 counter1을 가리킵니다
  },
  decrease: function() {
    this.value--
  },
  getValue: function() {
    return this.value
  }
}

counter1.increase()
counter1.increase()
counter1.increase()
counter1.decrease()
counter1.getValue() // 2

2) 클로저 모듈 패턴

: 재사용성을 높이기 위한 클로저 모듈 패턴

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

2. 클래스와 인스턴스

1) 개념

  • 클래스
    : 객체지향 프로그래밍에서의 '청사진' 역할
    : 함수 형태로 생성하며, '대문자'를 사용하여 선언

  • 인스턴스
    : 객체지향 프로그래밍에서의 '객체' 역할(instance object)

2) 사용법

// ES5 문법 기반

// 'new'를 이용하여 class 생성
new Car(brand, name, color){
	// 인스턴스 생성
}

// ES6 문법 기반

// 'class' 를 사용하여 생성
class Car{
	constructor(brand, name, color){
    	// 인스턴스 생성
    }
}

// 각각의 인스턴스는 Car 클래스의 고유한 속성과 매소드를 가진다
let avante = new Car('hyundai', 'avante', 'black');
let mini = new Car('bmw', 'mini', 'green');

3) 속성과 매소드

1) 개념

속성매소드
brand, name, color 등drive(), parking(), setSpeed()

2) 사용법

  • 속성
    : 'this' --> 인스턴스 객체를 의미
// ES5 문법 기반
function Car(brand, name, color) = {
	this.brand = brand;
  	this.name = name;
  	this.color = color;
}

// ES6 문법 기반
class Car{
	constructor(brand, name, color){
    	this.brand = brand;
  		this.name = name;
  		this.color = color;
    }
}
  • 매소드
// ES5 문법 기반
function Car(brand, name, color) = {
	this.brand = brand;
  	this.name = name;
  	this.color = color;
}

Car.prototype.drive(){
	// drive 구현 코드
}

// ES6 문법 기반
class Car{
	constructor(brand, name, color){
    	this.brand = brand;
  		this.name = name;
  		this.color = color;
    }
  drive(){
  	// drive 구현 코드 --> 생성자(costructor)함수와 묶어서 정의함.
  } 
}

3) Prototype, constructor, this

  • Prototype
    : 모델의 청사진을 만들 때 쓰는 원형 객체(original form)

  • constructor
    : 인스턴스가 초기화 될 때 실행하는 생성자 함수

  • this
    : 함수가 실행될 때, 해당 scope마다 생성되는 고유한 실행 context

3. 객체지향 프로그래밍

1) OOP(Object Oriented Programming) 원칙

  • Encapsulation (캡슐화)
    : 단순화 / 재사용성 높임

  • Inheritance (상속)
    : 재사용성 높임

  • Abstraction (추상화)
    : 단순화 / 변화에 대한 영향 최소화

  • Polymorphism (다형성)
    : 동일한 메서드에 대해 객체의 특성에 맞게 따라 다르게 작성 가능하게 함(조건문 대체)

2) Typescript

: javascript에 타입 기능을 강화

  • 은닉화(private)
    : 지정된 클래스 안에서만 사용 가능하도록 속성/매소드를 제한시켜 정의할 수 있다.

  • 추상화(interface)
    : interface를 지정해줌으로써 코드를 단순화하고 재사용성을 높여준다.

profile
새싹 개발자 지렁이의 벨로그입니다.

0개의 댓글