[SEB_FE] 객체 지향 프로그래밍 / 클래스와 인스턴스 / OOP

seunghyo·2023년 3월 15일
0

SEB_FE

목록 보기
16/38
post-thumbnail

1_객체 지향 프로그래밍


하나의 모델이 되는 청사진(class)을 만들고, 그 청사진을 바탕으로 한 객체(instance)를 만드는 프로그래밍 패턴

  • 클래스는 함수로 정의할 수 있다
function Car(Brand, Name, Color){
...
}//ES5
class Car{
constructor(Brand,Name,Color){
} //ES6, 최근에는 이 방법을 주로 사용한다.(constructor생성자함수)
}
  • 생성자 함수는 return 값을 만들지 않는다.
let avante = new Car('hyundai', 'Avante', 'black');
  • 각각 인스턴스는 car라는 클래스의 고유한 속성과 메소드를 갖는다.
  • this는 인스턴스 객체를 의미한다.
  • prototype이라는 키워드를 사용해야 메서드를 정의할 수 있는 ES5
  • 인스턴스를 만들 때는 new 키워드를 사용한다. 이때 생성자 함수가 실행되며, 변수에 클래스의 설계를 가진 인스턴스가 할당된다.
//mdn 참고, ES5
function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

const car1 = new Car('Eagle', 'Talon TSi', 1993);

console.log(car1.make);
// Expected output: "Eagle"

2_클래스와 인스턴스


클래스는 일종의 원형(original form), 객체를 생성하기 위한 아이디어이다. 클래스는 객체를 만들기 위한 생성자 함수를 포함한다. 인스턴스는 클래스의 사례(instance object)이다.

  • 상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 prototype이라는 속성에 정의
//mdn
function Person(first, last, age, gender, interests) {

  // 속성과 메소드 정의
  this.first = first;
  this.last = last;
//...
}

var person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
  • 자동차에는 색상, 가격 같은 속성이, 후진 전진과 같은 기능이 메서드로 존재한다.

3_OOP Concept

캡슐화, 상속, 추상화, 다형성

  1. 캡슐화
  • 데이터와 기능을 따로 정의하지 않고, 하나의 객체에 묶는 것.
  • 은닉: 구현은 숨기고 동작은 노출시킴
  1. 추상화
  • 실제 노출되는 부분은 단순하게 만듦
  • 인터페이스 단순화
  1. 상속
  • 부모클래스의 특징을 자식 클래스가 물려받음
    즉, 기본 클래스의 특징을 파생 클래스가 상속받는다.
  1. 다형성
  • 다양한 형태
  • 객체에서 똑같은 메서드라도 다른 방식으로 구현될 수 있다.

0개의 댓글