E D R , A S I H C RSS

Dispatched Interpretation

Dispatched Interpretation

ฝ”๋”ฉ€ ”„๋กœธ๋ž˜๋ฐ— žˆ–ด„œ •„ˆ˜ ด๋‹ค. ๋ฐ„ฐ€ „‚ฐœผ๋กœ๋ถ€„ฐ ๋ถ„๋ฆฌ๋˜–ด žˆ๋˜ ณผฑฐ—๋Š”, ฝ”๋”ฉ ž‘—…€ ๋งคšฐ ‘š”–ˆ๋‹ค. ‚‘‚ฌ๋ฆฌ •œ๋ฒˆ ๋‚ด๋ฉด ๋ˆ ฒ๋‚˜ ๋งŽด ๋“ค—ˆ๋‹ค. •˜ง€๋งŒ ฒดง€–ฅ ‹œ๋Œ€—๋Š” ข€ ๋‹ค๋ฅด๋‹ค. ฝ”๋”ฉ€ ๋‘๋ฒˆงธ๋กœ ๋ฐ€๋ ค๋‚˜  ฒด๋“ค ‚ฌ˜ ฑ…ž„„ ๋ถ„๋ฐฐ•˜๋Š” ฒƒฐ€žฅ ‘š”•˜ฒŒ ๋œ ฒƒด๋‹ค. ž˜œ—ฌ„ OO ”„๋กœธ๋žจ—๋Š”, –ด๋– •œ  •๋ณด— ด€‹„ ฐ€ง€๋Š” ฒดฐ€ •˜๋‚˜๋ฐ–— —†–ด••œ‹ค. ฒด๋Š” ž‹ ˜  •๋ณด— ง ‘  ‘•˜ , €๋ฐ€•˜ฒŒ ฝ”๋”ฉณผ ๋””ฝ”๋”ฉ„ ˆ˜–‰•œ‹ค.

ธ.๋Ÿฌ.๋‚˜. ฒด˜  •๋ณดฐ€ ๋‹ค๋ฅธ ฒด— ˜–ฅ„ ๋ฏธณ•ผ๋งŒ • •Œฐ€ žˆ๋‹ค. „‹• •Œ๋Š”, ธ๋ƒฅ ฝ”๋”ฉ๋œ ˜ค๋ธŒ Šธ— ๋ฉ”„ง€๋ฅผ ๋ณด๋‚ด๋ฉด ˆ˜›”•˜ฒŒ •ฒฐฐ€๋Šฅ•˜‹ค. •˜ง€๋งŒ ๋ณตžก•œ ฒฝšฐ—๋Š” ž˜๋“ค๋‹ค. ๋ฌธ œ๋Š” ˆ˜๋ฐฑ˜ ด๋–ธŠธ๋“ค—ฒŒ ๋ชจ๋“  ƒ€ž…˜  •๋ณด— ๋Œ€•ด ๋ช…‹œ œผ๋กœ case ˜•ƒœ˜ ตฌกฐ๋ฅผ ๋งŒ๋“คธฐ๋ฅผ ›•˜ง€ •Š๋Š”๋‹ค๋Š” ฒƒด๋‹ค.(??)

