Search
Duplicate

클래스

생성일
2022/06/11 04:01
태그
JS

클래스

객체 지향 패러다임

C를 제외한 모든 프로그래밍 언어는 객체 지향 (Object Oriented)라는 패러다임을 기반으로 만들어진 프로그래밍 언어
객체 지향 패러다임
객체 지향 프로그래밍 객체를 만들고, 객체들의 상호작용을 중심으로 개발하는 방법론
객체 지향 프로그래밍 언어들은 클래스(Class)라는 문법으로 객체를 효율적이고 안전하게 만들어 객체 지향 패러다임을 쉽게 프로그래밍에 적용할 수 있도록 도와줌

추상화 (abstraction)

복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념과 기능을 간추려내는 것,
즉, 프로그램에 필요한 요소만 사용해서 객체를 표현하는 것

클래스 선언하기

class 클래스 이름 { }
JavaScript
복사
인스턴스 : 클래스를 기반으로 만든 객체
new 클래스 이름()
JavaScript
복사
클래스 선언하고 인스턴스 생성
<script> class Student { } const student = new Student() const students = [ ... ] </script>
JavaScript
복사

생성자 (constructor)

생성자는 클래스를 기반으로 인스턴스를 생성할 때 처음 호출되는 메소드
따라서 생성자에서는 속성을 추가하는 등 객체의 초기화 처리

메소드 (method)

<script> class Student { constructor (이름, 국어, 영어, 수학, 과학) { this.이름 = 이름 this.국어 = 국어 ... this.과학 = 과학 } getSum() { return this.국어 + ~ + this.과학 } getAverage() { return this.getSum() / 4 } toString() { return `${this.이름}\t{this.getSum()}점\t${this.getAverage()}점\n` } } </script>
JavaScript
복사
const sutdents = [] students.push(new Student('구름', 87, 98, 88, 90)) ...
JavaScript
복사

요약

객체 지향 패러다임은 객체를 우선적으로 생각해서 프로그램을 만든다는 방법론
추상화는 프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것
클래스는 객체를 안전하고 효율적으로 만들 수 있게 해주는 문법
인스턴스는 클래스를 기반으로 생성한 객체를 의미
생성자는 클래스를 기반으로 인스턴스를 생성할 때, 처음 호출되는 메소드

상속 (inheritance)

상속은 클래스의 선언 코드를 중복해서 작성하지 않도록 함으로써 코드의 생산 효율을 올리는 문법
class 클래스 이름 extends 부모클래스 이름 { }
JavaScript
복사

private 속성과 메소드

클래스 사용자가 클래스 속성(또는 메소드)을 의도하지 않은 방향으로 사용하는 것을 막아, 클래스의 안정성을 확보하기 위해 나온 문법
class 클래스 이름 { # 속성 이름 # 메소드 이름 () { } }
JavaScript
복사

게터(getter)와 세터(setter)

<script> class Square { #length constructor(length) { this.setLength(lenght) } setLength(value) { if (value <= 0) { throw '길이는 0보다 커야한다' } this.#length = value } getLength(value) { return this.#length } getPerimeter() {return 4 * this.#length} getArea() {return this.#length * this.#length} } // 클래스 사용하기 const square = new Square(10) console.log(`한변의 길이는 ${square.getLength()}입니다`) // 예외 발생시키기 square.setLength(-10) </script>
JavaScript
복사
get area() { } set length(length) { } console.log(`${squareA.length}`) console.log(`${squareA.area}`) // 속성을 사용하는 형태로 사용하면, // 자동으로 게터와 세터가 호출됨
JavaScript
복사

static 속성과 메소드

class Square { #length static #counter = 0 static get counter() { return Square.#counter } }
JavaScript
복사

오버라이드

자식 클래스가 부모 클래스의 메소드를 다시 덮어써서 재정의 하는 것

toString() 메소드

자바스크립트는 내부적으로 어떤 객체를 문자열로 만들 때, toString() 메소드를 호출
toString() 메소드를 오버라이드하면, 내부적으로 문자열로 변환되는 형태를 바꿀 수 있음