객체 지향 프로그래밍

YEN J·2022년 9월 21일
0

code states

목록 보기
15/43

객체 지향의 특징

  • 코드를 추상화 -> 직관적 이해 가능
  • 속성과 메서드(데이터와 기능)를 묶어서 처리 -> 하나의 객체라는 개념에 포함, 클래스(Class)라고 부름
    • JavaScript는 객체 지향 언어이다(x)
    • JavaScript는 객체 지향 패턴으로 작성할 수 있다(o)

객체 지향 프로그래밍(OOP)

  • 프로그램 설계 철학 중 하나
  • 객체(속성과 메서드가 존재)로 그룹화
    • 객체 생성 시 메모리 상에서 반환되기 전까지 객체(속성, 메서드) 유지
  • 4가지 주요 개념을 통해 재사용성 획득
    • 캡슐화, 상속, 추상화, 다형성

클래스와 인스턴스

  • 클래스: 속성이 들어가지 않은 청사진
    • 객체를 만들기 위한 생성자 함수 포함
    • 생성자를 통해 속성을 넣음
  • 인스턴스: 클래스를 통해 만들어진 객체

OOP의 4가지 주요 개념

  • Encapsulation(캡슐화)
    • 데이터와 기능(속성과 메서드)을 하나의 객체 안에 넣어 묶는 것
    • 느슨한 결합(Loose Coupling)에 유리: 원할 때 구현 수정 가능
    • 캡슐화는 “은닉화”의 특징도 포함
      • 은닉화: 내부 데이터나 내부 구현이 외부로 노출되지 않도록 하는 것
        -> 데이터나 구현은 숨기고, 메서드(동작)만 노출시킴
  • Abstraction(추상화)
    • 복잡한 내부 구현과 달리 단순한 인터페이스 구현하는 것
    • 예기치 못한 변화의 영향을 줄임
    • 캡슐화는 데이터의 ‘은닉’에 focusing, 상속은 클래스를 ‘단순’한 이름으로 정의하는 것에 focusing
    • 인터페이스: 클래스 정의 시, 메서드와 속성만 정의한 것(추상화의 본질)
  • Inheritance(상속)
    • 기본 클래스(부모)의 특징을 파생 클래스(자식)가 물려받는 것
      • 즉 부모 클래스의 속성이나 메서드를 자식 클래스가 그대로 물려받아 사용 가능(속성이나 메서드 추가 가능)
  • Polymorphism(다형성)
    • 다양한 형태를 가지는 것 -> 단일 작업을 다른 형태로 수행하는 것
      • ex) 같은 이름의 메서드가 조금씩 다르게 작동

0개의 댓글