32-2-³ª.¿¹¿Ü Ŭ·¡½º °èÃþ

¿¹¿Ü Ŭ·¡½ºµµ Ŭ·¡½ºÀ̹ǷΠ»ó¼ÓÇÒ ¼ö ÀÖ°í ´ÙÇü¼ºµµ ¼º¸³ÇÑ´Ù. ºñ½ÁÇÑ Á¾·ùÀÇ ¿¹¿Ü¶ó¸é ¿¹¿Ü Ŭ·¡½ºÀÇ °èÃþÀ» ±¸¼ºÇÏ¿© ¹Ýº¹µÇ´Â Äڵ带 ÁÙÀÏ ¼ö ÀÖ°í °¡»ó ÇÔ¼ö¿¡ ÀÇÇØ ¿¹¿Ü 󸮿¡µµ ´ÙÇü¼ºÀ» Àû¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼ýÀÚ¸¦ ÀÔ·Â¹ÞµÇ 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°¡ ´ÙÇüÀûÀ¸·Î ¿¡·¯¸¦ ó¸®ÇÑ´Ù.