TypeScript

[TypeScript] OOP 원칙

임호랑이 2021. 11. 2. 20:20

1. 캡슐화

서로 연관있는 함수와 데이터를 모으는것 

- 은닉화
외부에서 보일필요가 없는 데이터를 숨기는것 

 

접근 제한자

public   어디서든 접근가능
private  클래스 밖에서는 접근이 안됨
protected  상속받은 클래스에서는 접근 가능함

함수 또는 변수 앞에 위에 속성들을 붙혀서 정보를 은닉 할 수 있음.

ex:)

* static

class를 통한 별도의 인스턴스나 객체를 생성하지 않고도, 바로 class 내부의 함수 및 인자를 사용할 수 있는 방법

ex :)

const test = new coffeeMaker();
test.makeMachine(10)

요렇게 함수호출을 해야 되던것을 static 을 붙히면

const test = CoffeeMaker.makeMachine(10)

요렇게 바아로 class 에 접근해서 사용가능하다.

위와같이 생성자 함수로 사용할때 붙히면 좋을것같다.

 

2. 추상화

외부에선 내부의 지정된 함수만 이용할 수 있는것
클래스 안의 많은 만든 함수중 외부에서 호출될 함수를
제외한 나머지 함수를 private 시키는것

ex :)

 

coffee 를 만드는 class 이다.

보이는 것 처럼 나는 외부에서 makeCoffee() 함수만 호출해서 class 를 사용하고 싶다.

외부에서 호출 할 필요가 없는 함수들은 접근제어자 private 를 이용해서 외부에서는 노출을 막는다.

class 를 생성자함수로 호출 한뒤

makeCoffee()를 호출하였다.

또한 interface 를 이용해서 추상화를 할 수도 있다.

너무 길어질것 같으니.. 밑의 링크로..

https://limhoooo.tistory.com/24

 

abstract


보통 부모클래스에서 abstract 를 선언해놓고
abstract 선언한 클래스는 외부나 내부에서 호출하지않고
무언가 로직선언만 한 후 
자식클래스에서 상속받아서 사용하는방법
또한 클래스안의 함수에서 abstract 를 선언한
함수를 상속받을땐 함수안의 로직을 사용하지않고
상속받은 자식 클래스에서 로직을 재정의 하여 사용가능

 

3. 상속성

말그대로 상속

상속을 이용해서 코드의 재사용성을 높힐수 있다.

부모 클래스를 자식 클래스에서 extends 로 받아오면

자식 클래스에서 부모클래스에 있는 함수를 덮어 씌울수 있는 오버라이딩이 가능하다.

또한 super 를 이용해서 부모 클래스의 함수 호출 가능하다.

* 참고 
상속만 받다간 관계도가 꼬일 수 있다
상속은 부모클래스를 하나만 받을 수 있다.

- compostion
extends 로 class 를 상속 받는것이 아닌
constructor() 를 통해 생성자에 class 를
변수로 지정해서 가져옴

 

4. 다형성

하나의 인터페이스나 또는 부모의 클래스를 상속한 자식클래스들이
인터페이스와 부모클래스에 있는 함수들을 다른방식으로 다양하게 구성함으로써
조금 더 다양성을 만들어 볼 수 있는 것을 말한다.

ex :)

부모 클래스와 상속받은 자식 클래스들을 machines 라는 배열 안에 넣어서

공통된 api 를 호출 할 수도 있고

다양한 동작을 할 수 있게 된다.

'TypeScript' 카테고리의 다른 글

[React + TypeScript] 이벤트 핸들러 정리  (0) 2023.03.30
[React + TypeScript] React.FC 변경된점 과 사용법  (0) 2023.03.29
[TypeScript] Conditional Type  (0) 2021.11.09
[TypeScript] Mapped Type  (0) 2021.11.09
[TypeScript] generic  (0) 2021.11.04