ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체 지향 프로그래밍(1) - 자바스크립트에서 object 생성 방법
    JavaScript 2020. 6. 17. 18:07

    OOP(Object Oriented Programming) / 객체 지향 프로그래밍

    1) 객체를 기반으로 하는 프로그래밍 패러다임.

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

      * 객체(Object) : 서로 연관된 변수와 함수를 그룹핑한 것, 객체 내의 변수를 property, 함수를 method라고 한다.

     

    3) 객체 지향 프로그래밍의 4가지 특징

    • 캡슐화(encapsulation) : 변수와 함수를 하나의 함수로 묶는 것을 말한다. 사용자에게는 사용법만 알려주고 내부가 어떻게 되있는지는 숨길 수 있다. 이런 컨셉을 정보의 은닉화 또는 캡슐화라고 부른다.
    • 상속(inheritance) : 자식(sub) 클래스가 부모(super) 클래스의 기능을 받아서 쓰는 것. 어떤 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 말한다.
    • 추상화(abstraction) : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 불필요한 정보는 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 간단한 구조, 즉 클래스를 만드는 일련의 과정을 말한다.
    • 다형성(polymorphism) : 부모 클래스로부터 상속을 받아 똑같은 기능이지만 다른 내용을 추가함으로써 차별점을 있는 특성.

    JavaScript에서 Object를 생성하는 방법

    1. 객체 리터럴 방식

    : 중괄호 {} 안에 property : value 쌍을 입력하고 쉼표(,)로 다른 property : value 쌍과 구분한다.

    let book1 = {
      title: 'little Woman',
      author: 'L.M.ALCOTT',
      price: 16500
    }    

     

    2. 생성자 함수 방식

    : '생성자'는 객체를 만드는 역할을 하는 함수다. 함수를 호출할 때 new를 붙이면 새로운 객체를 만든 후 이를 리턴한다. 생성자 함수는 일반 함수와 구분하기 위해 첫 글자를 대문자로 표기한다. 생성자 함수 내에는, 반환될 객체가 어떤 변수와 메소드를 가져야 하는지를 기술해줌으로써 , 그 객체가 가지고 있는 정보, 그리고 그 객체가 할 수 있는 일을 세팅해준다. 이것을 초기화(initialize)라고 한다.

     

     1) ES5 문법에서의 생성자 함수 및 프로토타입

    function Car(brand, name, color){ // 생성자 함수 Car를 초기화 한다.
      this.brand = brand; // 생성자 함수 Car를 통해 반환될 객체의 property를 정의하고 있다.
      this.name = name;
      this.color = color;
    }
    
    Car.prototype.refuel = function(){ // 생성자 함수 Car를 통해 반환될 객체의 method를 정의하고 있다.
      return '연료를 공급해주세요';
    }
    
    Car.prototype.drive = function(){
      return '운전을 시작합니다';
    }

      2) ES6의 클래스 문법

    class Car {
      constructor(brand, name, color){
        this.brand = brand; //속성을 정의하고 있다.
        this.name = name;
        this.color = color;
      }
      
      refuel() { // 메소드를 정의하고 있다.
        return '연료를 공급해주세요';
      }
    
      drive(){
        return '운전을 시작합니다';
      }
    }

    3) 인스턴스에서의 사용 예시.

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

     

     

    3. Object함수 방식

    : 인자로 전달되는 값에 따라 예기치 않은 결과가 반환될 수 있어서 추천되는 방식은 아니다.

    *참고 : https://webclub.tistory.com/513

    let book = new Object(); // 빈 객체 생성
    book.title = 'The hobbit'; // property와 value를 추가한다
    book.author = 'J.R.R. Tolkien'

    댓글

Designed by Tistory.