TIL 6주차 1일 - 객체 지향 JavaScript

Sang heon lee·2021년 6월 14일
0

TIL 리스트

목록 보기
26/60

학습 내용

1.클래스와 인스턴스

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

  • 객체 지향 : 어떠한 컴퓨터 언어를 사용하던지, 그 언어를 적용할수 있는 일종의 '철학' 또는 '패러다임'

  • 클래스에서 속성과 메서드를 정의하고, 인스턴스에서 이를 이용합니다.

1.1 클래스 정의

  • ES5 : 속성 & 메서드
function Car (brand, name, color) {
    this.brand = brand;
    this.name = name;
    this.color = color;
}   
Car.prototype.refuel = function (){
	코   드
}  
Car.prototype.drive = function (){
	코   드
}  
  • ES6 : 속성 & 메서드
class Car {
	constructor (brand, name, color) {   // 생성자 함수
          this.brand = brand;
          this.name = name;
          this.color = color;
	}
    
    refuel () {
       코   드
    }
    drive () {
       코   드
    }
}

1.2 인스턴스 생성

let avante = new Car ('hyundai', 'avante', 'black');
let mini = new Car ('bmw', 'mini', 'white');
let beetles = new Car ('volkswagen', 'beetles', 'red');
// new 라는 키워드를 사용하여 인스턴스를 만듬.
// 각각의 인스턴스는 Car라는 클래스의 고유한 속성과 메소드를 갖게됨.

1.3 인스턴스 사용

let avante = new Car ('hyundai', 'avante', 'black');
avante.color; // black
avante.drive() // 아반테가 운전을 시작합니다.

let mini = new Car ('bmw', 'mini', 'white');
mini.color; // white
mini.refuel() // 미니에 연료를 공급합니다.

1.4 용어 정의

  • prototype : 모델의 청사진을 만들 때 쓰는 원형 객체(original form)

  • constructor : 인스턴스가 초기화될 때 실행하는 생성자 함수

  • this : 함수가 실행 될때, 해당 scope마다 생성되는 고유한 실행 context(execution context)
    new 키워드로 인스턴스를 생성했을 때에는 해당 인스턴스가 바로 this의 값이 됨.

2.객체 지향 프로그래밍

  • 객체 지향 프로그래밍이라는 패러다임이 등장하면서, 단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 고안.
    따라서 데이터와 기능이 별개로 취급되지 않고, 한번에 묶어서 처리할수 있게 됨.

  • 자바스크립트는 엄밀히 말해 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성할수있음.

  • 클래스 : 세부사항(속성)이 들어가지 않은 청사진.

  • 인스턴스(객체) : 세부사항이 들어가 있는 청사진.

  • 생성자 함수 : 클래스에 세부사항을 넣어줄 때 사용

2.1 OOP(Object Oriented Programming)

  • 4가지 중요 기본 컨셉이 존재(캡슐화, 상속, 추상화, 다형성)

2.1.1 Encapsulation(캡슐화)

  • 하나의 객체 안에 속성(데이터)과 기능(메서드)를 묶어서 넣어놓는 것.

  • '은닉' : 구현은 숨겨놓고, 동작만 외부에 노출

  • 코드가 복잡하기 않게 만들며 재사용성을 높임.

2.1.2 Abstraction(추상화)

  • 실제로 노출되는(동작 되는) 부분을 단순하게 만든다.

  • 클래스를 사용하는 사람이 필요한 인터페이스 부분만 노출 시켜 예기치 못한 사용상의 변화를 방지한다.

  • 코드가 복잡하기 않게 만들며, 단순화 하며, 변화에 따른 영향을 최소화한다.

2.1.3 Inheritance(상속)

  • 부모 클래스의 특징(속성, 메서드)을 자식 클래스가 물려받는 것

  • 불필요한 코드를 줄여 재사용성을 높인다.

2.1.4 Polymorphism(다형성)

  • 동일한 메서드라도 각각의 클래스에서는 다른 방식으로 구현된다.

  • 동일한 메서드에 대해 클래스,인스턴스의 특성에 맞게 작성하는 것이 가능.

느낀 점 && 미비한 점

말로 이해하자니 너무 붕뜬 이야기 같고, 활용되는 걸로 이해하자니 개념이 정확하지 않아서 그런지 어떻게 활용이 되고 실제로 쓰이는지 잘 모르겠다.
공부를 더해나가면서 연관 개념이 나온다면 같이 이해하도록 노력해봐야 할거 같다.

profile
개초보

0개의 댓글