Ted's Codding study
클래스(Class) 본문
TypeScript
클래스(Class) Ted93 2024. 6. 24. 11:08
1. 클래스(Class)
1-1) 클래스 정의
- '객체'를 생성하기 위한 템플릿 또는 설계도
- 데이터와 해당 데이터를 조작하는 코드를 함께 캡슐화
1-2) 클래스 특징
- 캡슐화: 데이터(속성)와 데이터를 처리하는 함수(메서드)를 하나로 묶는 것
- 추상화: 복잡한 세부사항X, 필수적인 부분만을 강조하는 것
- 상속: 한 클래스의 속성과 메서드를 다른 클래스가 상속받을 수 있는 것
- 다형성: 하나의 인터페이스를 통해 다른 클래스의 객체(인스턴스)를 다룰 수 있는 것
2. 객체(Object)
2-1) 객체 정의
- '클래스'에 의해서 생성된 인스턴스(instance)
- 실제 프로그램에서 사용되는 데이터와 기능의 집합체
2-2) 객체 특징
- 상태와 행동: 객체는 속성(상태)과 메서드(행동)를 갖는 것
- 독립성: 각 객체는 독립적인 성격을 가지며 다른 객체와 상호 작용 가능
3. 클래스 사용법
- 클래스 '정의' & 객체 '생성'
3-1) 클래스 정의
- class 키워드를 사용하여 정의
- 클래스명은 대문자로 시작 (UpperCamelCase 사용)
3-2) 클래스의 기본 구조
class ClassName {
속성(상태): (멤버) 변수, 클래스의 상태 저장
메서드(행동): 함수, 클래스의 동작을 정의
--- 메서드 종류 ---
- 인스턴스 메서드
: 일반적인 메서드, 클래스의 인스턴스를 통해 호출, 해당 객체의 속성에 접근 가능
- 정적 메서드
: 클래스 자체에 속하는 메서드, 인스턴스 없이 클래스명을 사용하여 호출
--- 인스턴스(instance) ---
: 클래스를 통해 생성된 객체
: 실제로 생성된 객체이자 '컴퓨터 메모리에 할당된 객체'
}
4. 객체 VS 클래스 VS 인스턴스
4-1) 객체
- 서로 많은 데이터를 하나로 묶어서 표현한 것
- 현실 세계의 사물이나 개념을 프로그램 내에서 표현한 것
- EX) 웹 페이지에서 작성할 '게시글'
- 게시글 번호, 작성자, 제목, 내용, 작성일자, 수정일자,,, 등 데이터(속성)
- 위 데이터(속성)를 처리하는 기능(게시글 생성, 수정 등등) 기능(메서드, 행동)
4-2) 클래스
- 객체를 만드는 도구
- 클래스를 정의하면 해당 클래스에 속한 객체들이 가져야 할 속성과 메서드를 명시
- 붕어빵(객체) & 붕어빵 틀(클래스) 같은 클래스로 만든 객체라도 각각의 객체는 서로 다른 값을 가짐
4-3) 인스턴스
- 클래스에 의해 생성되어 '메모리에 할당'된 객체
- 클래스로부터 객체를 생성하는 과정을 '인스턴스화'라고 부름
- 붕어빵틀 클래스로 만든 붕어빵은 객체(object)
붕어빵은 붕어빵 틀로 만든 인스턴스(instance)
객체 == 인스턴스
5. 클래스 '정의' / 객체 '생성' 예제
- '책' 클래스
- ! 느낌표 연산자는, 컴파일러에게 무조건 값이 있을것이라고 알려줌
class Book {
// --- 속성 ---
// : 멤버 변수로 정의
// : 클래스에 속하는 변수
title!: string;
author! : string;
// --- 메서드 ---
// : 클래스 내부에서 정의된 함수
// : 객체의 행동을 나타냄
// : 클래스의 인스턴스를 통해 호출
// 클래스의 메서드(함수)는 선언적 함수 사용 X
// 함수명으로 바로 구현
describe() : string{
return `${this.title} is written by ${this.author}`
}
}
6. 객체 생성
- 클래스의 인스턴스는 new 키워드를 사용하여 생성
- new 클래스명();
- ()는 클래스의 생성자 함수를 호출
- 기본적으로 클래스에는 반드시 하나 이상의 생성자가 존재
- 명시하지 않을 경우 매개변수가 없는 빈 생성자가 생략
- new 키워드를 사용하여 인스턴스를 생성 생성된 인스턴스를 변수에 할당하여 사용
let myBook1 = new Book();
let myBook2 = new Book();
- 생성된 인스턴스로 Book 클래스에 정의된 멤버변수와 메서드에 접근 . 연산자를 사용하여 접근
console.log(myBook1.title);
console.log(myBook1.describe());
console.log(myBook2.describe());
- 클래스를 통해 인스턴스 생성 시
- 생성자를 통해 클래스의 멤버 변수를 초기화
- 해당 멤버 변수를 초기화 하지 않은 경우 undefined로 인식
- 다음 글에서 생성자에 대해 학습
노션으로 보고 싶다면?
https://short-echidna-b16.notion.site/Class-1d7627c57835472c9b6b7cadcd175eb3?pvs=4