—ญ‹œ ฝ”๋“œ๋กœ ••˜๋Š” ฒƒด ๋น ๋ฅด๋‹ค. Shape ฒด๋Š” line, curve, stroke, fill ปค๋งจ๋“œ๋“ค˜ ˆœฐจ กฐ•œผ๋กœ ด๋ฃจ–ด žˆ๋‹ค. ฒƒ€ commandAt(int)๋ผ๋Š” n๋ฒˆงธ ปค๋งจ๋“œ๋ฅผ ๋ฆฌ„•ฃผ๋Š” ๋ฉ”„ง€™€, argumentsAt(int)๋ผ๋Š” ปค๋งจ๋“œ— ๋„˜ฒจ„ ž๋“ค˜ ๋ฐฐ—ด„ ๋ฆฌ„•ฃผ๋Š” ๋ฉ”„ง€๋ฅผ  œณต•ค€๋‹ค.
~cpp 
class PostScriptShapePrinter
{
public:
	void display(Shape& aShape)
	{
		for(int i = 0 ; i < aShape.size() ; ++i)
		{	
			void* command = aShape.commandAt(i); // ๋ฌธ๋ฒ• ๋งž๋‚˜?--;
			Arguments& argument = aShape.argumentsAt(i);
			if(command == lineFunc)
			{
				printPoint(argument.at(1));
				space();
				printPoint(argument.at(2));
				space();
				nextPutAll("line");
			}
			else if(command == curveFunc)
			/*	...	*/
		}
	}
};
œ„˜ ฝ”๋“œ๋ฅผ ๋ณด๋ฉด •Œ ง€๋งŒ, CURVE ๋‹Œ—๋Š” STROKE, FILL ๋“ฑ„† ๋‚˜˜ฒƒด๋‹ค. ฆ‰, case ตฌกฐ๋ฅผ ”€œผ๋กœจ, OAOO˜ ›น™„ œ„๋ฐ˜•˜  žˆ๋‹ค. — šฐ๋ฆฌ๋Š” case ตฌกฐฐ€ ฝ”๋”ฉ๋œ ฒด •ˆ— ˆจฒจง€๋„๋ก •˜๋Š” •ฒฐฑ…•„š”•˜‹ค.

๋ชจ๋“  ปค๋งจ๋“œ๋ฅผ œ„•œ case ตฌ๋ฌธ„ “ฐง€ ๋ง , PostScriptShapePrinter— ๋ชจ๋“  ปค๋งจ๋“œ๋ฅผ ๋‘ž.
~cpp 
void PostScriptShapePrinter::line(Point& from, Point& to)
{
	printPoint(from);
	space();
	printPoint(to);
	space();
	nextPutAll("line");	
}
void PostScriptShapePrinter::curve(/* ... */) { /* ... */ }
/* ... */

˜•œ, commantAtด๋‚˜ argumentAtฐ™€ ๋ฉ”„ง€ ๋ง , sendCommand(at,to) ฐ™€ ๋ฉ”„ง€๋ฅผ  œณต•˜ž. œ„˜ line,curve๋„ ผดด๋ฏ€๋กœ ฐ™ด ๋‹ค๋ฃฐˆ˜ žˆ๋‹ค.
~cpp 
void PostScriptShapePrinter::display(Shape& aShape)
{
	for(int i = 0 ; i < aShape.size() ; ++i)
	{
		aShape.sendCommand(i,this);
	}
}
 € ๋ฉ”†Œ๋“œ๋Š” Shape๋กœ ฐ€๋Š”ฒŒ ‹„ ๋“ฏ•˜‹ค.
~cpp 
void Shape::sendCommandTo(Object& anObject)
{
	for(int i = 0 ; i < size() ; ++i)
	{
		sendCommand(i,object);
	}
}
ธ๋Ÿฌ๋ฉด ด๋ ‡ฒŒ „‹•„‹ค.
~cpp 
void PostScriptShapePrinter::display(Shape& aShape)
{
	aShape.sendCommandTo(this);
}

 •๋ฆฌ•ด๋†“  ๋ณด๋‹ˆ... ๋ฌดŠจ ๋งง€ ๋ชจ๋ฅด ‹ค.--; •žด๋ž‘ ๋’ค˜ —ฐด€ด€„ฐ€ ƒ๋‹žˆ ๋–จ–ด„‹ค. ๋ณธ˜ •„ด ๋ถ€กฑ•œ ƒ“ด๋‹ค. ๋น ๋ฅธ ‹œผ ๋‚ด— ๋ณด••„œ ˜ฌ๋ฆฌ ‹ค.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:08
Processing time 0.0130 sec