์ปฌ๋ ์ ์ ์์ ํ ํด๋์ค๋ฅผ ํตํด์๋ง ์์๋ฅผ ๋ณ๊ฒฝ.
๋ด๋ถ ์ปฌ๋ ์ ๊ฐ์ ์ง์ ์์ ํ์ง ๋ชปํ๋๋ก, ์ปฌ๋ ์ ๊ฐ์ ๋ฐํํ์ง ์๋๋ค.
class Person{
get courses(){return this._courses;}
set courses(aList){thi._courses = aList;}
}
class Person {
get courses(){return this._courses.slice();} //๋ณต์ฌ๋ณธ ๋ฐํ
addCourse(aCourse){...}
removeCourse(aCourse){...}
}
1. ์ปฌ๋ ์ ์บก์ํ
2. ์ปฌ๋ ์ ์ ์์๋ฅผ ์ถ๊ฐ/์ญ์ ํ๋ ํจ์ ์ถ๊ฐ
3. ์ ์ ๊ฒ์ฌ
4. ์ปฌ๋ ์ ์ ์ฐธ์กฐํ๋ ๋ถ๋ถ์ ๋ชจ๋ ์ฐพ๊ณ , ์ปฌ๋ ์ ์ ๋ณ๊ฒฝ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๊ฐ ์์์ ์ถ๊ฐํ ์ถ๊ฐ/์ ๊ฑฐ ํจ์๋ฅผ ํธ์ถํ๋๋ก ํ๋ค.
5. ์ฝ๊ธฐ์ ์ฉ ํ๋ฝ์๋ ๋ณต์ ๋ณธ์ ๋ฐํํ๊ฒ ํ๋ค.
์ปฌ๋ ์ ์ ์ฒด๋ฅผ ๋ฐ๊ฟ ์ ์๋ setter ๋์ ์ ๊ฐ๋ณ ์์๋ฅผ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ์
// Person ํด๋์ค
constructor(name){
this._name = name;
this._courses = [];
}
get name(){ return this._name; }
get courses(){ return this._courses; }
set courses(){ this._courses = aList; }
// courses๋ผ๋ ์ธํฐ๋ฅผ ์ด์ฉํด ์์
์ปฌ๋ ์
์ ํต์งธ๋ก ๋ฐ๊ฟ ์ ์๊ฒ๋์ด๋ฒ๋ฆฐ๋ค.
// ์ธ์ ๋ ์ง ํด๋ผ์ด์ธํธ ์ชฝ์์ ๋ง์๋๋ก ์์ ํ ์ ์๊ฒ ๋๋ค.
aPerson.courses = basicCourseNames.map(name=>new Course(name,false))
//๊ทธ๋์! ์ฌ๋ฌ course๋ฅผ ์ถ๊ฐํด์ผ ํ ๋๋ ์๋์ ๊ฐ์ด for๋ฌธ์ ์ฌ์ฉํ๊ณ
// Person ๊ฐ์ฒด๋ addCourse (๋จ ํ๋์ course๋ฅผ ์ถ๊ฐํ๋ setter)๋ง ์ ๊ณตํ๊ฒ ํ๋ค.
for (const name of readBasicCOurseNames(filename)){
aPerson.addCourse(new Course(name,false));
}
| 7.5. ํด๋์ค ์ถ์ถํ๊ธฐ | 7.6. ํด๋์ค ์ธ๋ผ์ธํ๊ธฐ (0) | 2021.10.05 |
|---|---|
| 7.3. ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ธฐ | 7.4. ์์ ๋ณ์๋ฅผ ์ง์ ํจ์๋ก ๋ฐ๊พธ๊ธฐ (0) | 2021.10.05 |
| 7.1. ๋ ์ฝ๋ ์บก์ํํ๊ธฐ (0) | 2021.10.01 |
| 6.11. ๋จ๊ณ ์ชผ๊ฐ๊ธฐ (Split Phase) (0) | 2021.09.26 |
| 6.10. ์ฌ๋ฌ ํจ์๋ฅผ ๋ณํ ํจ์๋ก ๋ฌถ๊ธฐ (0) | 2021.09.26 |