TypeScript 8회차 - OOP 객체지향 프로그래밍, 클래스와 오브젝트의 관계
객체지향 프로그래밍이란?
객체지향 프로그래밍은 class를 정의하고 사용 가능하다.
프로그램의 규모가 커질 때 변수와 함수들이 늘어나면서 흩어져서 스파게티 코드가 될 가능성이있다.
그것을 방지하기 위해 연관된 변수와 함수들을 한 덩어리로 묶어서 구조화 하여 표현하는 프로그래밍 스타일이 객체지향 프로그래밍이다.
어플리케이션을 실제 세상에 존재하는 객체와 같은 단위로 쪼개고 객체들(연관된 변수와 함수들의 집합)이 서로 상호작용함으로써 시스템이 동작하는 것을 의미.
객체지향 프로그래밍에서의 Class
객체는 클래스를 통해서 만들어 질 수 있고
클래스는 객체의(객체를 만들어내는) 뼈대, 설계도, 생산틀을 의미한다.
작성법
class의 이름은 대문자로 시작한다.
class 안에서는 let, const 같은 키워드 필요 없으므로 삭제한다.
class 안에서 정의된 변수들은 class 안에서 this 키워드로 접근 가능하므로 함수의 매개변수도 지워준다.
class 안에서 정의된 함수들은 class 내에 정의된 변수들에게 바로 접근 가능하기 때문에 상대적으로 적은 매개변수를 갖게 되는 장점이 있다.
매개변수가 적을수록 함수를 더 쉽게 사용하고 쉽게 유지보수 할 수 있는 것이 장점이다.
class Employee {
fullName: string;
age: number;
jobTitle: string;
hourlyRate: number;
workingHoursPerWeek: number;
printEmployeeDetails = ():void => {
console.log(`${this.fullName}의 직업은 ${this.jobTitle} 이고 일주일의 수입은 ${this.hourlyRate*this.workingHoursPerWeek} 달러 이다.`)
}
}
이렇게 객체지향 프로그래밍에서 class 내에 정의된 변수를 property 라고 부르고 class 내에 정의된 함수를 method 라고 부른다.
class내에 정의된 변수에서 let, const 삭제 시 Property 'fullName' has no initializer and is not definitely assigned in the constructor 이런 에러가 발생하면 tsconfig.json의 'strict'를 false로 만들자. true인 경우 이런 에러가 발생한다.
tsconfig.json의 'strict'는 모든 엄격한 타입-체킹 옵션 활성화 여부를 결정하는 옵션이다.
참고한 블로그: https://geonlee.tistory.com/214
Object (객체) (클래스의 instance)
위에서 정의한 Employee 클래스를 뼈대로 employee1이라는 객체 생성.
employee1은 Employee에 선언된 property와 method를 그대로 자신의 property와 method로 가진다.
let employee1 = new Employee();
employee1.printEmployeeDetails();
위처럼 property에 아무 값도 할당하지 않고 출력시
undefined의 직업은 undefined 이고 일주일의 수입은 NaN 달러 이다. 가 출력 된다.
아래처럼 각 객체의 property 에 값을 할 당 후 출력하면 정상적으로 할당된 값이 출력 된다.
employee1.fullName = '민수';
employee1.age = 28;
employee1.jobTitle = '주니어 웹개발자';
employee1.hourlyRate = 40;
employee1.workingHoursPerWeek = 35;
employee1.printEmployeeDetails();
let employee2 = new Employee();
employee2.fullName = '미래';
employee2.age = 32;
employee2.jobTitle = '프로덕트매니저 웹개발자';
employee2.hourlyRate = 38;
employee2.workingHoursPerWeek = 50;
employee2.printEmployeeDetails();
이런식으로 class를 이용해서 여러가지 독립된 객체를 생성할 수 있다.
그동안은 느끼지 못했는데 객체지향 프로그래밍으로 클래스를 사용한다는 점, 클래스의 객체를 new 키워드로 생성하여 사용한다는 점에서 JAVA와 흡사하다는 생각이 들었다.
Author And Source
이 문제에 관하여(TypeScript 8회차 - OOP 객체지향 프로그래밍, 클래스와 오브젝트의 관계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hey880/TypeScript-8회차-OOP-객체지향-프로그래밍-클래스와-오브젝트의-관계저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)