실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임을 말한다. 다시 말해, 우리가 주변의 실세계에서 사물을 인지하는 방식을 프로그래밍에 접목하려는 사상을 의미한다.
객체 지향 프로그래밍(object-oriented programming, OOP) 이라 부른다.
(절차지향도 있고 둘의 차이점도 알고싶으면 참조하자)
애플리케이션을 만들 때 좋은 설계를 하기 위해서는, 기본적으로 이 객체지향을 이해하고 응용하는 것이 중요하다. 사용자 입장에서 바라보기 좋은 객체 지향 프로그래밍의 주요 개념 4가지 OOP
Encapsulation(캡슐화)
Inheritance(상속)
Abstraction(추상화)
Polymorphism(다형성)
클로저
내부 구현은 복잡하지만 외부에서 노출되는 동작은 단순하다.
전화기는 내부에 복잡한 회로와 부품으로 구현 되어있지만 사용자 입장에서는 내부를 생각하지않고 단순히 버튼만 눌러서 말 하기만 하면 해결 되는것으로 , 인터페이스를 단순화 한다.
캡슐화는 코드나 데이터의 은닉에 초점
추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
부모 클래스의 특징을 자식 클래스가 물려받는 것 기존에 존재하던 기능을 토대로 새로운 기능 추가하여 발전시킬 수 있다.
HTML에서 text, select, class, id 와 같은 모든요소를 Element 라 한다.
엘리먼트는 전부 객체이므로 각각 다른 내부적인 모양, 화면에 나타내는 메서드가 존재한다.
부모인 HTML에서 render 메서드를 상속 받아 엘리먼트를 사용한다면 메서드 이름은 같아도 화면에 각각 다르게 나타나는데 이것을 다향성이라 한다.
캡슐화
: 코드가 복잡하지 않게 만들고, 재사용성을 높입니다.추상화
: 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화상속
: 불필요한 코드를 줄여 재사용성을 높인다.다향성
: 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해집니다.사람이 세계를 보고 이해하는 방법을 흉내낸 방법론이다.
객체 지향 프로그래밍 패러다임을 따라해 보면, 사람이 세계를 보고 이해하는 방법과 매우 흡사
사용자 입장에서 개발을 해야하는 개발자가 꼭 알아야할 객체 지향 프로그래밍 OOP
객체지향을 배우는게 타입스크립트를 배우기위함이다..?