[CS] 객체지향 프로그래밍

Yongwoo Cho·2022년 5월 23일
0

TIL

목록 보기
69/98
post-thumbnail

객체지향 프로그래밍

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임이다.

특징

추상화

  • 객체들의 공통적인 특징을 도출하는 것
  • 객체 지향 프로그래밍에서 일반적으로 추상 자료형을 클래스, 추상 자료형의 인스턴스를 객체, 추상 자료형에서 정의된 연산을 메소드(함수), 메소드의 호출을 생성자라고 한다.

캡슐화

  • 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보은닉 가능
  • 객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어서 관리하는 것

상속성

  • 하나의 클래스가 가진 특징을 다른 클래스가 그대로 물려받는 것
  • 클래스 간의 종속 관계를 형성함으로써 객체를 조직화할 수 있다.

다형성

  • 약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출하는 것
    • 오버라이딩
      부모클래스의 메소드와 같은 이름을 사용하며 매개변수도 같지만 내부 소스를 재정의하는 것
    • 오버로딩
      같은 이름의 함수를 여러 개 정의한 후 인자의 개수나 자료형에 따라서 호출하여 사용하는 것

동적 바인딩

  • 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로 컴파일 시간에 완료되어 변화하지 않는 정적 바인딩과 대비되는 개념

클래스 기반 vs 프로토타입 기반

클래스 기반

  • class를 이용하여 속성과 행위를 정의한다.
  • 정확성, 안정성, 예측 가능성 등의 관점에서 보면 클래스 기반의 언어가 프로토타입 기반의 언어보다 우수한 결과를 보장
  • ex) Java, C++

프로토타입 기반

  • class가 없음 (ES6에서 class가 생기긴 했지만 이는 사실 함수이며 프로토타입 기반의 문법적 설탕)
  • 동적으로 자유롭게 객체의 구조와 동작 방식을 바꿀 수 있다는 장점
  • ex) Javascript

❓ 클래스가 없는데 객체를 어떻게 만들까
👉 객체 리터럴, Object()생성자 함수, 생성자 함수

profile
Frontend 개발자입니다 😎

0개의 댓글