#18. Class Syntax(3)

2langk·2021년 3월 23일
0

[오분자스 - 개념편]

목록 보기
18/24
post-thumbnail

Class Syntax(3)

이번에는 OOP의 특징에 대해 소개하면서, OOP 시리즈를 마무리해야겠다.

아래는 앞 포스트에서 다뤘던 class 문법이다.
한 번 훑고 지나가자.

class Book {
	constructor(title, author, year){
    	    this.title = title;
	    this.author = author;
	    this.year = year;
	}

	 getSummary() {
	     return `${this.title} was book`;
	 };
}

class Magazine extends Book {
	constructor(title, author, year, month){
            super(title, author, year)
            this.month = month
	}
}

const book1 = new Book('up' ...)
const book1 = new Book('down' ...)

OOP의 주요 컨셉트

(1) Class & Object
클래스로 인스턴스(객체)를 만들어낸다.

(2) Encapsulation(캡슐화)
클래스 안에 property와 메소드를 함께 묶어서 보관할 수 있다.

(3) Abstraction(추상화)
클래스를 이용하면 자세한 정보를 숨길 수 있다.
클래스를 사용하는 사람은 메소드의 내부가 어떻게 동작하는지 몰라도 return 값만 알면 메소드를 사용할 수 있다. 굳이 클래스 내부를 공개하지 않아도 된다.

(4) Inheritance(상속)
Book과 Magazine 관계처럼 extends & super 키워드를 이용해 클래스를 상속할 수 있다.
상속을 이용하면 유사한 클래스들 간의 불필요한 중복을 제거할 수 있다.

(5) Polymorphism(다형성)
메소드에서 this 키워드를 활용하면 하나의 메소드를 다르게 동작시킬 수 있다. 예를 들면 아래와 같은 경우가 있다. getSummary라는 동일한 메소드가 호출되었지만 결과는 다른 것을 볼 수 있다.

book1.getSummary() // 'up is book'
book2.getSummary() // 'down is book'

여기까지가 자바스크립트의 OOP 기본 개념이었다. 이렇게 해서, OOP를 마치려고 한다.

하지만 이것이 자바스크립트 OOP의 전부는 아니다.
Object 함수로 생성자를 구현할 수도 있고, 메소드 오버라이딩 같은 개념도 있다.
뿐만아니라, 타입스크립트는 자바스크립트에서 제공하지 않는 private 키워드, 데코레이터, 인터페이스, 추상클래스 등 많은 기능들을 제공한다. OOP를 더 공부해보고 싶다면, 타입스크립트를 공부해보는 것도 좋을것 같다.

어쨌든 지금까지 소개한 OOP의 기본 개념을 잘 기억해두면, 위에 언급한 것들을 익히는 것도 어렵지 않을거다.

0개의 댓글