[TIL : 17] 객체지향

jabae·2021년 11월 4일
0

TIL

목록 보기
17/44

Achievement Goals

  • 클래스와 인스턴스라는 용어를 이해할 수 있다.

    yes! 🙌
    전체적인 청사진, 원형을 클래스라고 한다. 인스턴스는 클래스를 바탕으로 만드는 것이 인스턴스 객체이다. 객체를 영어로 하면 인스턴스다.

  • new 키워드의 사용법을 이해할 수 있다.
  • class 키워드의 사용법을 이해할 수 있다.

    yes! 👏

    class Car {
        constructor(brand, name, color) {
        	this.brand = brand;
        	this.name = name;
        	this.color = color;
        }
    };
    
    let car1 = new Car('hyundai', 'avante', 'blue');
    console.log(car1) // Car {brand: 'hyundai', name: 'avante', color: 'blue'}
    
    let car2 = new Car('BMW', 'mini', 'orange');
    console.log(car2) // Car {brand: 'BMW', name: 'mini', color: 'orange'}
  • 현실 세계의 모델을 바탕으로 클래스의 메소드와 속성을 디자인할 수 있다.

    yes! 👍
    메소드: 행동과 관련된 것, 함수같은 것 (사람: 밥먹기, 잠자기, 걷기 등/차: 연료소비, 주행거리 등)
    속성: 고정할 수 있는 변수같은 것 (사람: 이름, 성별, 나이 등/차: 브랜드, 이름, 색깔)

    class Human {
        constructor(name, age, gender) {
        	this.name = name;
        	this.age = age;
        	this.gender = gender;
            this.health = 0;
        }
        sleep () { 
        this.health += 8;
        }
        eat () { 
        this.health += 6;
    	}
    }
  • 객체 지향 프로그래밍 특징을 이해할 수 있다.

    객제 지향 프로그래밍(Object Oriented Programming)은 데이터와 기능을 한번에 묶어서 처리할 수 있다. 따라서 초기에 절차적으로, 순차적으로 진행되었던 데이터 처리 방식과 다르게 데이터 처리 과정을 모형으로 만들어 처리한다. 구체적인 특징으로는 캡슐화, 상속, 추상화, 다형성이 있다.

    • 캡슐화: 데이터와 기능을 하나의 단위로 묶는 것이다. 구현은 숨기고 동작은 노출시킨다. 또 언제든 구현 수정이 가능하다. 따라서 복잡성은 줄이고 재상용성을 높인다.
    • 상속: 부모 클래스의 특징을 자식클래스가 물려받는다. 불필요한 반복을 줄일 수 있고 재사용성을 높인다
    • 추상화: 실제로 노출되는 부분을 단순화시켜 인터페이스를 단순하게 만들어 준다. 단순화된 사용으로 예기치 못한 변화를 줄여준다.
    • 다형성: 동일한 메소드에 대해 조건문 대신 객체 특성에 맞게 다르게 쓰인다.
  • JavaScript에서 객체 지향 프로그래밍을 구현할 수 있다.

    yes! 👏

  • Prototype이 무엇인지 이해할 수 있다.

    yes! 👌

  • 객체 지향 프로그래밍의 상속(Inheritance)의 개념을 이해하고 코드로 작성할 수 있다.

    yes! ✌️

  • 상속관계를 가진 현실 세계의 모델을 코드로 작성할 수 있다.

    yes! 🤓
    extends, super를 이용해 상속받을 수 있다. 예를 들어 학생이란 클래스가 있다면, 학생은 인간이므로 인간의 속성과 메소드를 지닌다.

    class Human {
        constructor(name, age, gender) {
        	this.name = name;
        	this.age = age;
        	this.gender = gender;
            this.health = 0;
        }
        sleep () { 
        this.health += 8;
        }
        eat () { 
        this.health += 6;
    	}
    }
    class Student extends Human {
        constructor(name, age, gender, grade) {
        	super(name, age, gender)         // 부모클래스(Human)로부터 상속 받는다.
        	this.grade = grade;
        }
        study () {
        this.health -= 4;
        }
    }
  • 클래스 상속의 원리를 이해할 수 있다.

    yes! 🤗

  • Prototype chain을 이해하고 설명할 수 있다. (proto)

    yes! 😁

profile
it's me!:)

0개의 댓글