반응형
designgurus의 객체지향 코스를 수강하면서 관련 내용을 정리 중입니다.
객체 지향 설계란?
- 객체 중심으로 프로그램을 설계하고 개발하는 프로그래밍 스타일
- 절차 지향 : 각 블록은 데이터를 조작하기 위한 단계
- 객체 지향 : 데이터와 데이터와 관련된 기능을 객체 안에 포장
객체 지향의 재료
- 객체: 객체는 현실의 실체와 OOP의 기본 빌딩 블록을 나타냅니다.
- 예를 들어 온라인 쇼핑 시스템에는 장바구니, 고객, 제품 항목 등과 같은 각 객체가 있습니다.
- 클래스 : 클래스는 객체를 위한 설계도, 프로토타입 입니다.
- 객체의 속성, 상태, 데이터, 필드
- 객체의 함수, 동작 ,행동, 메서드
- 예를 들어 온라인 쇼핑 시스템에서 고객 객체는 배송 주소, 신용 카드 등과 같은 속성과 주문, 주문 취소 등의 메서드를 갖습니다.
객체 지향의 4 원리
캡슐화(Encapsulation)
- 관련 있는 데이터를 객체 안에 묶어 외부 세계로부터 숨김
- 다른 객체는 해당 객체의 상태에 직접 접근할 수 없음
- 퍼블릭 메서드를 통해서만 상태의 정보를 얻을 수 있음
- 반드시 getter여야 할 필요가 없음
- 상태의 변이를 일으킬 수도 있음
- 커맨드 혹은 쿼리
추상화(Abstraction)
캡슐화의 확장
객체에 대해 필요한 정보만 남기고 나머지는 숨김(인터페이스)
- 객체가 서로 통신하는 대규모 시스템은 코드 베이스를 유지하기 매우 어려움
- 서로에 대해 너무 잘 알게되면 한 모듈의 변경 여파가 커자게 됨
- 통신을 위한 인터페이스는 그대로 냅두고 내부 구현만 고칠 수 있음
추상화는 개체의 내부 구현 세부 정보를 숨기고 다른 개체와 관련된 작업만 표시함으로써 유지보수에 도움됨
상속(Inheritance)
상속은 기존 클래스에서 새 클래스를 만드는 메커니즘입니다.
다형성(Polymorphism)
- 다형성(Polymorphism)(그리스어로 "많은 형태"를 의미)은 객체가 다른 형태를 취할 수 있는 능력(서브클래스)
- 다른 형태 : 하위(상속, 확장) 클래스
- 문맥(컨텍스트;형태;서브클래스 종류)에 따라 동일한 메시지에 다른 방식으로 응답할 수 있음을 의미함
체스 게임을 예로 들어 보겠습니다.
체스 말은 비숍, 캐슬 또는 나이트와 같은 다양한 형태를 취할 수 있으며
이러한 모든 말은 '이동' 메시지에 다르게 반응합니다.
반응형
'FrontEnd' 카테고리의 다른 글
Vue3 컴포넌트 디자인 패턴 : Renderess Component / Compound Component (0) | 2022.12.31 |
---|---|
[객체지향설계] 객체지향 설계 및 분석 : UML과 Use Case 다이어그램 (0) | 2022.12.30 |
프론트엔드 성능 최적화 : layout thrashing 피하기 with requestAnimationFrame (0) | 2022.12.29 |
브라우저의 이벤트 루프와 렌더링의 관계에 대해 알아보자 (2) | 2022.12.28 |
[번역] JS 번들 분할의 모든 것 (0) | 2022.12.26 |