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

daun·2022년 5월 25일
0

개념

객체지향 프로그래밍(Object Orienred Programming)은 하나의 모델을 만들고, 그 모델을 바탕으로 객체를 만드는 프로그래밍 패턴이다.

JS에서는 이미 객체라는 개념이 존재, 따라서 용어 구분이 필요함
(JS에서 쓰이는 데이터타입 객체와 객체 지향프로그래밍의 객체는 다른 것!)

객체지향프로그래밍 언제 쓰는가?

객체지향이 무조건 좋은건 아님
하나의 프로그래밍 방법론일 뿐!
만약, 메모리 관리가 중요하다면?-> 메모리 적게 쓰는 절차지향
사람들과의 협업이 필요하다면?-> 코드 이해가 쉬운 객체지향

객체지향 프로그래밍 기초용어

  • 클래스 : 모델, 인스턴트 객체를 만드는 주물틀같은 역할
  • 인스턴트 : 모델을 바탕으로 만든 객체(instance object)

OOP basic concept

  • 캡슐화 : 코드의 데이터 은닉
  • 추상화 : 단순한 이름으로 정의, 클래스 사용시 필요치 않은 메서드 노출x
  • 상속 : 부모 클래스 특징을 자식 클래스가 물려받음
  • 다형성 : 동일한 메서드도 객체에 따라 다르게 작동 (if문 그만...)
  • 캡슐화 : 이해안감..
  • 다형성 예시 : 자식클래스에서 오버라이드 가능

객체 지향 프로그래밍 도식화

class(클래스)

  • 인스턴트 객체를 만드는 주물, 뼈대 같은 역할을 한다.

instance(인스턴스)

  • class를 바탕으로 한 객체

new키워드

  • instance 객체를 만들기 위해서는 new키워드를 써야한다.

생성자함수

  • class에서 intance객체를 만들기 위한 함수 정의

ES5 작성 문법

  • class 생성과 속성 정의
function Car(brand,name,color){
// 인스턴스가 만들어질때 실행되는 코드
	this.brand=brand; // brand 속성을 정의
	this.name=name; //name 속성을 정의
	this.color=color; // color 속성을 정의    
} Car.prototype.drive = function(){ // class의 drive 메소드 정의
	// drive 메소드를 구현하는 코드
    console.log(this.name+' 가 운전을 시작합니다.')
}
  • instance 사용하여 객체 만들기
let avante= new Car('hyundai','avante','black')

ES6 작성 문법

  • class 생성과 메소드 정의
class Car{
	constructor(rand,name,color){
	// 인스턴스가 만들어질 때 실행되는 코드
    this.brand=brand; // brand 속성을 정의
	this.name=name; // name 속성을 정의
	this.color=color; // color 속성을 정의
  }  drive(){ // class의 drive 메소드 정의
  	// drive 메소드를 구현하는 코드
    console.log(this.name+' 가 운전을 시작합니다.')
  }
}
  • instance 사용하여 객체 만들기 (ES5와 같음)
let avante= new Car('hyundai','avante','black')
profile
Hello world!

0개의 댓글