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.0120 sec