현실에 있는 객체를 모두 모방하는 것이 아니라 프로그램에 필요한 속성만을 가져와서 객체화 하는 것을 추상화 라고 한다. 학생들의 성적 총점과 평균을 계산하는 경우를 예로 들수 있다.
// 데이터를 통합할 배열을 생성 // push() 메서드를 이용해서 각각의 학생 객체 데이터들을 배열에 추가 |
객체가 흩어져 있다면 정리하기 힘들기 때문에 앞서 배웠던 배열안에 객체도 자료형으로 넣을 수 있다는 특성을 활용해 배열안에 객체를 삽입하는 방법을 사용한다.
// 일반적인 방법 |
일반적인 방법으로 배열에 for 반복문을 이용해서 내부에 있는 각각의 객체를 불러와서 내부 속성에 접근을 해서 총합과 평균을 얻어 결과값으로 출력하는 방법이 있다.
// 반복문을 이용해 students 배열안에 있는 객체에 메서드를 추가for(let i in students) { // getSum 라는 이름의 총점을 구하는 메서드를 추가 // getAverage 이라는 이름의 평균을 구하는 메서드를 추가 // 출력 |
위의 코드는 '데이터를 처리 부분'과 '메인 프로세스 부분'을 분리해서 코드를 좀더 부분적으로 볼 수 있게 나눈 것 이다. 가독성이 좋아지고 여러 사람들과 협업을 할 때 서로 알아보기가 편한 방법이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// 객체를 만드는 함수
function creatStudent(이름, 국어, 수학, 영어, 과학){
let object = {
// '키'로 선언되는 값: '매개변수'의 값
이름: 이름,
국어: 국어,
수학: 수학,
영어: 영어,
과학: 과학
};
// getSum 이라는 이름의 총점을 구하는 메서드를 추가
object.getSum = function () {
return this.국어 + this.수학 + this.영어 + this.과학;
};
// getAverage 라는 이름의 평균을 구하는 메서드를 추가
object.getAverage = function () {
return this.getSum() / 4;
};
// toString 이라는 결과를 정리하는 메서드를 추가
object.toString = function () {
return this.이름 + ' \t ' + this.getSum() + ' \t ' + this.getAverage() + '\n';
}
return object;
};
// 데이터를 통합할 배열을 생성
let students = [];
// push() 메서드를 이용해서 각각의 학생 객체 데이터들을 배열에 추가
students.push(creatStudent( '최ㅇㅇ', 99, 92, 99, 91 ));
students.push(creatStudent( '김ㅇㅇ', 88, 88, 95, 88 ));
students.push(creatStudent( '국ㅇㅇ', 98, 78, 99, 78 ));
students.push(creatStudent( '이ㅇㅇ', 79, 95, 96, 68 ));
students.push(creatStudent( '문ㅇㅇ', 80, 96, 86, 84 ));
students.push(creatStudent( '여ㅇㅇ', 75, 79, 97, 86 ));
students.push(creatStudent( '박ㅇㅇ', 92, 94, 89, 93 ));
students.push(creatStudent( '길ㅇㅇ', 96, 88, 62, 96 ));
students.push(creatStudent( '홍ㅇㅇ', 95, 87, 99, 85 ));
students.push(creatStudent( '연ㅇㅇ', 95, 84, 91, 77 ));
// 출력
let result= '이름 \t 총점 \t 평균\n';
for(let i in students) {
result += students[i].toString();
}
console.log(result);
alert(result);
|
cs |
위의 코드는 이전보다 더 세분화를 해서 '객체를 구현하는 구역'과 '데이터를 생성하는 부분' 그리고 '메인 프로세스 부분'으로 분리를 한 형태이다.
'프로그래밍 공부 > JavaScript' 카테고리의 다른 글
JavaScript - 생성자 함수 (0) | 2019.12.09 |
---|---|
JavaScript - 객체 연습문제 (0) | 2019.12.09 |
JavaScript - 객체의 속성 추가 / 제거 (0) | 2019.12.07 |
JavaScript - 객체와 반복문 / 객체 관련 키워드 (0) | 2019.12.07 |
JavaScript - 속성과 메서드 (0) | 2019.12.06 |