TIL 객체 지향 프로그래밍

flobeeee·2021년 1월 14일
0

Today I Learned

목록 보기
1/35

2021.01 공부

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

  1. 의미 : 객체를 이용해서 프로그래밍을 하자는 하나의 방법론

  2. 프로그래밍은 절차지향적 -> 객체지향적으로 발전

  3. 특징 (Encapsulation, Inheritance, Polomorphism, Abstraction)

  • 캡슐화 : 순서대로 나열하는 것이 아닌, 한 변수로 묶어서 기능별로 나눌 수 있음
  • 상속 : 속성과 기능을 상속받음
  • 다형화 : 각각의 인스턴스에 추가하는 게 아닌, 원본 객체에 추가하면 편하게 상속됨
  • 추상화 : 프로그램은 복잡하지만 사용자는 쉽게 이용할 수 있음

객체를 만들어 내는 방법 (인스턴스화 Instantiation)

  1. 함수를 이용한 방법 (Functional)

  2. 함수 공유를 이용한 방법 (Functional Shared)
    1방법을 여러함수로 나누어서 사용하는 방식

  3. 프로토타입 이용한 방법 (Prototypal)
    Object.create() 메소드 등을 이용해서 만들 수 있음
    관련링크참고

  4. Pseudoclassical ★★★★★
    가장 많이쓰는 방식 (class 문법과 원리 동일)

let Menu = function(food) {
  this.food = food;
  this.num = 0
}
Menu.prototype.add = function() {
  this.num += 1;
}

let menu1 = new Menu('치킨'); // new를 사용해야 합니다 ! 
menu1.add()
menu1.add()
console.log(menu1) // Menu { food: '치킨', num: 2 } 
console.log(menu1.food) // 치킨 
console.log(menu1.num) // 2

prototype

바로 위 예제를 통해 prototype은 Menu를참조한다는 것을 알 수 있음
console부분을 보면 'Menu.prototype.add'를 통해
Menu 안에 add 속성이 추가된다는 것을 알 수 있음

  1. 프로토타입이란 : 만들어질 인스턴스들(menu, ...)의 원형이다.

  2. 사용이유 : 원형만 수정하면, 인스턴스들이 일괄적으로 바뀌어서 효율적이다.

2023.01 공부

객체지향 프로그래밍은 객체를 활용해서 프로그래밍을 하자는 하나의 방법론이다.
기존에는 순차적, 절차적 프로그래밍을 주로 사용했지만 불편한 요소가 있어서 보완하기 위해 생겨난 게 객체지향 프로그래밍이다.
순차적 프로그래밍의 단점은 순서대로 코드를 사용하다가 다시 같은 코드를 사용하는 경우 goto문을 활용해서 다시 되돌아가는데, 규모가 커질수록 goto문이 많아져서 관리하기 어렵다.
절차적 프로그래밍은 함수와 상수,변수가 구분되어 있어서 위치상으로는 같은 곳에 있을 수 있지만 논리적으로 묶이지 않는다.
이를 보완하기 위해 함수, 변수, 상수를 논리적 구조로 묶어서 사용하는 객체지향 프로그래밍이 생겼다.

객체지향 프로그래밍에는 4가지의 특징이 있다.
1. 추상화 : 개념을 추상화하여 유연하게 설계한다. 확장성을 가질 수 있다.
2. 캡슐화 : 정보은닉을 통해 결합도를 낮춘다. private 옵션으로 내부에서만 동작하게 할 수 있다.
3. 상속 : 코드의 재사용성을 높인다. 주종관계를 설계해 조직화하여 관리가 용이해진다.
4. 다형성 : 같은 함수도 클래스에 따라 맞춰서 동작한다. 파라미터를 다르게 넣어 맞춰서 작동하게 할 수 있다. 유연성을 높인다.

참고링크(객체지향 프로그래밍 - 기술면접)

profile
기록하는 백엔드 개발자

0개의 댓글