객체지향 프로그래밍의 정의
과거의 프로그래밍은 함수나 명령어를 나열하는 명령형 프로그래밍이었다면
객체지향 프로그래밍은 실세계에 존재할법한 것들을 하나의 객체로 묶어 프로그래밍을 시도하는 하나의 철학적 도전이다.
실체는 특징이나 특성을 나타내는 속성을 가지고 있고, 이를 통해 개체를 구별할 수 있다.
만약 내가 철수와 영희로 프로그래밍을 한다고 가정하자.
이 때 내가 각 사람들의 성별에만 관심이 있다면
나머지는 전부 제외하고 봐도 무방하다.
이처럼 필요한 속성을 간추려내는 것을 추상화(abstraction)라고 한다.
상태와 동작, 프로퍼티와 메서드
위에서
철수는 남자이고 축구를 잘한다.
영희는 여자이고 볼링을 잘한다.
이 때, 각 성별(남자, 여자)은 철수와 영희의 state(상태)이다.
축구를 하는 것과 볼링을 하는 것은 behavior(행동)이다.
즉, 객체(Object)는 상태와 행동을 모두 가질 수 있다.
우리는 객체 내의 상태와 행동을 구분하는데
상태는 프로퍼티(Property)라고 하며
행동은 메서드(Method)라고 한다.
원(circle)이라는 개념에서 원 하나를 객체화 해보자.
const circle = {
radius: 5, // 반지름, 프로퍼티
// 지름, 메서드
getDiameter() {
return 2 * this.radius;
},
// 원 둘레 : 2 * 원주율 * 반지름, 메서드
getPerimeter() {
return 2 * Math.PI * this.radius;
},
// 원 넓이 : 원주율 * 반지름 * 반지름, 메서드
GetArea() {
return Math.PI * this.radius ** 2;
}
}
원의 radius(반지름)은 5이다.
radius는 행동하는 것이 아니므로 이는 프로퍼티에 해당한다.
아래의 get 접두사로 이루어진 함수들은 함수를 통해 어떠한 행동을 한다.
따라서 이들은 메서드이다.
객체 내부의 속성들을 사용하고자할때는
객체.속성 식으로 구분하여 호출한다.
circle은 객체 그 자체를 불러오고
circle.getDiameter()는 원에 대한 지름을 구하는 행동에 대한 실행을 불러올 것이다.
console.log(circle); // 객체 : 원
console.log(circle.getDiameter()); // 원에 대한 지름
console.log(circle.getPerimeter()); // 원에 대한 둘레
console.log(circle.GetArea()); // 원 넓이
'Javascript' 카테고리의 다른 글
innerHTML 연습 1 (0) | 2022.07.26 |
---|---|
(JS) 객체 지향 프로그래밍 : 생성자 함수와 프로토타입 비교 (0) | 2022.06.24 |
(JS) async / await (0) | 2022.06.13 |
(JS) 제너레이터의 활용 (0) | 2022.06.13 |
(JS) 제너레이터 (0) | 2022.06.13 |