객체지향 프로그래밍

배병일 ㅣ 2023. 8. 4. 16:52

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

객체 지향 프로그래밍 이미지 예시

 

객체

 

"자바스크립트의 객체는 키(key)과 값(value)으로 구성된 프로퍼티(Property)들의 집합이다."

 

인터넷을 찾아보면 흔히 나오는 정의임. 즉, JS에서 객체란 거의 모든 것들이 객체라 볼 수 있음.

( JS가 객체 지향적 언어이기 때문)

 

 

 

객체 지향 프로그래밍

 

프로그래밍에서 필요한 데이터를 추상화시켜, 상태와 행위(변수, 함수(메서드)) 를 가진 객체를 만들고,

 

그 객체들 간의 상호작용(상속,캡슐화) 을 통해 로직을 구성하는 프로그래밍 방법.

 

 

 

1. 추상화 - 프로그래밍을 할 때 공통 되는 속성, 행위를 묶어 타입을 정의하고, 간단하게 만드는 것.


 

클래스 - 필요한 데이터를 "추상화" 시킨 "틀"

 


 

"추상화" 를 통한 최상단 ( 부모 ) Player 클래스

class Player {
	construtor(name,age) {
    	this.name : name,
        this.age : age
    }
}

2. 상속 - 부모클래스의 속성,기능을 재사용

 

class Player {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    return `나의 이름은 ${this.name}이고, 나이는 ${this.age}살입니다. `;
  }
}

class FirstUser extends Player {}

const test = new firstUser("배병일", 23);

console.log(test.sayHello()); // 나의 이름은 배병일이고, 나이는 23살입니다.

 

부모 클래스 Player 를 상속받은 FirstUser 클래스.

 

firstUser 클래스 를  test로 인스턴스화.

 

test.sayHello 로 부모 클래스 sayHello 메서드에 접근 가능한 걸 확인함.

 

인스턴스 - 클래스에 들어 있는 (정의한) 것을 토대로 실제 메모리에 할당시켜 사용되는 데이터.

( 인스턴스화를 하지 않으면 클래스안에 들어 있는 메서드들을 사용하지 못함.

  즉, 클래스 내부에 접근 하기 위한 방법이라고 생각하면 편함. )

 

class Player {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    return `나의 이름은 ${this.name}이고, 나이는 ${this.age}살입니다. `;
  }
}

class FirstUser extends Player {
	sayHello() {
  	return "hello";
  }
}

const test = new firstUser("배병일", 23);

console.log(test.sayHello()); // hello

자식 클래스 FirstUser 에서 부모 클래스에 있는 메서드를 똑같이 만들고

 

결과 값을 수정 하면 다르게 출력되는 것도 확인.


캡슐화, 다형성 이 있는데 이 부분은 조금 이해하기가 어려워 따로 작성 할 예정.

'Javascript' 카테고리의 다른 글

Execution Context (실행 컨텍스트)  (1) 2024.02.15
JavaScript 동작 원리  (0) 2024.02.15
객체 지향 생성자 ( Constructor )  (0) 2023.08.04
enum에 쉽게 value 지정하기  (0) 2023.07.26
javascript 에서 enum 사용  (0) 2023.07.25