Object Oriented Programming (객체 지향 프로그래밍 )

Sasha Park·2021년 2월 27일
0

Object Oriented Programming (이하 OOP)

프로그램 설계 철학. 객체로 그룹화 하여 서로 유기적으로 동작하게 만든다. '객체 내에는 데이터와 기능이 함께 있다'라는 원칙에 따라 method와 property가 존재. 코드의 중복 제거와 유지보수를 용이하게 하는데 초점을 두고 있음.

constructor (생성자)
prototype을 바탕으로 속성을 넣은 인스턴스 객체를 만들기 위한 함수.

  • 절차적 언어
    순서대로 스크립트를 실행. 가볍고 빠른 특성.

  • 객체 지향 언어
    필요한 객체를 찾아서 실행한다. 복잡하고 정교한 기능을 구현할 수 있지만 절차적 언어에 비해 상대적으로 무겁다.

OOP Basic concepts

  • encapsulation (캡슐화)
    데이터와 method를 따로 정의하는 것이 아닌 하나의 객체 안에 넣어서 묶는 것.
    hiding (은닉화): {} 안에 작성하여 내부 데이터나 디테일한 구현이 외부로 노출되지 않도록 하는 것. 동작만 노출시킴.
    loose Coupling (느슨한 결합)에 유리. 절차적 코드의 경우, 부분 수정이 될 때 전체 코드의 흐름에 영향을 끼칠 수 있음. 객체 지향의 경우, block이 되어있으므로 코드 흐름에 영향을 최소화 할 수 있음. reduce complexity, increase reusability.

  • inheritance (상속)
    base class의 특징을 derive class가 상속는 것을 뜻함. 즉, derive class는 base class 속성과 method를 기본으로 수정/추가하는 것을 의미하는데, 이러한 작업을 'Overriding'이라 함. 코드의 재사용이 목적.

  • abstraction (추상화)
    내구 구현은 복잡하지만, interface 단순하게 만든다는 개념. ex) Kakaotalk
    캡슐화는 code & data 은닉에 focus, 추상화는 사용자가 직접적으로 쓰는 method를 가장 단순한 이름으로 정의하는 것에 focus.

  • polymorphism (다형성)
    같은 method라 해도 다른 방식으로 구현될 수 있음. 예를 들면 HTML element에서 파생된 textbox, select, checkbox는 화면에 구현되는 방식(method)가 다 다름. 그러면 파생된 3가지 element에 다 다르게 method를 적용해야 하겠지만, 관리하기가 빡셈. 그래서, 부모인 HTML element에 '화면에 구현한다'라는 본질적인 method를 주고, 세부적인 구현 방식은 파생된 element에 기재해주는게 효율적임. refactor per each object's characteristic

profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글