OOP란?
- Object Oriented Programming 객체지향 프로그래밍의 약자
- 객체의 관점에서 프로그래밍 하는 것을 말한다.
- Object(객체) = 대상(구성 요소) / Class = 객체가 갖는 속성 또는 메소드를 정의
- 예전부터 늘 흔하게 들었던 예시가 있다. (아직 이것 만한 예시가 없어서 일까?ㅎ)
붕어빵 틀은 붕어빵을 찍어내는 행동을 가진 Class / 찍어 나온 붕어빵은 Object
--> Class + 커스타드크림 = 슈크림 붕어빵(Object)
Class + 초코크림 = 초코 붕어빵(Object)
- 객체지향을 사용하면 코드의 중복을 줄일 수 있어 가독성과 생산성이 높아진다.
그리고! 제일 좋은 장점은 유지보수 및 확장성이 높아지는 것!👍
OOP의 4가지 특성
1. 캡슐화(Encapsulation)
- 서로 연관되어 있는 데이터와 함수들을 결합시키는 것. 흔히 말하는 정보은닉화 하여 데이터들을 관리하는 것.
- 핵심은 외부에서 접근을 허용하고 싶지 않을 때 사용된다는 것이다.
- 데이터와 함수의 허용여부 결정해주는 방법 => 접근제한자(access modifier) 문법 사용
ㄴ public : 클래스 외부에서 제한 없이 접근 가능
ㄴ private : 클래스 내부에서만 접근 가능. 외부에서는 존재를 모름.
ㄴ protected : 상속한 하위 클래스에서만 접근 가능
2. 추상화(Abstraction)
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것. 상위 카테고리를 붙이는 느낌이라면 이해가 쉬울 것 같다.
- 내부에서 구현하는 상세한 내용들을 외부에서는 직접적으로 신경 쓰지 않고 구현한 기능만 가져다 쓰는 것.
- 인터페이스(함수) 만을 통해 사용되어진다. => A implements B (A는 B를 구현한다)
interface IAnimal { // 인터페이스 앞에 I를 붙여 표현
eat() : number;
}
class Dog implements IAnimal {
}
3. 상속성(Inheritance)
- 상위 개념의 특징을 하위 개념이 물려 받아 사용하는 것.
- 쉽게 말하자면, 부모로부터 상속 받는 것. protected 접근 제한자 사용된 항목도 가져다 쓸 수 있다.
- super를 통해 부모의 함수에 접근할 수 있다.
- A extends B (A는 B를 확장한다 / B가 부모클래스가 됨)
- 주의 !
ㄴ constructor가 private일 경우 상속이 되지 않음. public, protected를 사용해야 상속이 된다는 말!
ㄴ 자식 클래스에서 constructor는 반드시 super를 호출해야함.
ㄴ 상속은 두가지 이상 할 수 없고, 부모클래스에서 변화가 있을 경우 그대로 자식 클래스에서도 영향이 있음.
4. 다형성(Polymorphism)
- 부모클래스에서 물려받은 가상 함수를 자식 클래스에서 오버라이딩(overwriting) 되어 사용되는 것.
즉, 다양하게 사용성을 넓히는 것.
'TypeScript' 카테고리의 다른 글
Type Script_09 Type alias와 Interface 차이👀 (0) | 2021.04.16 |
---|---|
Type Script_08 Generics (제네릭) (0) | 2021.04.16 |
Type Script_06 타입 추론 & 단언 (Inference & Assertion) (0) | 2021.04.16 |
Type Script_05 Intersection Type (인터섹션 타입) (0) | 2021.04.16 |
Type Script_04 타입스크립트의 꽃🌹 Type Alias & Union Type (0) | 2021.04.16 |
댓글