Section 2 - unit2[객체 지향 프로그래밍]

정호재·2023년 1월 13일
0

코드스테이츠

목록 보기
11/37

클래스와 인스턴스

클래스와 인트턴스

클래스

  • 특정 인트턴스(객체)를 생성하기 위해 변수, 매소드를 정의하고 있는 청사진과 같은 역할을 함
  • ES5에서는 함수 정의하듯 정의하고
  • ES6에서는 class 문법과 생성자(constructor)을 사용해 클래스 생성
    ++ 생성자는 반환값이 존재하지 않음

인스턴스

  • new를 사용해 생성자 함수를 실행하고 클래스의 틀(청사진, 설계)를 바탕으로 한 새로운 객체를 생성함

this

  • 클래스 내부에 사용하는 this는 인스턴스를 가르키며 인스턴스 객체에 해당하는 변수에 값을 할당한다는 의미

메서드

  • ES5 prototype(원형 객체)을 사용해 메서드 추가
  • ES6 class 내부에   메서드명(){}   와 같은 형태로 정의
  • 함수가 실행 될때, 해당 스코프마다 생성되는 고유의 연산 범위 (실행 context)

ES5 방식의 클래스-인스턴스 예시

function Car(brand, name, color){
    this.brand = brand;
    this.name = name;
    this.color =color;
}
Car.prototype.drive = function(){
    console.log(this.name + '운전 시작~!')
}
let avante = new Car('Audi','A3','black');
avante.color;
avante.drive();

ES6 방식의 클래스-인스턴스 예시

class Car {
    constructor(brand, name, color){
        this.brand = brand;
        this.name = name;
        this. color = color;
    }
    drive(){
        console.log(this.name + ' 이/가 운전을 시작합니다');
    }
}

let avante = new Car('Audi','A8','gray');
avante.color;
avante.drive();

객체 지향 프로그래밍

: 프로그램을 만들기 위해 필요한 데이터 및 기능을 통합 관리를 위해 객체를 생성하고 객체들의 역할을 구분한 후 객체 간의 상호작용을 통해 설계하는 것을 말함
++ 추가로 javascript는 객체 지향 언어는 아니지만 객체 지향 패턴 작성 가능

객체 지향 프로그래밍(OOP)의 기본 개념 4가지

캡슐화

  • 객체 내부에서 데이터와 매소드를 느슨하게 결합하는 것으로 객체의 기능 및 역할을 주는 방법
  • 은닉화의 효과가 있어 데이터 변경에 의한 오류 상황 영향을 줄여주는 효과
  • 캡슐화가 이루어진 객체는 재사용이 가능 (재사용성)

추상화

  • 사용자의 인터페이스에 주요한 기능만들 노출해 변수상황을 줄이고 주요한 부분에 집중할 수 있도록 한다는 방법 (단순화)

상속성

  • 부모 클라스에 정의된 특징(매소드,변수)들을 이어받아 클래스를 생성하고 추적인 특징을 부여해 활용하는 방법 (재사용성)

다형성

  • 부모 클래스로 부터 이어진 특징이 각 인턴스의 고유한 방식으로 다양하게 동작할 수 있는다는 방법 ( 오버로딩 & 오버 라이딩 ) (고유다양)

기타

[javascript에 해당 사항 없음]

private 키워드

  • 캡슐화와 정보보호를 위해 클래스 내부에서만 사용접근이 가능하도록 접근을 제어하는 키워드
  • 협업들의 활동에서 변경되는것을 막을 수 있지만 활용성이 낮아짐

inteface 키워드

  • 다양한 방법으로 인터페이스를 구현에 타입을 정의해 인자를 명시적으로 사용할 수 있게 할 수 있으며 재사용 또한 가능함
  • 인터페이스를 통한 내부의 로직은 숨긴채로 모듈의 동작기능 표현 가능

<이어서 작성할 예정>

profile
공부 일기장

0개의 댓글