{22년}코드스테이츠 FE - 블로깅_객체 지향 프로그래밍(OOP)

SANGHYUN KIM·2022년 7월 22일
0

객체 지향 프로그래밍의 개념

객체 이전에는 ‘절차적 언어’라는 순차적인 명령의 조합이 존재

그러나, 객체 지향에서는 변수와 함수가 순차적으로 작동하는 것을 넘어 데이터 접금과 처리를 같이 고려하는 방안을 제시 → 데이터와 기능이 별개 취급되지 않고 한 번에 묶여서 처리

OOP

💡 프로그램 설계 철학으로 사림이 세계를 보고 이해하는 방법을 흉내 낸 방법론으로 객체로 그룹화(데이터 + 기능)하고 메모리상 반환되기 전까지 객체 내의 모든 것이 유지

4가지 개념으로 “재사용성"을 확보

  1. Encapsulation(캡슐화) ⇒ 단순화 및 재사용성

    • 데이터(속성)과 기능(메서드)를 하나의 객체로 묶는 것
    • 그런데 느슨하게 결합되어있다? : 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아닌, 코드가 상징하는 실제 모습과 닯게 코드로 모아 결합하는 것
      • 예) 마우스의 상태를 속성으로 정하고 클릭 이동을 메서드로 정해 코드만 보고도 인스턴스 객체의 기능을 상상
      • 반대 예시) 스위치 누르고 전기 신호 주고 전선을 이용하고 등등
    • (?)은닉: 내부 데이터나 내부 구현은 숨기고 동작은 노출
  2. Abstraction(추상화) ⇒ 단순화 및 변화에 대한 영향 최소화

    • 내부는 복잡한데 실제로 보이는 부분은 단순하게 만드는 것 (전화기 안의 회로는 안보이고 다이얼 패드만 보이는 것과 같음)
    • 따라서, interface(인터페이스)가 단순해짐 → 많은 것이 노출 안되기에 예기치 못한 사용상의 변화 X
      • 클래스 정의 메서드와 속성만 정의한 것이 “인터페이스”
  3. Inheritance(상속) ⇒ 불필요한 코드 작성 방지로 재사용성 증가

    • 이미 작성했던 클래스를 이용하여 다른 추가 클래스를 만들 수 있음
  4. Polymorphism(다형성) ⇒ 조건문 대신 객체의 특성에 맞게 달리 작성 가능

    • 같은 메서드라도 다른 방식으로 구현됨
      • 예) input의 render면 input버튼을 만듦, textarea의 render는 직사각형의 박스를 render
        • 모두 HTML Element 클래스에서 상속받았지만 실행은 조금씩 다름
    • 다형성이 없다면 부모 클래스에서 종류별로 분기를 하나하나 다르게 만들어야 함
profile
꾸준히 공부하자

0개의 댓글