Object Oriented Programming

절차적 언어

  • 초기의 프로그래밍 언어는 일반적으로 절차적 언어라고 부름
    (C, 포트란 등)

  • 절차적 언어는 순차적인 명령의 조합

객체 지향 언어

  • "클래스"라고 부르는 데이터 모델의 청사진을 사용해 코드 작성

  • 현대의 언어들은 대부분 객체 지향의 특징을 갖고 있음
    (대표적으로 Java, C++, C# 등)

  • JavaScript: 객체 지향으로 작성 가능

OOP

  • OOP는 프로그램 설계 철학입니다.

  • OOP의 모든 것은 "객체"로 그룹화됩니다.

  • OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있습니다.

클래스와 인스턴스

  • 클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진입니다.

  • 인스턴스는 클래스의 사례(instance object) 입니다.

  • 클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함합니다.

클래스와 인스턴스

  • 속성

  • 메소드

OOP Basic Concepts

  • Encapsulation (캡슐화)

  • Inheritance (상속)

  • Abstraction (추상화)

  • Polymorphism (다형성)

캡슐화 Encapsulation

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉(hiding): 구현은 숨기고, 동작은 노출시킴
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

추상화 Abstraction

추상화 Abstraction

상속 Inheritance

상속 Inheritance

Inheritance

properties

  • name
  • sex
  • age

methods

  • sleep()
  • eat()

properties

  • name
  • sex
  • age
  • learning subject

methods

  • sleep()
  • eat()
  • learn()

Human

Student

다형성 Polymorphism

다형성 Polymorphism

Polymorphism이 없다면

if (type === 'select') {
  renderSelect()
}
else if (type === 'text') {
  renderTextBox()
}
else if (type === 'checkbox') {
  renderCheckBox()
}
//...
if/else if

OOP의 의미

사람이 세계를 보고 이해하는 방법을 흉내낸 방법론

References

마지막 슬라이드입니다

Copy of Copy of OOP (2021)

By Codestates

Copy of Copy of OOP (2021)

  • 219