[TIL] Object Oriented Programming

Ha Young Do·2021년 4월 9일
0

Object Oriented vs Procedural Programming

  • Procedural Programming: 절차 지향 프로그래밍. 순차적인 처리를 중시해 코드의 순서에 따른 흐름을 따르며 컴퓨터 내부의 처리 구조와 유사해 처리 속도가 빠르다. 다만, 정해진 순서를 수정하기 어려워 유지보수에 애로사항이 있다. 기존의 JavaScript가 이 패러다임을 따른다.
  • Object Oriented Programming: 객체 지향 프로그래밍. 객체라는 개념을 중심으로 만들어진 패러다임으로, 인간이 현실 세계를 인지하는 방식과 유사점이 많다. 처리 속도가 느리고 설계하는 데 시간이 오래 걸리지만 유지보수가 원활하다. 프로그램된 모든 요소는 객체로 그루핑되고, 프로그램은 객체의 집합으로 본다. 객체는 각각 속성과 메소드로 이루어진다.

Basic Concepts of OOP

  • Encapsulation
    하나의 객체 안에 관련된 속성과 메소드를 묶어서 저장하여, 외부에 노출하지 않고 하나로 묶일 수 있도록 한다. 유지보수시에 데이터의 형태가 변화하면 객체 내의 메소드 구현 방식만 바꾸고, 메소드를 사용하는 코드는 바꾸지 않아도 작동하게 한다.
  • Inheritance
    한 객체의 속성이나 메소드를 다른 객체가 받아서 사용할 수 있게 한다. 한 객체를 베이스로 한 다른 객체를 만들 때, 처음부터 다시 만들 필요 없이 중복된 코드를 없애 준다.
  • Abstraction
    내부 구현은 복잡하더라도, 외부에 노출되는 기능은 단순하게 보여 준다. 코드의 사용자가 필요한 부분만 간편하게 접근할 수 있는 interface를 구성해 주고, 사용자에게 노출되지 않아야 할 코드를 숨기는 은닉화의 기능도 한다.
  • Polymorphism
    객체의 메소드 혹은 속성이 다양한 형태를 가질 수 있게 한다. 부모 객체의 속성을 자식 객체가 상속하는 경우, overriding을 통해 속성이나 메소드 등을 덮어 씌워 같은 메소드로 다른 기능을 실행하도록 할 수 있다. 이 경우 불필요한 if/else if문을 줄이는 데도 도움이 된다.

Prototype

Javascript는 프로토타입 기반 언어라고 불린다. 객체를 처음 만들 때에 프로토타입 객체를 청사진으로 두고 그것을 기반으로 메소드와 속성을 상속받는다. 하나의 프로토타입 객체는 다른 프로토타입 객체를 부모로 두고 그 부모 프로토타입 객체로부터 속성과 메소드를 상속받을 수 있다. 이렇게 여러 프로토타입이 상속관계로 연결되는 현상을 prototype chain이라고 부른다.

profile
Codestates Software Engineering Full IM 28th

0개의 댓글

관련 채용 정보