section2 객체지향 프로그래밍

유희준·2023년 3월 15일

section2

목록 보기
3/12

객체지향 프로그래밍

여러개가 필요한 객체가 있다고 하자.

const player1 {
	name : "park ji"
	age : "35"
}

const player2 {
	name : "kim soo"
	age : "32"
}

작성하면서 생기는 문제는 반복해서 계속 작성해야 한다는 것이다. 또 반복해서 작성하던 도중 실수로 객체하나를 빼먹을 수도 있다. 나중에 실수를 찾으려고 해도 많은 시간이 걸린다. 이외 새로운 키값을 준다면 모든 플레이어 수정이 필요하기에 여러모로 불편하다.

그래서 하나에 장치를 만들어 주면 어떨까.

이때 필요한 것이 바로 class 이다.

class는 같은 속성은 갖고 있지만 데이터가 다른 경우, class가 일종의 구조 설계도 역할을 해준다.

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

const player3 = new player("hee joon", 27)
const player4 = new player("lee hun", 23)

class를 만들면 이전처럼 코드를 복사해서 사용할 필요가 없어진다.

그리고 속성에 접근할 수도 있다.

console.log(player3.age);

클래스에서 새 객체를 만들 때 ‘constructor’ 메서드가 사용된다.

이때 constructor는 함수처럼 인수를 받을 수 있다.

this는 플레이어 클래스 내의 속성 및 메서드를 지칭하는 방법이다.

이외 메서드는 데이터를 엑세스하고 조작할 수 있는 인터페이스를 만든다.

객체지향 프로그래밍 이라는 말이 어렵게 느껴지는데, 말 그대로 객체 방향에 맞는 프로그래밍을 한다. 이런식으로 일단 정리해본다.

캡슐화

캡슐회는 만일의 상황(타인이 외부에서 조작)을 대비해서 외부에서 특정 속성이나 메서드를 시용자가 사용할 수 없도록 숨겨놓은 것입니다. 외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.

추상화

공통의 속성이나 기능을 묶어 이름을 붙이는 것

좀 더 살펴보면 물고기, 사자, 토끼, 뱀이 있을 때 우리는 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때,

만약 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다.

상속(inheritance)

class player {
	constructor(name){
		this.name = name;
	}
}

class koran extends player {
	constructor(name) {
		super(name);
		this.height = 180;
}

상속은 코드 중복을 줄이고 코드를 재사용 가능한 조각으로 나눌 수 있다. 자녀 클래스가 부모 클래스의 속성을 갖게 되는것.

다형성

부모클레스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것이다.

오버라이딩(Overriding)

오버라이딩은 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말한다.

profile
매일 뭐든하기

0개의 댓글