예를 들어 온라인 쇼핑 어플리케이션을 만든다고 가정해본다면, 주문의 정보, 고객의 데이터, 상품의 데이터, 주문하기, 장바구니에 담기 등 여러가지 변수와 함수가 필요하게 됩니다.
이렇게 코드를 작성하다보면 프로젝트의 규모가 커지게 되고 코드가 여기저기 흩어지게 된다면 가독성이 떨어지고 유지보수가 힘들어지는 코드가 되버리게 됩니다. 이러한 점들을 해결하기 위해서 객제지향 프로그래밍은 연관된 변수와 함수들을 한 덩어리로 묶어서 구조화하여 표현하는 프로그래밍 스타일입니다.
유저가 물건을 장바구니에 담고, 주문하고, 결제한다.
유저, 물건, 장바구니, 주문, 결제라는 명사가 보입니다!
그렇기 때문에 우리는 어플리케이션을 객체와 같은 단위로 분리하고 그 객체들이 서로 작용함으로써 프로그램이 동작하는 것!
class User { // class내에 정의된 변수는 property 프로퍼티 라고 부른다. name: string; age: number; address: string; // class내에 정의된 함수는 method 메소드 라고 부른다. printUserInfo = (): void => { console.log(`${name}의 나이는 ${age}이고 사는 곳은 ${address}입니다.`) } }
OOP에서 Class는 객체를 만들어 내기 위한 설계도, 생산틀 이라고 생각하시면 됩니다.
class의 새로운 객체를 만드는 것을 인스턴스를 만든다라고 합니다.
class User { // class내에 정의된 변수는 property 프로퍼티 라고 부른다. name: string; age: number; address: string; // class내에 정의된 함수는 method 메소드 라고 부른다. printUserInfo = (): void => { console.log(`${name}의 나이는 ${age}이고 사는 곳은 ${address}입니다.`) } } // 새로운 인스턴스 생성 let user1 = new User(); user1.name = "allDay" user1.age = 28 // 만 28세.... user1.address = "경기 의정부" user1.printUserInfo(); // allDay의 나이는 28이고 사는 곳은 경기 의정부입니다.