¿¹¿Ü Ŭ·¡½ºµµ Ŭ·¡½ºÀ̹ǷΠ»ó¼ÓÇÒ ¼ö ÀÖ°í ´ÙÇü¼ºµµ ¼º¸³ÇÑ´Ù. ºñ½ÁÇÑ Á¾·ùÀÇ ¿¹¿Ü¶ó¸é ¿¹¿Ü Ŭ·¡½ºÀÇ °èÃþÀ» ±¸¼ºÇÏ¿© ¹Ýº¹µÇ´Â Äڵ带 ÁÙÀÏ ¼ö ÀÖ°í °¡»ó ÇÔ¼ö¿¡ ÀÇÇØ ¿¹¿Ü 󸮿¡µµ ´ÙÇü¼ºÀ» Àû¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼ýÀÚ¸¦ ÀÔ·Â¹ÞµÇ 100 ÀÌÇÏÀÇ ¾çÀÇ Â¦¼ö¸¸ ÀԷ¹ÞÀ¸¸ç ³ª¸ÓÁö ¼ýÀÚ´Â ¸ðµÎ ¿¹¿Ü·Î ó¸®ÇÑ´Ù.
|
¿¹ Á¦ : InheritException |
#include <Turboc.h>
class ExNegative
{
protected:
int Number;
public:
ExNegative(int n) : Number(n) { }
virtual void PrintError() {
printf("%d´Â À½¼öÀ̹ǷΠÀ߸øµÈ °ªÀÔ´Ï´Ù.\n",Number);
}
};
class ExTooBig : public ExNegative
{
public:
ExTooBig(int n) : ExNegative(n) { }
virtual void PrintError() {
printf("%d´Â ³Ê¹« Å®´Ï´Ù. 100º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù.\n",Number);
}
};
class ExOdd : public ExTooBig
{
public:
ExOdd(int n) : ExTooBig(n) { }
virtual void PrintError() {
printf("%d´Â Ȧ¼öÀÔ´Ï´Ù. ¦¼ö¿©¾ß ÇÕ´Ï´Ù.\n",Number);
}
};
void main()
{
int n;
for (;;) {
try {
printf("¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§ 0) : ");
scanf("%d",&n);
if (n == 0) break;
if (n < 0) throw ExNegative(n);
if (n > 100) throw ExTooBig(n);
if (n % 2 != 0) throw ExOdd(n);
printf("%d ¼ýÀÚ´Â ±ÔÄ¢¿¡ ¸Â´Â ¼ýÀÚÀÔ´Ï´Ù.\n",n);
}
catch (ExNegative &e) {
e.PrintError();
}
}
}
À½¼ö¿¡ ´ëÇÑ ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ExNegative¸¦ °¡Àå ÃÖ»óÀ§ Ŭ·¡½º·Î µÎ°í À½¼ö¿¡ ´ëÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â PrintError¸¦ °¡»ó ÇÔ¼ö·Î Á¤ÀÇÇß´Ù. ±×¸®°í ÀÌ Å¬·¡½º¸¦ »ó¼ÓÇÏ¿© ExTooBigÀ̶ó´Â Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¿© 100À» ÃʰúÇÏ´Â Å« ¼ö¿¡ ´ëÇÑ ¿¹¿Ü¸¦ ó¸®Çϵµ·Ï ÇßÀ¸¸ç ExTooBigÀ¸·ÎºÎÅÍ È¦¼ö ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ExOdd¶ó´Â Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù. ·çÆ® ¿¹¿Ü Ŭ·¡½ºÀÎ ExNegative°¡ PrintError¸¦ °¡»ó ÇÔ¼ö·Î Á¤ÀÇÇßÀ¸¹Ç·Î ÆÄ»ý Ŭ·¡½ºÀÇ PrintErrorµµ ¸ðµÎ µ¿ÀûÀ¸·Î °áÇյǴ °¡»ó ÇÔ¼öÀÌ´Ù.
main¿¡¼ ºñ½ÁÇÑ ¿¹¿ÜµéÀ» ó¸®ÇÒ ¶§´Â ¿¡·¯ ³»¿ë¿¡ ¸Â´Â ¿¹¿Ü °´Ã¼¸¦ »ý¼ºÇÏ¿© ´øÁö±â¸¸ ÇÏ¸é µÈ´Ù. catch´Â °¢ ¿¹¿Ü °´Ã¼¸¦ µû·Î ó¸®ÇÒ ÇÊ¿ä¾øÀÌ ·çÆ® ¿¹¿Ü °´Ã¼ÀÎ ExNegative¿¡ ´ëÇØ¼¸¸ ó¸®ÇÏ¸é µÇ´Âµ¥ ¿Ö³ÄÇϸé ÀÌ Å¬·¡½º·ÎºÎÅÍ ÆÄ»ýµÈ Ŭ·¡½ºµéÀº ¸ðµÎ ExNegative¿Í IS A °ü°è¿¡ Àֱ⠶§¹®ÀÌ´Ù. catch¿¡´Â Àü´Þ¹ÞÀº ¿¹¿Ü °´Ã¼ e·ÎºÎÅÍ PrintError ÇÔ¼ö¸¸ È£ÃâÇϸé eÀÇ Å¸ÀÔ¿¡ ¸Â´Â °¡»ó ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ¾î ¿¹¿ÜÀÇ Á¾·ù¸¦ ÆÇº°ÇÏ´Â ÀÏÀº ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. e.PrintError°¡ ´ÙÇüÀûÀ¸·Î ¿¡·¯¸¦ ó¸®ÇÑ´Ù.