, , , , , ,

[SOLVED] Csed 232 object-oriented programing assignmentย  3 โ€“ inheritance & polymorphism

$25

File Name: Csed_232_object_oriented_programing_assignment___3_____inheritance___polymorphism.zip
File Size: 763.02 KB

5/5 - (1 vote)

์ฃผ์˜ ์‚ฌํ•ญ โ— ํด๋ž˜์Šค ์„ ์–ธ ๋ฐ ์ •์˜๋ฅผ main.cpp ํŒŒ์ผ์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์— ์„ ์–ธ ๋ฐ ์ •์˜์˜ ์œ„์น˜์— ๋Œ€ํ•œ ์ œ์•ฝ์€ ์—†์Šต๋‹ˆ๋‹ค. โ— STL ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ— ๋ชจ๋“  C++ ๋ฌธ๋ฒ•์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ— ๋ฌธ์ œ์—์„œ ์ œ๊ณตํ•œ ํ˜•์‹์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ— ๋ฌธ์ œ์— ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š๋”๋ผ๋„ ์†Œ๋ฉธ์ž(Destructor)์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋Š” ํ•„์ˆ˜์ ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ— ๋ฌธ์ œ ์กฐ๊ฑด์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์ œ์˜ ์„ธ๋ถ€ ์กฐ๊ฑด์„ ๊ผผ๊ผผํžˆ ์ฝ์–ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. โ— ๊ณผ์ œ ๊ด€๋ จ ์งˆ๋ฌธ์€ PLMS๋ฅผ ํ†ตํ•ด ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ์  โ— ์ œ์ถœ ๊ธฐํ•œ์—์„œ ํ•˜๋ฃจ(24์‹œ๊ฐ„) ๋Šฆ์„ ๋•Œ๋งˆ๋‹ค 20%์”ฉ ๊ฐ์  โ—‹ 1์ผ(20%) , 2์ผ(40%), โ€ฆ 5์ผ(100%) โ— ์ปดํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์  โ— ์ œ์ถœ ํ˜•์‹ ์œ„๋ฐ˜ (ํŒŒ์ผ ์ด๋ฆ„ ๋“ฑ) ์ œ์ถœ๋ฐฉ์‹ ์ฑ„์ ์€ Windows Visual Studio 2022(์œˆ๋„์šฐ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ) ๋ฐ Ubuntu 20.04(lts)์™€ gcc version 9.4.0 (๋งฅ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ) ํ™˜๊ฒฝ์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. VS ๋กœ ์ž‘์—…ํ–ˆ์„ ๊ฒฝ์šฐ ์ž‘์—…ํ•˜์‹  ํ™˜๊ฒฝ์ด ์žˆ๋Š” visual studio ํ”„๋กœ์ ํŠธ ํด๋”์— Report ๋ฅผ ํฌํ•จํ•˜์—ฌ zip ํŒŒ์ผ๋กœ ์••์ถ• ํ›„ ์ œ์ถœํ•ด ์ฃผ์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. (x64 ๋ฐ .vs ํด๋”๋Š” ์ „๋ถ€ ์ง€์›Œ์ฃผ์‹ญ์‹œ์˜ค) ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋งฅ ์ด์šฉ์ž์˜ ๊ฒฝ์šฐ ์†Œ์Šค ์ฝ”๋“œ, ๋ณด๊ณ ์„œ, Makefile์„ ํฌํ•จํ•œ ํด๋”๋ฅผ ์••์ถ•ํ•ด์„œ ์ œ์ถœํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํด๋”๋ช…์€ โ€˜ํ•™๋ฒˆโ€™์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์‹œ๊ณ , Report๋Š” docx ๋‚˜ pdf ํ˜•์‹์œผ๋กœ ์ œ์ถœํ•ด์ฃผ์„ธ์š”. ๋ฐ˜๋“œ์‹œ PLMS ๋ฅผ ํ†ตํ•ด ์ œ์ถœํ•ด์ฃผ์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ ์ œ์ถœ์€ ์ธ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋” ์ด๋ฆ„๊ณผ ์••์ถ•ํŒŒ์ผ์€ โ€œAssign3_ํ•™๋ฒˆโ€์œผ๋กœ ๋งŒ๋“œ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค (e.g., Assign3_20229999). 1 ๊ณตํ†ต ์ฑ„์  ๊ธฐ์ค€ 1. ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋Šฅ โ— ํ”„๋กœ๊ทธ๋žจ์ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋ฉด์„œ ์˜ฌ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š”๊ฐ€? 2. ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ โ— ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”๊ฐ€? โ— ๋ฌธ์ œ์—์„œ ์ œ์‹œ๋œ ์„ธ๋ถ€ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜์˜€๋Š”๊ฐ€? โ— ์„ค๊ณ„๋œ ๋‚ด์šฉ์ด ์š”๊ตฌ๋œ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ์ ˆํžˆ ๊ตฌํ˜„๋˜์—ˆ๋Š”๊ฐ€? 3. ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๋…์„ฑ โ— ํ”„๋กœ๊ทธ๋žจ์ด ์ฝ๊ธฐ ์‰ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋Š”๊ฐ€? โ— ๋ณ€์ˆ˜๋ช…์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€? โ— ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์ฃผ์„์„ ์ž˜ ๋ถ™์˜€๋Š”๊ฐ€? 4. ๋ณด๊ณ ์„œ ๊ตฌ์„ฑ ๋ฐ ๋‚ด์šฉ, ์–‘์‹ โ— ๋ณด๊ณ ์„œ๋Š” ์ ์ ˆํ•œ ๋‚ด์šฉ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ž˜ ์ž‘์„ฑ๋˜์—ˆ๋Š”๊ฐ€? โ— ๋ณด๊ณ ์„œ์˜ ์–‘์‹์„ ์ž˜ ๋”ฐ๋ž๋Š”๊ฐ€? ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ณต์‚ฌ(copy)ํ•˜๊ฑฐ๋‚˜ ๊ฐ„๋‹จํžˆ ์ˆ˜์ •ํ•ด์„œ ์ œ์ถœํ•˜๋ฉด ํ•™์ ์€ ๋ฌด์กฐ๊ฑด โ€˜Fโ€™๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€์ •ํ–‰์œ„๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ํ•™๊ณผ์—์„œ ์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ถ”๊ฐ€์ ์ธ ๋ถˆ์ด์ต์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2 ASCII Art ASCII art๋Š” ASCII ๋ฌธ์ž๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฆผ์ด๋‚˜ ๋„ํ˜•์„ ๋งŒ๋“œ๋Š” ์˜ˆ์ˆ  ํ˜•์‹์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ๊ทธ๋ฆผ 1๊ณผ ๊ฐ™์ด ์ž„์˜์˜ ์‚ฌ์ง„์—์„œ ์–ด๋‘์šด ๋ถ€๋ถ„์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜์— ๋ณต์žกํ•œ ๊ธ€์ž๋ฅผ ์œ„์น˜์‹œํ‚ค๊ณ  ๋ฐ์€ ๋ถ€๋ถ„์—๋Š” ๋‹จ์ˆœํ•œ ๊ธ€์ž๋ฅผ ์œ„์น˜์‹œํ‚ค๋ฉด ๋ฌธ์ž๋กœ๋งŒ ์ด๋ค„์ง„ ๊ทธ๋ฆผ์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ๋ณธ ๊ณผ์ œ์—์„œ๋Š” ํด๋ž˜์Šค ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ASCII Art๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. [ ๊ทธ๋ฆผ1. ASCII art example] ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” class์™€ ์ƒ์† ๊ด€๊ณ„๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ 2๊ณผ ๊ฐ™๋‹ค. ํ™”์‚ดํ‘œ๋Š” ์ƒ์†์„ ์˜๋ฏธํ•˜๊ณ  ๋ฐฉํ–ฅํ‘œ์‹œ๊ฐ€ ์žˆ๋Š” class๊ฐ€ ๋ถ€๋ชจ class๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ classic class๋Š” artist class๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. [ ๊ทธ๋ฆผ2. Class diagram ] 3 ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ œ์•ฝ์‚ฌํ•ญ๋“ค์ด ๋”ฐ๋ฅธ๋‹ค. โ— ๊ทธ๋ฆผ2์— ๋ช…์‹œ๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„๋˜๊ณ  ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. โ— ๊ทธ๋ฆผ2์— ๋ช…์‹œ๋œ ๋ฉค๋ฒ„ํ•จ์ˆ˜์˜ ์ธ์ž์™€ return type์ด ์ค€์ˆ˜๋˜์–ด์•ผ ํ•œ๋‹ค. โ— ๊ทธ๋ฆผ2์— ๋ช…์‹œ๋œ class ์™ธ์— ๋‹ค๋ฅธ class๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. โ— ์ œ๊ณต๋œ ํ•จ์ˆ˜(function) ์™ธ์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. โ— class diagram์— ๋ช…์‹œ๋œ ๋ฉค๋ฒ„ํ•จ์ˆ˜(method)์™€ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์™ธ์—๋„ ํ•„์š”ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜ ๋ฐ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. โ— ์ฃผ์–ด์ง„ main ํ•จ์ˆ˜๋Š” ์ ˆ๋Œ€๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ฆผ 2์— ํ‘œํ˜„๋œ ํด๋ž˜์Šค ๋ฐ main ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. int main(int argc, char *argv[]) C++ main ํ•จ์ˆ˜์— int ์™€ char*[] ๋ฅผ argument๋กœ ์ •์˜ํ•œ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ ์ž…๋ ฅ๋ฐ›์€ argument์˜ ์ˆ˜, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์‹ค์ œ argument ๊ฐ’๋“ค์„ ๊ฐ–๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์ž„์˜์˜ compile๋œ ํ”„๋กœ๊ทธ๋žจ hello ๋ฅผ ./hello 2 world 1234 ๋ผ๋Š” ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ์‹œํ‚ฌ ๊ฒฝ์šฐ argc ๋Š” 4, argv[1] ๋Š” 2 argv[2] ๋Š” world, argv[3] ๋Š” 1234๊ฐ€ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ argv[0]์—๋Š” ์‹คํ–‰ํŒŒ์ผ๊ฒฝ๋กœ๊ฐ€ ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜๋ฉฐ, ๋”ฐ๋ผ์„œ argc ๋Š” 3์ด ์•„๋‹Œ 4๊ฐ€ ๋œ๋‹ค. ๋ณธ ๊ณผ์ œ์—์„œ ์ตœ์ข… compile๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ์‹œ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” inputํŒŒ์ผ์˜ ๊ฒฝ๋กœ, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” configuration ํŒŒ์ผ์˜ ๊ฒฝ๋กœ, ์„ธ ๋ฒˆ์งธ ์ธ์ž๋Š” output ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋‹ค. ์ฃผ์–ด์ง„ mainํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฉฐ ์ ˆ๋Œ€ ์ˆ˜์ •์„ ๋ถˆ๊ฐ€ํ•œ๋‹ค. int main(int argc, char *argv[]) { if (argc != 4) { cout << โ€œargc is not 4, but โ€ << argc << endl; throw; } // CREATE PARSER parser p; // LOAD IMAGE AND CONFIG vector tokens = p.load_image(argv[1]); vector configs = p.load_config(argv[2]); 4 string style_target = configs[0]; string drawer_target = configs[1]; char *path_output = argv[3]; int width = tokens[0]; int height = tokens[1]; vector vals = {tokens.begin() + 2, tokens.end()}; // CREATE ARTIST artist *style; if (style_target == โ€œclassicโ€) { style = new classic(width, height, vals); } else if (style_target == โ€œiclassicโ€) { style = new iclassic(width, height, vals); } else if (style_target == โ€œsobelxโ€) { style = new sobelx(width, height, vals); } else if (style_target == โ€œsobelyโ€) { style = new sobely(width, height, vals); } else if (style_target == โ€œgradientโ€) { style = new gradient(width, height, vals); } else { throw; } // CREATE DRAWER drawer *d; if (drawer_target == โ€œdrawerโ€) { d = new drawer(style); } else if (drawer_target == โ€œupsampleโ€) { d = new upsample(style); } else if (drawer_target == โ€œdownsampleโ€) { d = new downsample(style); } else if (drawer_target == โ€œscaleโ€) { int scale_x = stoi(configs[2]); int scale_y = stoi(configs[3]); d = new scale(style, scale_x, scale_y); } else { throw; } // PERFORM DRAWING string output = d->draw(); cout << output; // WRITE OUTPUT p.write_result(path_output, output); delete d; return 0; } 5 vector parser::load_image(const char*) ์ธ์ž๋กœ input file์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›๊ณ  ํ•ด๋‹น ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. input ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ์ผ๋ จ์˜ ์ˆซ์ž๋“ค์ด delimiter โ€˜|โ€™ ์„ ํ†ตํ•ด ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ input ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด 3|2|101|102|103|104|105|106 ์™€ ๊ฐ™๋‹ค๋ฉด, ํ•ด๋‹น ํ•จ์ˆ˜์˜ return ๊ฐ’์€ vector { 3 ,2, 101, 102, 103, 104, 105, 106 } ์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒ˜์Œ ๋‘ ๊ฐ’์€ ๊ทธ๋ ค์งˆ ๊ทธ๋ฆผ์˜ width์™€ height๋ฅผ ์˜๋ฏธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๊ฐ’์€ ๊ฐ ์ขŒํ‘œ์— ํ•ด๋‹น๋˜๋Š” pixel ๊ฐ’์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์œ„ ์ •๋ณด๋Š” 101 (0,0) 102 (1,0) 103 (2,0) 104 (0,1) 105 (1,1) 106 (2,1) ์™€ ๊ฐ™์ด ์‹œ๊ฐํ™” ๋  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ด„ํ˜ธ ์•ˆ์˜ ์ •๋ณด๋Š” x,y ์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ดํ›„ artist์™€ drawer class๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ๊ฐ’์ด ํŠน์ • ASCII ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. vector parser::load_config(const char*) ์ธ์ž๋กœ config file์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. config ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ์ผ๋ จ์˜ text๋“ค์ด delimiter โ€˜|โ€™ ์„ ํ†ตํ•ด ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฐ’์€ ์‚ฌ์šฉ๋  artist class์˜ ์ด๋ฆ„, ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ์‚ฌ์šฉ๋  drawer class์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ config ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด iclassic|upsample ์™€ ๊ฐ™๋‹ค๋ฉด, ํ•ด๋‹น ํ•จ์ˆ˜์˜ return ๊ฐ’์€ vector { โ€œiclassicโ€, โ€œupsampleโ€} ์ด ๋œ๋‹ค. void parser::write_result(const char*, const string&) ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ €์žฅํ•  ํŒŒ์ผ ๊ฒฝ๋กœ, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ €์žฅํ•  ๋‚ด์šฉ์ด ๋“ค์–ด์˜จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ p.write_result(โ€œoutput.txtโ€,โ€hello worldโ€) ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด output.txtํŒŒ์ผ์ด โ€œhello worldโ€๋ผ๋Š” ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์„œ ์ƒ์„ฑ๋œ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฉฐ ์˜ˆ์‹œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. 6 void parser::write_result(const char *path, const string& contents) { ofstream myfile; myfile.open(path); myfile << contents; myfile.close(); } artist(int, int, const std::vector&) artist class๋Š” ๊ทธ๋ฆผ์˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” class๋‹ค. ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ class๋“ค์ด artist class๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ž์‹ ๋งŒ์˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดํ›„ ์„ค๋ช…ํ•  drawer class๊ฐ€ artist class์˜ instance๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„์„œ ์ตœ์ข…์ ์ธ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ๊ทธ๋ฆผ์˜ width, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ๊ทธ๋ฆผ์˜ height, ์„ธ ๋ฒˆ์งธ ์ธ์ž๋กœ ๊ทธ๋ฆผ์˜ ๊ฐ ์ขŒํ‘œ์— ํ•ด๋‹นํ•˜๋Š” pixel ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค. ์ฆ‰, input ํŒŒ์ผ parsing ๊ฒฐ๊ณผ๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. virtual char mapper(int, int) ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ x coordinate, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ y coordinate์„ ๋ฐ›๊ณ , ์‚ฌ์šฉ๋  ASCII ๋ฌธ์ž๋ฅผ returnํ•œ๋‹ค. ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ virtual method์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น class์—์„œ๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š๊ณ  ์ƒ์† ๋ฐ›๋Š” class์—์„œ ๊ตฌํ˜„๋œ๋‹ค. char classic::mapper(int, int) classic class์˜ mapper๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ASCII Art์˜ mapping์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด๋ฏธ์ง€๋Š” display์— ํ‘œํ˜„๋  ๋•Œ pixel๊ฐ’์ด ์ž‘์„์ˆ˜๋ก ์–ด๋‘ก๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด ๊ด€์ฐฐ์— ๊ทผ๊ฑฐํ•ด์„œ pixel ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ์‹œ๊ฐ์ ์œผ๋กœ denseํ•œ ASCII ๋ฌธ์ž๋ฅผ ๋Œ€์ž…์‹œ์ผœ ๊ทธ๋ฆผ์„ ํ‘œํ˜„ํ•œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ classic::mapper๋Š” pixel์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ 15๊ฐœ์˜ ASCII ๋ฌธ์ž โ€˜@โ€™ โ€˜&โ€™ โ€˜%โ€™ โ€˜Wโ€™ โ€˜Xโ€™ โ€˜Aโ€™ โ€˜Hโ€™ โ€˜Oโ€™ โ€˜Tโ€™ โ€˜*โ€™ โ€˜^โ€™ โ€˜+โ€™ โ€˜-โ€™ โ€˜.โ€™ โ€˜ โ€˜ ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์™ผ์ชฝ๋ถ€ํ„ฐ pixel ๊ฐ’์ด ๋‚ฎ์€ ๊ฒฝ์šฐ์— ๋Œ€์‘๋˜๊ณ  ๊ฐ ๋ฌธ์ž๋Š” [0, 254] ์‚ฌ์ด์˜ ๊ฐ’์„ 17๊ฐœ์”ฉ ๊ท ์ผํ•˜๊ฒŒ ์ปค๋ฒ„ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ โ€˜@โ€™๋Š” [0, 16], โ€˜&โ€™ ๋Š” [17, 33]๋ฅผ ์ปค๋ฒ„ํ•œ๋‹ค. ์˜ˆ์™ธ์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋งŒ 18๊ฐœ, [238, 255]์˜ ๋ฒ”์œ„๋ฅผ ์ปค๋ฒ„ํ•œ๋‹ค. ๊ฐ pixel์ด ASCII ๋ฌธ์ž๋กœ ๋ณ€ํ•˜๋Š” ์˜ˆ์‹œ๋Š” 2 18 @ & 18 37 & % ์™€ ๊ฐ™๋‹ค. ์ฐธ๊ณ ๋กœ ๊ทธ๋ฆผ1์˜ ASCII art๋Š” classic::mapper๋ฅผ ํ†ตํ•ด ๊ทธ๋ ค์ง„ ๊ฒฐ๊ณผ๋‹ค. 7 char iclassic::mapper(int, int) iclassic์€ inverted classic์˜ ์•ฝ์ž๋‹ค. iclassic::mapper๋Š” ์‚ฌ์šฉ๋˜๋Š” ASCII๋ฌธ์ž์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ์‚ฌ์šฉํ•œ ๊ฒƒ ์™ธ์— classic::mapper์™€ ๋ชจ๋“  logic์ด ๋™์ผํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ โ€˜ โ€˜๊ฐ€ [0, 16]์„ ์ปค๋ฒ„ํ•˜๊ณ  โ€˜@โ€™๊ฐ€ [238, 255]๋ฅผ ์ปค๋ฒ„ํ•œ๋‹ค. char sobelx::mapper(int, int) sobel operation์€ ์˜์ƒ์—์„œ edge์„ฑ๋ถ„์„ ๊ฒ€์ถœํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ๋ณธ ๊ณผ์ œ์—์„œ sobelx::mapper๋Š” ์ž„์˜์˜ pixel์—์„œ x์ถ• ์–‘์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ธ์ ‘ํ•œ pixel๊ณผ์˜ ์ฐจ์ด๊ฐ€ 50์ด์ƒ์ธ ๊ฒฝ์šฐ โ€˜|โ€™๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ณต๋ฐฑ๋ฌธ์ž โ€˜ โ€˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 100 160 120 | 100 30 100 | | 100 100 170 | ์™€ ๊ฐ™์ด ์™ผ์ชฝ์˜ pixel ๊ฐ’์— ๋Œ€ํ•ด์„œ ์˜ค๋ฅธ์ชฝ ๊ฐ™์€ ASCII ๋ฌธ์ž๊ฐ€ ๊ทธ๋ ค์ง„๋‹ค. char sobely::mapper(int, int) sobelx์—์„œ ์‚ฌ์šฉ๋œ logic๊ณผ ๋‘ ๊ฐ€์ง€ ์„ธ๋ถ€์‚ฌํ•ญ์ด ๋‹ค๋ฅด๋‹ค. ๋จผ์ € x์ถ•์ด ์•„๋‹Œ y์ถ•์˜ ๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ„ด๋˜๋Š” ๋ฌธ์ž๊ฐ€ โ€˜|โ€™๊ฐ€ ์•„๋‹Œ โ€˜-โ€™์ด๋‹ค. char gradient::mapper(int, int) gradient::mapper๋Š” sobelx::mapper์™€ sobely::mapper์˜ logic์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ x,y์ถ• ์–‘์˜ ๋ฐฉํ–ฅ ๋ชจ๋‘ ์ธ์ ‘ํ•œ pixel๊ณผ์˜ ์ฐจ์ด๊ฐ€ 50์ด์ƒ์ธ ๊ฒฝ์šฐ โ€˜+โ€™๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 100 160 120 | โ€“ 100 30 100 | + โ€“ 100 100 170 | ์™€ ๊ฐ™์ด ์™ผ์ชฝ์˜ pixel ๊ฐ’์ด ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์€ ASCII ๋ฌธ์ž๋กœ ๊ทธ๋ ค์ง„๋‹ค. drawer(artist *) 8 drawer class๋Š” artist๊ฐ€ ๊ฐ–๋Š” method๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ตœ์ข…์ ์œผ๋กœ ๊ทธ๋ ค์ง€๋Š” string์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ๋”ฐ๋ผ์„œ drawer ์ƒ์„ฑ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ artist pointer instance๋ฅผ ๋ฐ›๋Š”๋‹ค. string drawer::draw() ์ตœ์ข… ASCII ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๊ทธ๋ฆผ์„ ํ•˜๋‚˜์˜ string์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. string downsample::draw() upsample๊ณผ downsample์€ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ณ  ์ค„์ด๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณธ ๊ณผ์ œ์—์„œ๋Š” Nearest-neighbor ๊ธฐ๋ฐ˜์˜ upsample๊ณผ downsample์„ downsample::draw์™€ upsample::draw๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋ฐฉํ•œ๋‹ค. downsample::draw()๋Š” drawer::draw()๋กœ ๊ทธ๋ ค์ง€๋Š” ๊ทธ๋ฆผ์˜ ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ์ขŒํ‘œ (0, 0)์€ ๋ฐ˜๋“œ์‹œ ๊ทธ๋ ค์ง€๊ณ , ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ™€์ˆ˜ ๊ฐ’์„ ๊ฐ–๋Š” ์ขŒํ‘œ์˜ ๋ฌธ์ž๋“ค์€ ๋ฌด์‹œ๋œ๋‹ค. ์˜ˆ์‹œ๋Š” @ & % & @ % & % & % & & & % & % & % & % ์™€ ๊ฐ™์œผ๋ฉฐ ์™ผ์ชฝ์ด ์›๋ณธ์ด๊ณ  ์˜ค๋ฅธ์ชฝ์ด downsample ๊ฒฐ๊ณผ๋‹ค. string upsample::draw() downsample::draw()์™€ ๋ฐ˜๋Œ€๋กœ ๊ทธ๋ฆผ์˜ ํฌ๊ธฐ๋ฅผ ๋‘ ๋ฐฐ๋กœ ํ‚ค์šด๋‹ค. ํ‚ค์šฐ๋Š” ๊ณผ์ •์—์„œ ๊ฐ ๋ฌธ์ž๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ์˜ˆ์‹œ๋Š” @ % @ @ % % & & @ @ % % & & & & & & & & ์™€ ๊ฐ™์œผ๋ฉฐ ์™ผ์ชฝ์ด ์›๋ณธ์ด๊ณ  ์˜ค๋ฅธ์ชฝ์ด upsapmle ๊ฒฐ๊ณผ๋‹ค. 9 scale(artist *, int, int) scale class์˜ ์ƒ์„ฑ์ž๋Š” ์˜ˆ์™ธ์ ์œผ๋กœ artist*์™ธ์— ์ถ”๊ฐ€์ ์ธ ๋‘ ๊ฐœ์˜ int ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค. ๋‘ int ์ธ์ž๋Š” ๊ฐ๊ฐ x, y์ถ•์œผ๋กœ ํ™•์žฅ ๋ฐ ์ถ•์†Œ๋  ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์˜ˆ์™ธ์ ์œผ๋กœ config ํŒŒ์ผ์— 2๊ฐœ๊ฐ€ ์•„๋‹Œ 4๊ฐœ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋ฉฐ 3,4 ๋ฒˆ์งธ ์ •๋ณด๊ฐ€ ํ•ด๋‹น scale ์ƒ์„ฑ์ž์˜ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์€ main ํ•จ์ˆ˜์— ์ด๋ฏธ ์ž‘์„ฑ ๋˜์–ด์žˆ๋‹ค. string scale::draw() downsample::draw()์™€ upsample::draw()์ด ์ถ•์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ 2๋ฐฐ ํ™•์žฅ ๋ฐ ์ถ•์†Œ๋ฅผ ํ–ˆ๋‹ค๋ฉด, scale::draw()๋Š” ๊ฐ ์ถ•์— ๋Œ€ํ•ด์„œ ์ •ํ•ด์ง„ ๋ฐฐ์œจ์˜ ํ™•์žฅ ์ถ•์†Œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฐฐ์œจ์ด ์ž์—ฐ์ˆ˜์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์˜ ๋ฐฐ์œจ๋กœ ๊ทธ๋ฆผ์„ ํ™•์žฅํ•œ๋‹ค. ๋ฐฐ์œจ์ด ์Œ์˜ ์ •์ˆ˜์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์˜ ์Œ์˜ ์—ญ์ˆ˜๋ฅผ ๋ฐฐ์œจ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 0 ์ธ ๊ฒฝ์šฐ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ x์ถ•๊ณผ y์ถ• ๋ฐฐ์œจ์ด 3, -2 ์ธ ๊ฒฝ์šฐ x์ถ•์œผ๋กœ 3๋ฐฐ, y ์ถ•์œผ๋กœ 1/2๋ฐฐ ํ™•์žฅ ๋ฐ ์ถ•์†Œํ•œ๋‹ค. ์•„๋ž˜ ์ด์–ด์ง€๋Š” ์˜ˆ์‹œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ input๊ณผ ์ด์— ๋Œ€์‘๋˜๋Š” output์˜ˆ์‹œ๋“ค์ด๋‹ค. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. @@@@%%%WWXXXHHHOOTTT***++โ€”โ€ฆ. โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ โ€ฆ.โ€”++***TTTOOHHHXXXWW%%%@@@@ output using input1.txt and confit1.txt 10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@&^โ€“+^..^.HHX@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@*โ€“โ€ฆโ€“.โ€“. .+.*^^^+-@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@.-^.-โ€ฆ-++^^-.+.-+-.โ€”.-.@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&-.*โ€ฆโ€ฆ โ€ฆ.. ..+โ€ฆ โ€ฆ+.+.@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@โ€ฆ-..-..-+.. โ€ฆโ€ฆโ€ฆโ€ฆ+โ€ฆโ€ฆ.-@@@@@@@@@@@@@@@@ @@@@@@@@@@@@โ€ฆ..^HAXXXXAH*.+-^*++-+^*TOHO^โ€ฆโ€ฆ&@@@@@@@@@@@@@@ @@@@@@@@@@@-..-*HAAXXXXWXWWWXWWWWWWWXWXXXAHHO^..-+%@@@@@@@@@@@@@ @@@@@@@@@@โ€ฆ.*OHAXXXWXW%%%%%&&&&&%%%WWWXXAHHAH+โ€ฆ@@@@@@@@@@@@@ @@@@@@@@@@-..+HHAAXXWW%&&&&&&&&&&&&&%%WWXXAAHOOH^โ€ฆ@@@@@@@@@@@@ @@@@@@@@@T-..HOOHAXXW%%%%%&&&&&&&&&&%%WWXAHAHHHHA..^@@@@@@@@@@@@ @@@@@@@@@+.-+HOHHAXWW%%%%%%&@&&@&&&%%%WXXAHHHOHHA-+^@@@@@@@@@@@@ @@@@@@@@@+..+AHHAAXWWWWW%%%%&&&&&&%%%WWXAAHHOOOHXT.*@@@@@@@@@@@@ @@@@@@@@@^โ€ฆ*AHOAXWXWW%%%%&%%%%%%%WWWXXAHHOOTOAW+-^@@@@@@@@@@@@ @@@@@@@@@@-.^*OTOAXXWWWWWW%WWWWWXWWWXXAAAHHOTOHXHT-+@@@@@@@@@@@@ @@@@@@@@@@T.-OXX*+โ€”โ€“..-^HXXAAAH*.-โ€ฆโ€ฆ-^AW%T.+@@@@@@@@@@@@@ @@@@@@@@@@&..X%%OTOHTโ€”+^^*OHHHT-+-+-+-++^^O%&X-.A@@@@@@@@@@@@@ @@@@@@@@@@X+**&WT^..A-. *HT*TWWX^.**Wโ€ฆ.O+.+H%*+^A*@@@@@@@@@@@@ @@@@@@@@@@@HX+@WAXWWXW%%WX%WXW%X**THHXWXXXAAHAW^HO-%@@@@@@@@@@@@ @@@@@@@@@@@AAO&%AAXXWWWXXWXXX%%XT*OHAXXXWWWXAHW^-WH@@@@@@@@@@@@@ @@@@@@@@@@@&X%&%WAHAAXXXXAXXX%%WO^*THAXXXXXXHH%*+H&@@@@@@@@@@@@@ @@@@@@@@@@@@%%X@WHHHHAXXXWAXAW%WX^TOHAAAAHHOOAWTHA@@@@@@@@@@@@@@ @@@@@@@@@@@@@AX%WOHOHAAXAHXAAW%WHAT*HAHHHHOTOXX*O@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@WHHHHAAXWWWXHO^^+-^TOHHHOOTOAX@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@HHHHAXXXXXWXXHAOOTOOOOOOOOHW@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@AHHHHAAXWWO**HT*^THOOHOOOAX@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@XOOHOAXXXWAXXXHHHTOAAAHTHTO@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@WOT^OOOAHHOT*^^*TOHHOOOOTTO@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@%AO*^-*OHHAAHAAAAAHOT****OH@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@AXAO*^^++*OTOTOTT^^^^^^TOHA@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@HXWWAHOT^+++++^^+++^^^*TOHHAX@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@OAAWWXXAHOO*^++^+++^^**TOOHHHXXA@@@@@@@@@@@@@@@@@ output using input2.txt and confit2.txt ์ตœ์ข…์ ์œผ๋กœ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ฌธ์ œ 1,2,3์€ ์ฝ”๋“œ ๊ตฌํ˜„ ๋ฌธ์ œ๋กœ test case๋ฅผ ํ†ตํ•ด์„œ ์ฑ„์  ๋˜๊ณ , ๋ฌธ์ œ 4,5๋Š” ๋ณด๊ณ ์„œ์— ์ž‘์„ฑํ•œ๋‹ค. ๋ฌธ์ œ1> parser ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ผ ๋ฌธ์ œ2> artist class ๋ฐ artist๋ฅผ ์ƒ์†๋ฐ›๋Š” class ๊ทธ๋ฆฌ๊ณ  drawer class๋ฅผ ๊ตฌํ˜„ํ•˜๋ผ ๋ฌธ์ œ3> drawer class๋ฅผ ์ƒ์†๋ฐ›๋Š” class๋“ค์„ ๊ตฌํ˜„ํ•˜๋ผ ๋ฌธ์ œ4> drawer ์ƒ์„ฑ์ž๊ฐ€ artist๊ฐ€ ์•„๋‹Œ artist*๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋ผ (๋ณด๊ณ ์„œ์— ์ž‘์„ฑ) ๋ฌธ์ œ5> artist ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ž์‹ ๋งŒ์˜ style์„ ์ •์˜ํ•˜๊ณ  ๊ทธ๋ฆผ์„ ์ถœ๋ ฅํ•˜๋ผ (๋ณด๊ณ ์„œ์— ์ž‘์„ฑ) ๋ฌธ์ œ6> ์ œ์‹œ๋œ ํด๋ž˜์Šค๋“ค์„ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€์ ์—์„œ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–ค ์ ์„ ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„์ง€ ํ† ์˜ํ•˜๋ผ (๋ณด๊ณ ์„œ์— ์ž‘์„ฑ) 11

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] Csed 232 object-oriented programing assignmentย  3 โ€“ inheritance & polymorphism[SOLVED] Csed 232 object-oriented programing assignmentย  3 โ€“ inheritance & polymorphism
$25