객체 지향 프로그래밍

devPomme·2021년 1월 14일
0
  • OOP(Object Oriented Programming) 이해하기
  • JavaScript에서 Object를 생성하는 여러가지 방법들
  • JavaScript에서 Prototype은 무엇이고 왜 사용해야할까?

객체 지향 프로그래밍(OOP)

  • 컴퓨터 프로그래밍은 알고리즘의 모음이다.

객체지향적(Object Oriented)

  • OOP는 특정 언어나 라이브러리가 아니라, 프로그래밍 철학(패러다임)이다.
  • 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 본다.
  • 객체에는 상태와 행위(함수)가 담기고, 그 객체들간의 상호작용을 통해서 알고리즘을 구성하는 방식이다.
  • 코드 재사용이 용이하고, '상속'을 통해서 확장해서 사용할 수도 있다.
  • 클래스 내부의 메소드나 변수만 수정해서 유지보수를 할 수 있다.
  • 클래스 단위로 모듈화할 수 있다.

만약 고양이를 프로그래밍한다면...

  • 고양이의 속성: 털 색깔(까맣다,하얗다) / 귀(짧다, 길다) / 체형(뚱뚱, 날씬) / 성격(활발, 소심)

  • 고양이의 행위: eat, sleep, cry, grooming, play, run, hide...

const Cat = function(name) {
  this.name = name;
}
Cat.prototype.sleep = function() {};

const Yatong = new Cat('Yatong');

OOP Basic Concepts

캡슐화(Encapsulation)

코드를 재수정하지 않고 재활용하기 위해서 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것

let color = 'white';
let char = 'active'
let age = 3;

function getCatInfo(color, char, age) {
  return `${color} cat is ${char} and ${age} years old.`;

⬇️

let myCat = {
  color: 'white',
  char: 'active',
  age: 3,
  getInfo: function() {
    return `${this.color} cat is ${this.char} and ${this.age} years old.`;
  }
};
myCat.getInfo();

상속(Inheritance)

부모클래스의 속성과 기능을 그대로 사용할 수 있고, 필요에 따라서는 자식클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있는 특성

Extends

extends 클래스 선언식이나 표현식에서 새로운 자식 클래스를 만들 때 사용하는 키워드

class Father {
  weight: 70,
  height: 175,
  age: 35,
  gender: 'male'
}

class Son extends Father {
  weight: 30,
  height: 135,
  age: 11,
  gender: 'male'
}

추상화(Abstraction)

내부 구조는 매우 복잡하지만 실제 사용은 매우 간단하게 할 수 있게 설계하는 것

ex) 여권(한 사람의 개인 정보가 들어있지만 생년월일, 국가, 성별 등 여행에 필요한 최소한의 신원정보만 담은 데이터)

다형성(Polymorphism)

하나의 변수(함수)명이 상황에 따라 다른 의미로 해석될 수 있다.
오버라이딩(Overriding)과 오버로딩(Overloading)이 가능하다.

profile
헌신하고 확장하는 삶

0개의 댓글