객체 지향 프로그래밍(클래스와 prototype)

김수영·2021년 6월 14일
0

JavaScript

목록 보기
13/28
post-thumbnail

객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍은 하나의 모델이 되는 청사진(blueprint)을 만들고, 그 청사진을 바탕으로 하여 여러 객체를 만드는 프로그래밍 패턴이다.

이러한 청사진이 클래스(class)가 되고, 이걸 바탕으로 하여 만든 객체가
인스턴스 객체(instance)라고 한다.

new 키워드를 통해 생성할 수도 있으며,
이름을 지을 때 첫글자에 대문자, 일반명사를 보통 사용한다.

constructor

인스턴스가 초기화 될 때 실행하는 생성자 함수이며, ES6 부터 도입 되었다.
일반적인 함수형태가 아닌 class 함수와 같이 쓰이며
return 값을 쓰는 대신 this 키워드를 사용하여 호출한다.

class Person {
	constructor(name, lastname) {
    this.name = name;
    this.lastname - lastname;
    }
  }

객체 지향 프로그래밍의 특징 4가지

캡슐화,상속,추상화,다형성

캡슐화

캡슐화는 속성과 메소드를 따로 정의하는 것이 아니라,
한 객체 안에 묶어서 사용하는 특징을 말한다.
이에 코드가 간결해지고 재사용성이 높아진다.

  • 데이터와 기능을 하나의 단위로 묶는 것
    *은닉(hiding): 구현은 숨기고, 동작은 노출시킴
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

상속

내용이 비슷한 객체를 여러번 써야하면 번거롭고, 개발자스럽지 못하다
부모 객체가 자식 객체에게 상속하는 방식으로 제공된다.

추상화

실제로 노출되는 부분은 아주 단순해 보이지만 내부 구현은 복잡한 개념을 말한다.
개발자는 필요하지 않은 기능,
메소드를 숨기고 단순 이름으로만 정의하는것, 이것이 추상화 이다.

다형성

다양한 형태를 가질 수 있는 개념이다.
객체마다 형태가 다를 수 있다. 공통점은 있지만 세세하게 다를 때
메소드를 다르게 구현할 필요가 있으므로
그렇게 구현이 될 수 있다.

프로토타입

쉽게 말하면 유전자 같은 거다.
부모의 유전자가 자식에게 유전되는 것처럼
부모 객체의 정보가 프로토타입이라는 유전자에 저장되고
자식 객체는 그 프로토타입을 참조한다.

extends와 super를 써서 상속받을 수 있다.

추상화와 캡슐화의 차이

추상화는 데이터의 명시와 구현을 분리하고 간단하게 만드는 것이다.
복잡함을 단순함으로 만들어 사용하기 쉽게 하는 거다.
캡슐화는 외부로부터 데이터 객체의 자세한 구현 정보를 숨기는 것이다.

즉 추상화를 하기 위해 캡슐화를 하는 것,
상호 보완적인 것이다.

profile
기술과 인문학의 교차점

0개의 댓글

관련 채용 정보