์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

7.2. ์ปฌ๋ ‰์…˜ ์บก์Аํ™”ํ•˜๊ธฐ

๐Ÿœ๊ฐœ๋ฐœ์ž๋ผ๋ฉด/์ฑ…์„ ์ฝ์žโœ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2021. 10. 5. 12:20

๋ณธ๋ฌธ

์ปฌ๋ ‰์…˜์„ ์†Œ์œ ํ•œ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์›์†Œ๋ฅผ ๋ณ€๊ฒฝ.

๋‚ด๋ถ€ ์ปฌ๋ ‰์…˜ ๊ฐ’์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๋„๋ก, ์ปฌ๋ ‰์…˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

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));
}

 

 

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