¤¤¤s¤j¾Ç West BBS-¦è¤lÆW¯¸

¡y¥D¿ï³æ¡z
¤ÀÃþ§G§i
¤ÀÃþºëµØ
¥ð¶¢²á¤Ñ
­Ó¤H¶l¥ó
­Ó¤H³]©w
­«·sµn¤J
¡yÀ³¼Æ¨t89¯Å¡zºëµØ°Ï§G§i
¡ö¦^¦Cªí   ¡ô¤W¤@½g   ¡õ¤U¤@½g     

µo«H¤H¡Gbbs@neptune.cksh.tp.edu.tw
¤é´Á¡GFri Oct 24 09:20:01 1997
¼ÐÃD¡G«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 1

§@ªÌ: lcr (¤p¤û) ¬ÝªO: CKCSC
¼ÐÃD: ª«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 1
®É¶¡: Tue Oct 15 04:43:51 1996

              C++ª«¥ó¾É¦Vµ{¦¡»y¨¥Â²©ú±Ðµ{

<²Ä¤@³¹  ·§½×>

¼¶¤å:µ{¦¡³Ð§@°Ï¤p¾ð         ¨Ï¥Î½s;¹:Turbo C++ 3.0

­×§ï:lcr(¤p¤û)
­×§ï«e¨¥:     ³o½g¤p¾ð¼gªº oop ·§©ÀÆZ®e©öÀ´ªº, ÆZ¾A¦Xªì¾ÇªÌ¬Ý¤@¤U..
          ¥u¬Oµ§ªÌı±o¼gªº¦³ÂI¶Ã¶Ãªº (^_^), ©Ò¥H¤p§Ì¦b³o¾ã²z¤F¤@¤U,
          ¨Ã¨S¦³­×§ï¤º®e....½Ð¤p¾ð­ô­ô¨£½Ì°Õ....:p
                                                     Lcr (1996.10.13)

ŪªÌ¶·ª¾:
      ¥»¤å³¹¥ÑC ¶}©l½Í°_, ºâ¬O¤@½gC++ªº¤Jªù°Ñ¦Ò®Ñ, ¤å¤º°²³]¦U¦ì¤w¸g¦³
  C »y¨¥ªº°ò¦,¬OC++ªºªì¾ÇªÌ, ŪªÌ¦Ü¤Ö¥²¶·¹ïC¦³¬Û·íµ{«×ªº¼ô±x, ¦p¬yµ{
  ±±¨î(if,for,while,switch...),«ü¼Ð,°}¦C,µ²ºc(struct), ³£¥²¶·«D±`¼ô±x
  , §_«h®£©È·|¦³¾\Ū¤Wªº§xÃø....

      ¥»¤å¥óªº¥Øªº¬O·Q­nÅýC++§ó¦n¾Ç, ¨Ï¤j®a³£¯à»´©öªºÁA¸ÑC++ªººë¸q¡C
  ¦]¦¹¥»¤å¥óÅwªï¶Ç¾\, ­Y¦³»Ý­n¤]Åwªï°µ¾A·íªº­×§ï, ¥H­×¥¿¿ù»~©Î¼W¥[¥i
  Ū©Ê. ¦ý½Ð¤Å¥[¤J¤£¶®ªº¨¥»y, ¦Ó¥B­×§ïªÌ°È¥²µù©ú­×§ïªÌ¦WºÙ¤Î­×§ï¤é´Á,
  ¨Ã«O¯d­ì§@ªÌ¤§Ã±¦W. ÁÂÁ¦U¦ì!


<1> ±qµ²ºc½Í°_

      ­º¥ý§Ú¥áµ¹¦U¦ì¤@­ÓÃD¥Ø, °²³]¦U¦ì¥¿¦b³]­p¤@­Ó¹CÀ¸, ¿Ã¹õ¤W¦³¤QÁû
  ¤l¼u,¦U¦b¤£¦Pªº¦ì¸m, ©¹¤U¤@»ô­¸¥h, ª½¨ì­¸¥X¿Ã¹õ¬°¤î,¦V³o¼Ëªºµ{¦¡§A
  ·|«ç»ò°µ©O? µ¹§A¤­¤ÀÄÁ·Q¤@·Q.........­n·Q³á!

      ·Q§¹¤F¤~¥i¥HÄ~Äò©¹¤U¬Ý³á!
      Ok!·Q¦n¤F¶Ü? Åý§Ú¨Ó¤½§Gµª®×§a!


 §@ªk¤@: ­è¾Ç²ßC ©ÎªÌ¬OºD¥ÎBasic ªº¤H¤]³\·|³o»ò°µ~~~~

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xvoid show(int x,int y);  //³o¬O¤@­Ó°Æµ{¦¡,¥i¥H¦b(x,y)¤Wµe¥X¤@ÂI,  ¢x
  ¢x                         //¦Ü©ó­n«ç»ò¼g´N¥ý¤£ºÞ¥L,¤Ï¥¿§Aª¾¹D¦³³o»ò¢x
  ¢x                         //¤@­Ó¨ç¦¡´N¹ï¤F....                     ¢x
  ¢xvoid main()                                                       ¢x
  ¢x{                                                                 ¢x
  ¢x    int x[10],y[10];//³o¬O°O¿ý¤QÁû¤l¼u¦ì¸mªº°}¦C                  ¢x
  ¢x                                                                  ¢x
  ¢x    while(1)                                                      ¢x
  ¢x    for(int i=0;i<10;i++)                                         ¢x
  ¢x    {                                                             ¢x
  ¢x            show(x[i],y[i]);  //µe¥X¨C¤@­Ó¤l¼u                    ¢x
  ¢x            y[i]++;           //±N¤l¼u©¹¤U²¾¤@®æ                  ¢x
  ¢x    }                                                             ¢x
  ¢x}                                                                 ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ³oºØ§@ªk¥i¥H»¡¬O¤@¯ë¤H³Ì±`¥Îªº§@ªk¤F, ¹ï¤pµ{¦¡¤]´N°÷¤F! ¯ÊÂI¬O¤@
  ¥¹µ{¦¡¤j°_¨Ó¤F, ­n³B²zªºªF¦èÅܦh¤F, ¨Ò¦p¿Ã¹õ¤W¦³¤QÁû¤l¼u, ¤Q¿´²î, ¤Q
  Áû¹k¥Û, ¤QÁû­I´º¦æ¬P©Î§ó¦h¨ºµ{¦¡´N·|Åܱo­â¶Ã¤£³ô¤F!! (·Q¹³¤@¤U)....
  ¥ú¬OŪÀ´µ{¦¡¬O°µ¤°»òªº´N¬O¤@¥ó«Ü¨¯­Wªº¨Æ....¦³¥t¥~¤@ºØ§@ªk¦p¤U:


 §@ªk¤G: ¹ïC¤ñ¸û¦³·§©Àªº¤HÀ³¸Ó·|³o»ò°µ~~~~

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xvoid show(int x,int y);  //³o¬O¤@­Ó°Æµ{¦¡,¥i¥H¦b(x,y)¤Wµe¥X¤@ÂI,¢x
  ¢x                         //¦Ü©ó­n«ç»ò¼g´N¥ý¤£ºÞ¥L,¤Ï¥¿§Aª¾¹D¦³  ¢x
  ¢x                         //³o»ò¤@­Ó¨ç¦¡´N¹ï¤F......             ¢x
  ¢xvoid main()                                                     ¢x
  ¢x{                                                               ¢x
  ¢x    struct _Bullet       //³o¬O¤@­Ó "¤l¼u" ªº "¼Ò¤l".           ¢x
  ¢x    {                                                           ¢x
  ¢x            int x;                                              ¢x
  ¢x            int y;                                              ¢x
  ¢x    };                                                          ¢x
  ¢x                                                                ¢x
  ¢x   _Bullet Bullet[10];   //¥Î¼Ò¤l°µ¥X10Áû¤l¼u.                  ¢x
  ¢x                                                                ¢x
  ¢x   while(1)                                                     ¢x
  ¢x        for(int i=0;i<10;i++)                                   ¢x
  ¢x        {                                                       ¢x
  ¢x            show(Bullet[i].x,Bullet[i].y);  //±N¤l¼u¨q¥X¨Ó.     ¢x
  ¢x            Bullet[i].y++;                  //±N¤l¼u©¹¤U²¾¤@®æ. ¢x
  ¢x        }                                                       ¢x
  ¢x}                                                               ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ³o­Óµ{¦¡¦nÁA¸Ñ¦h¤F, §A¥i¥H·Q¹³ _Bullet ¬O¤l¼uªº "¼Ò¤l", §Ú­Ì¥Î
  ³o­Ó¼Ò¤l°µ¥X¤F10Áû¦W¦r¤À§O¬°Bullet[0], Bullet[1]....ªº¤l¼u, ¦ì¸m¬O
  ¤l¼uªº¤@­Ó"ÄÝ©Ê"(´N¦n¹³¨­°ªÅé­«¬O¤HªºÄݩʤ@¼Ë), µ{¦¡¥i¥H¥Ñ
  Bullet[i].x©ÎBullet[i].y¨Ó¨ú¥Î³o¨ÇÄÝ©Ê, ³o¼Ë¤lµ{¦¡´N¦nÀ´¦h¤F, µL½×
  µ{¦¡¼g±o¦h¤j, ¤]¥i¥H«Ü®e©öªºª¾¹D¬Y­ÓÅܼƨ쩳¬O½Öªº,°µ¤°»ò¥Îªº, ¤£·|
  ¹³¤W¤@­Óµ{¦¡¤@¼Ë­â¶Ã¤£³ô¤F!


  Á`µ²:
      ¨ä¹ê¨â­Óµ{¦¡³Ì¤jªº®t§O, ¦b©ó¬O§_"ÀÀª«¤Æ"¦bµ{¦¡¤@,¤l¼u³Q¤Æ¦¨¤@­Ó
  ­Óªº°}¦C,¤À©~¦U³B, ¨S¤°»òÃö³s¦bµ{¦¡¤G, ¤l¼u³Qµ{¦¡»y¨¥¼ÒÀÀ¦¨¤@­Ó­Óªº
  "¤l¼u"§Ï©»§Ú­Ì¾Þ§@ªº¯u¬O¤@ÁûÁûªº¤l¼u¦üªº. ²³æªº»¡,²Ä¤@­Óµ{¦¡¬O°ÝÃD
  ¾E´Nµ{¦¡, (µw§â"¤l¼u"©î¦¨²@¤£¬ÛÃöªº°}¦C)¦Ó²Ä¤G­Óµ{¦¡«h¬Oµ{¦¡¼ÒÀÀ°ÝÃD
  . (¥Îstruct _Bullet°µ¥X¤QÁû"¤l¼u")¦Ó¶Ç²Îµ{§Ç¾É¦V©Mª«¥ó¾É¦V³]­pªº®t§O
  ¤§¤@´N¦b¦¹, ¶Ç²Îµ{§Ç¾É¦Vªº³]­pÅýµ{¦¡³]­pÅܱo«Ü©â¶H, µ{¦¡ªºµ²ºc»P§Ú­Ì
  ©Ò¸gÅç¨ìªº¥@¬É¤j¤£¬Û¦P, ³oºØµ²ªG¾É­Pµ{¦¡«ÜÃø³QÁA¸Ñ(¦]¬°¹H­I¤F¤é±`¸gÅç
  ¹À!)°£¿ù©MºûÅ@°_¨Ó´N«Ü§xÃø!!

    ¦Óª«¥ó¾É¦Vµ{¦¡³]­p°ò¥»¤W´N¬O­n±Nµ{¦¡»y¨¥®³¨Ó¼ÒÀÀ¥@¬Éªº¹B§@!!!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ³o¼Ë¤l³]­pµ{¦¡¨ä¹ê´N¬O¦b¼ÒÀÀ¥@¬Éªº¹B¦æ, µ{¦¡·|§ó¦n¤F¸Ñ,§ó®e©ö»s§@,
  ºûÅ@°_¨Ó¤]»´ÃP¦h¤F!


<2> ª«¥ó»PÃþ§O:
      ª«¥ó©MÃþ§O¬Oª«¥ó¾É¦Vµ{¦¡³]­p¤¤²Ä¤@­Ó­n±µÄ²¨ìªºÆ[©À, Åý§Ú­Ì¨Ó¬Ý¬Ý
  ¤°»ò¬Oª«¥ó,¦ó¿×Ãþ§O:

        §Ú­Ì¦b¤W¤@½g¤¤¥Î"¤l¼uªº¼Ò¤l"(struct _Bullet) °µ¥X¤F10Áû"¤l¼u"
    (Bullet[i])¦pªG¥Î¤ñ¸û¾Ç³N©ÊªºÁ¿ªk, ¨ä¤¤"¤l¼uªº¼Ò¤l"´N¬O"Ãþ§O",¦b­^
    ¤å¥H"Class"¨Óªí¥Ü, ¨º¤@ÁûÁûªº"¤l¼u"´N¬O"ª«¥ó",­^¤å¬O"Object".

        ¦bC++¤¤,¬°¤F±j½Õ³oºØÆ[©À,³q±`¤£¥Îstruct¨Ó°µ"¼Ò¤l", ¦Ó§ï¥Î
    "class"¨Ó°µ!! ¥H«á§Ú­Ì¤]±N¥u¥Îclass¨Ó°µ"¼Ò¤l"(´N¬OÃþ§O°Õ!!) °ò¥»¤W
    ¨â­Ó±Ô­z¬O®t¤£¦hªº,¦ý¤´¦³¤@¨Ç¤p®t§O, ¦Ü©ó®t§O¦b­þ¨à,³o­Ó§Ú­Ìµy«á¦A
    ±Ô.

    ¤W¤@­Óµ{¦¡¤¤ªº"Struct _Bullet"¨ä¹ê¤]¥i¥H¼g¦¨³o¼Ë, ®ÄªG¤@¼Ò¤@¼Ë©O!!

    class _Bullet
    {
        public:   //¦h¤F³o­Ó±Ô­z
          int x;
          int y;
    };

    §Ú­Ì¥i¥H¼s¸qªº³o¼Ë»¡, ­Y¦³¤@¦æ±Ô­z :

      double a,b;

        §Ú­Ì¥i¤£¥i¥H»¡double ¬O¤@­Ó­¿ºë«×¯BÂI¼Æªº¼Ò¤l©O? ¦Ó¬O¤£¬Oa,b¥¿
    ¬O¥Ñdouble³o­Ó¼Ò¤l°µ¥X¨Óªº¯BÂI¼Æ"ª«¥ó"©O? ¦P¼Ëªº,©Ò¦³ªºC »y¨¥°ò¥»¸ê
    ®Æ«¬ºA, ¨Ò¦pint°Õ! char°Õ! «ü¼Ð°Õ! °ò¥»¤W³£¬O¤@ºØ"¼Ò¤l". ¤]´N¬O¤@ºØ
    "Ãþ§O" ¦Ó¥Ñ³o¨Ç¼Ò¤l©Ò°µ¥X¨ÓªºÅܼƨä¹ê³£¬O¤@­Ó­Óªºª«¥ó!

        §ó¼s¸qªº»¡,¨ä¹ê©Ò¦³ªº¸ê®Æ«¬ºA³£¬OÃþ§O, ¦Ó©Ò¦³ªºÅܼƳ£¬Oª«¥ó, ¤£
    ¬O¶Ü? ¥u­n³o¼Ë·Q, À³¸Ó´N¤£ÃøÁA¸ÑÃþ§O©Mª«¥óªº·N¸q§a ?!


<3> Ãþ§O¦¨­û¨ç¼Æ
      «e­±©ÒÁ¿¨ìªºµ{¦¡¸Ì,§Ú­Ì¥Î"¤l¼u¼Ò¤l"(§Y¤l¼uÃþ§O)°µ¥X¤F¤QÁû"¤l¼u"
  µM«á¥Î¤@¨Ç±Ô­z¤Îshow()¨ç¦¡¥h¨Ï¤l¼u«e¶i¨Ãµe¥X¨Ó, ³o¼Ë¤l»¡¹ê¸ÜÁÙ¤£°÷¹³
  ¯u¹êªº¤l¼u, ¦]¬°¯u¥¿ªº¤l¼u¬O"¦Û¤v"­¸ªº, ­þ¬O¥Ñ¥~¤O¾ÞÁaªº©O? ¨ä¹ê§Ú­Ì
  ¥i¥H³o»ò°µ:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xvoid main()                                                       ¢x
  ¢x{                                                                 ¢x
  ¢x    class _Bullet//³o¬O¤@­Ó "¤l¼u" ªº "¼Ò¤l",§ï¥Îclass¨Ó¼g        ¢x
  ¢x    {                                                             ¢x
  ¢x          public:                                                 ¢x
  ¢x            int x;                                                ¢x
  ¢x            int y;                                                ¢x
  ¢x            void show(int x,int y);    //³o¬O¤@­Ó¨ç¦¡,¥i¥H¦b(x,y) ¢x
  ¢x                                       //¤Wµe¥X¤@ÂI,¤º®e¥ý¤£ºÞ.   ¢x
  ¢x            void go()                  //³o¬O¤@­Ó¨ç¦¡,©I¥s¥L¥i¥HÅý¢x
  ¢x            {                          //¤l¼u©¹¤U²¾¤@®æ¨Ãµe¥X¨Ó.  ¢x
  ¢x                    show(x,y);                                    ¢x
  ¢x                    y++;                                          ¢x
  ¢x            }                                                     ¢x
  ¢x            int collision(int X,int Y) //³o¬O¤@­Ó¨ç¦¡,¥Î¨Ó§PÂ_¤l¼u¢x
  ¢x            {                          //¬O§_¼²¨ìªF¦è, ¤£¬O«h¶Ç¦^0¢x
  ¢x                    return (x==X && Y==y);                        ¢x
  ¢x            }                                                     ¢x
  ¢x    };                                                            ¢x
  ¢x                                                                  ¢x
  ¢x    _Bullet Bullet[10];//¥Î¼Ò¤l°µ¥X10Áû¤l¼u                       ¢x
  ¢x                                                                  ¢x
  ¢x    while(1)                                                      ¢x
  ¢x            for(int i=0;i<10;i++)                                 ¢x
  ¢x                Bullet[i].go();        //¤U©R¥Oµ¹¤l¼u,­n¤l¼u©¹¤U²¾¢x
  ¢x                                       //¤@®æ,¨Ã±N¦Û¤vµe¥X        ¢x
  ¢x}                                                                 ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      «z¶ë!¤Ó¸Ø±i¤F§a!! ¨ç¦¡°ÏµM¥i¥H©ñ¨ì"¼Ò¤l"¸Ì­±¥h!!!! §OÃhºÃ,³o¬OC++
  ªº»yªk,

    ¦Ó¥B©ñ¨ì"¼Ò¤l"¸Ìªº¨ç¦¡ÁÙ¥i¥H¥H ª«¥ó¦W.¨ç¦¡¦W(°Ñ¼Æ); ªº¤èªk©I¥s³á!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ©Î³\§A·|»¡:§â¨ç¦¡©ñ¨ìclass±Ô­z¤¤¦³¤°»ò¦n³B©O? ¨ä¹ê§Ú­Ì¥i¥H³o¼Ë·Q:

        Bullet[i]¬O¤@ÁûÁûªº¤l¼u, ¦Ó³o­Ó¤l¼u¬O¦³¥Í©Rªº, ¤]´N¬O»¡§Ú­Ì¥i
    ¥H¤U©R¥Oµ¹¥L(¥ÎÂI·Q¹³¤O). ¦ÓBullet[i].go()¤¤ªº"go()" ¨ä¹ê´N¬O©R¥O
    ªº¦WºÙ, ·N«ä´N¬O¸ò¤l¼u»¡:"½Ä°Ú¡I½Ä¨ì¤U¤@®æ¥h" ¤l¼u±µ¨ì©R¥O«á¥L"¦Û
    ¤v"¦ÛµM´N·|·Ó§@, ¦Ó¦³ªº©R¥O¬O¥²¶·¦³ªþ±a¤@¨Ç°T®§ªº, ¨Ò¦pcollision
    ¬O°Ý¤l¼u¬O§_¼²¨ì¤F(X,Y)³o­ÓÂI, ¦]¦¹ÂIªº¦ì¸m¥²¶·§i¶D¤l¼u, ¦Ó±Ô­z­n
    ¼g¦¨Bullet[i].collision(X,Y); ¦pªG¤l¼uµo²{¼²¨ì¤F,¥L·|§i¶D§A©ó¬O§A
    ¥i¥H°µ¤@¨Ç±¹¬I,¨Ò¦pµe¥XÃz¬µµe­±...©Î¤°»òªº...

  *¹³¦¹Ãþ©ñ¦bÃþ§O±Ô­z¤ºªº¨ç¦¡ºÙ¬°Ãþ§Oªº¨ç¦¡¦¨­û¡C
                                       ~~~~~~~~
  *¦Ó¹³int x,y ³o¨Ç¦bÃþ§O¤ºªºª«¥ó«hºÙ¬°¸ÓÃþ§Oªºªº¸ê®Æ¦¨­û¡C
                                                 ~~~~~~~~
  ³o¼Ë¥i¥HÁA¸Ñ¶Ü?


<4> ¨p¥Î¤Î¤½¥Î¦¨­û,¸ê°TÁôÂÃ:
      §ë¹L³c½æ¾÷¶Ü? (¼o¸Ü!!!) ³c½æ¾÷¨ä¹ê¬O¤@­Ó«Ü½ÆÂø«Ü½ÆÂøªº¾÷¾¹, ¥i¬O
  ¥Lªº¨Ï¥Î¤èªk«o«D±`«D±`ªºÂ²³æ, ¥u­n§ë­Óµw¹ô¶i¥h(©I¥s¦¨­û¨ç¦¡), «ö¤U©Ò
  ­nªº¶¼®Æ (¦¨­û¨ç¦¡ªº°Ñ¼Æ), ¶¼®Æ¦ÛµM´N·|±¼¥X¨Ó!! §A¤£¥²ºÞ³c½æ¾÷¬O«ç»ò
  °µ¨ìªº, §A¥u­n·|¾Þ§@´N¥i¥H¤F! ­ì¦]¬O³c½æ¾÷§â½ÆÂøªº³¡¥÷Âð_¨Ó¤F, ¥uÅS
  ¥X¤F¨Ñ¤H¨Ï¥Îªº³¡¥÷.

      ¦P¼Ëªº¹D²z, §Ú­Ìªº¤l¼u"Ãþ§O"¤]¥i¥H³o¼Ë, ¨ä¹ê§Ú­Ì§Æ±æ¤£ºÞ¤l¼u¬O«ç
  »ò­¸ªº, ¥u­n§Ú­Ì¥s¥L­¸¥L´N­¸´N¥i¥H¤F. ¦Ó¥B¾Þ§@¤èªk¬O¶V²³æ¶V¦n, ©Ò¥H
  °Õ! ¤@¨Ç¨Ã¤£·|³Q¨Ï¥ÎªÌ¨Ï¥Î¨ìªº¨ç¦¡, ¦pshow()°Õ! ¥H¤Î¤@¨Ç¤£¨¬¬°¥~¤H¹D
  ªº¸ê®Æ,¦pint x,y °Õ! ¦pªG¯à°÷§â¥L­ÌÂð_¨Ó(´N¹³³c½æ¾÷§â¾÷¾¹³¡¥÷¥]°_¨Ó
  ) ¥uµ¹Ãþ§O¦Û¤vªº¦¨­û¨ç¦¡¥h¨Ï¥Î, ¦ÓÅS¥X¨º¨Ç¤½¥Îªº¾Þ§@¤¶­±, ´£¨Ñµ¹©Ò¦³
  ªº¤H¨Ï¥Î, ¨º¸Ó¦³¦h¦n!

      ©¯¦nC++¦­´N·Q¨ì³o¤@ÂI¤F, ´£¨Ñ¤F"private:"¥H¤Î"public:"³o¨â­Ó±Ô­z
  ¨Ñ§Ú­Ì¨Ï¥Î, ½Ð¬Ý§ï¶i«áªº¤l¼uÃþ§O:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xclass _Bullet//³o¬O¤@­Ó "¤l¼u" ªº "¼Ò¤l",§ï¥Îclass¨Ó¼g              ¢x
  ¢x{                                                                   ¢x
  ¢x    private:  //¨p¥Î¦¨­û(³c½æ¾÷ªº¤º³¡),°£¤FÃþ¥»Ãþ§Oªº¨ç¦¡¦¨­û¥~     ¢x
  ¢x      int x;  //,¨ä¥L¤H¬Ò¤£±o¦s¨ú©Î©I¥s¤§                           ¢x
  ¢x      int y;                                                        ¢x
  ¢x      void show(int x,int y);//³o¬O¤@­Ó¨ç¦¡,¥i¥H¦b(x,y)¤Wµe¥X¤@ÂI,  ¢x
  ¢x    public:        //¤½¥Î¦¨­û(³c½æ¾÷ªº¾Þ§@¤èªk),´£¨Ñµ¹©Ò¦³ªº¤H¨Ï¥Î  ¢x
  ¢x      void go()    //³o¬O¤@­Ó¨ç¦¡,©I¥s¥L¥i¥HÅý¤l¼u©¹¤U²¾¤@®æ¨Ãµe¥X¨Ó¢x
  ¢x      {                                                             ¢x
  ¢x            show(x,y);                                              ¢x
  ¢x            y++;                                                    ¢x
  ¢x      }                                                             ¢x
  ¢x      int collision(int X,int Y)     //³o¬O¤@­Ó¨ç¦¡,¥Î¨Ó§PÂ_¤l¼u¬O  ¢x
  ¢x                                     //§_¼²¨ìªF¦è                   ¢x
  ¢x      {                                                             ¢x
  ¢x            return (x==X && Y==y);  //¤£¬O«h¶Ç¦^0                   ¢x
  ¢x      }                                                             ¢x
  ¢x};                                                                  ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      "private:"¬O¤@­ÓC++ªº±Ô­z, ¥L§i¶D½s;¹»¡:¥H¤UªºªFªF¥u¯à¦b³o­ÓÃþ§O
  ¤º¨Ï¥Î, ¤]´N¬O¥u¯àµ¹Ãþ§Oªº¨ç¦¡¦¨­û¨Ï¥Î, ¦]¦¹¦bÃþ§Oªº¥~­±µ´¹ï¤£¯à¦s¨ú©Î
  ©I¥s³o¨Ç¨p¦³ªºÅܼƩΨ禡, §_«h½s;¹¬O·|§i¶D§A»yªk¿ù»~ªº!
      "public:"«h¬Û¤Ï, ¥L§i¶D½s;¹»¡:¥H¤UªºªFªF©Ò¦³ªº¤H³£¥i¥H¨Ï¥Î. µ{¦¡
  ¥i¥H¦b¥ô¦ó¦a¤è¨Ï¥Î¥¦!

      ³o¼Ë¤l¤@¨Ó, ¤l¼u´N¹³³c½æ¾÷¤@¼Ë, §A¥u­nª¾¹D«ç»ò¾Þ§@¥L, ¦Ó¤£¥²ª¾¹D¥L
  ¦p¦ó°Ê§@¤F, ¤]¤£©È·|¤£¤p¤ß¦s¨ú¨ì¤£¸Ó¦s¨úªºªF¦è, ¦Ó¯}Ãa±¼¤l¼uªº¹B¦æ, ¦]
  ¬°¤@¥¹§A·Q­n³o»ò°µ, ½s;¹·|ªý¤î§Aªº!! ¹³³oºØ§â¨S¦³¥²­n¤½¶}ªº¸ê°TÁôÂð_
  ¨Ó,

        ¦b¾Ç³N¤W¥s°µ«Ê¸Ë,¤]ºÙ¬°¸ê°TÁôÂÃ,(­n°O°_¨Ó³á!)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ¥D­n¬O¬°¤F­°§Cµ{¦¡³]­p®vªº­t¾á, ´î¤Ö¿ù»~ªºµo¥Í. ¥H«eª«¥ó¾É¦VªºÆ[©À
  ÁÙ¨S¬y¦æ¥H«e, µ{¦¡®v­n­I­tªº¤@­Ó«Ü¤jªº¥]µö´N¬O­n¨c¨cªº°O¦í©Ò¦³Åܼƪº¦W
  ºÙ¤Î¥\¥Î, (¦³´X¤d­Ó³á!) ¦]¬°©Ò¦³ªºÅܼƳ£¬OÀH®ÉÀH¦a¥i¥H¦s¨úªº, ¤@­Ó¹ïÅÜ
  ¼Æ¿ù»~ªº¦s¨ú, ´N·|³y¦¨¾ã­Ó¨t²ÎÃø¥H°£¿ùªºBug!! ¦Óª«¥ó¾É¦V±N¨S¦³¥²­n¤½¶}
  ªº¸ê®Æ»P¨ç¦¡«Ê¸Ë°_¨Ó, ¥i¥H¤j¤j´î¤Ö³oºØ¿ù»~ªºµo¥Í, ªp¥B, ¸ê°TÁôÂÃ¥i¥HÅý
  Ãþ§O±ø²z¤À©ú, ®e©öÁA¸Ñ. ±N¥~¤H¤£»Ý­nª¾¹DªºªF¦è¥]¸Ë°_¨Ó, ³o¼Ë¤l¬Ýªº¤H(
  ¥]¬A§A¦Û¤v³á!)¥i¥H«Ü®e©öªºª¾¹D¦b³o­ÓÃþ§O¤¤´£¨Ñ¤F­þ¨Ç¹B§@¤èªk, ¥H¤Î³o­Ó
  Ãþ§O¤j·§¬O°µ¤°»òªº.

      ¦Ó¤£·|³Q¤@¤j°ïµL¥Îªº¸ê°T·d±o¤@ÀYÃú¤ô, ®ö¶OÄ_¶Qªº®É¶¡©Mºë¤O! Ok! ©Î
  ³\§A²{¦bÁÙ¤£¯à«ÜÁA¸Ñ¸ê°TÁôÂ꺦n³B! ¤£¹L¬Û«H§Ú, ·í§A¶}©l¼gª«¥ó¾É¦Vµ{¦¡
  ªº®É­Ô, §A´N·|·PÁÂC++ªº!!!

      class ©M struct ¦³¤°»ò®t§O©O? §Ú²×©ó¥i¥H§i¶D§A¤F!!!
  ¥L­Ì®t¦bstructªº¬O¤º©w¬°"public:"ªº, ¦Óclass¬O¤º©w¬°"private:"ªº, ¤]´N
  ¬O»¡:

    void main()
    {
        class _Bullet
        {
                int x,y;
        };

        _Bullet Bullet;
        Bullet.x=5;         //³o¤@¦æ¤£¦Xªk!!!!!
    };

  ³o¼ËÁA¸Ñ¶Ü?


<5> ¨ç¦¡½Æ¸ü
      ¦A¥X¤@­ÓÃD¥Øµ¹¤j®a, ¼g¤@­Ó¨ç¦¡,¦W¬°max ¥i¥H±µ¦¬¨â­Ó¾ã¼Æ,¶Ç¦^¤ñ¸û
  ¤jªº¨º¤@­Ó, ¤@¼Ë¤j´NÀH«K¶Ç¤@­Ó, §A·|«ç»ò¼g©O?

     µ¹§A¨â¤ÀÄÁ......¤@©w­n·Q³á!!!

  OK!·Q¥²¤j®a³£¬O³o¼Ë¼g:

    int max(int a,int b)
    {
        if(a>b)
                return a;
        else
                return b;
    }

      «Ü¦n!¦A¥X¤@­ÓÃD¥Øµ¹¤j®a: °²³]¤W¤@­ÓÃD¥Øªº¨ç¦¡¤w¦s¦b, §Ú²{¦b·Q­n¤@
  ­Ó¥\¯à¤@¼Ëªº¨ç¦¡, ¦ý¬O¬O³B²z­¿ºë«×¯BÂI¼Æªº(double), §A·|«ç»ò¼g©O?

  Ok!·Q¥²À³¸Ó¬O³o¼Ë:

    double maxbouble(double a,double b)  //ª`·N!¨ç¦¡¦W¤£¦P¤F!³o¬OC ªº³W«h!
    {
        if(a>b)
                return a;
        else
                return b;
    }

      ¶â...«Ü¦n«Ü¦n.....¼K¼K!! ¦pªG§ÚÁÙ­n¤@­Ó³B²zªø¾ã¼Æ,¤@­Ó³B²z¦r¤¸,¤@
  ­Ó³B²z«ü¼Ðªº©O? .............¤Ñ°Ú¡I ¥ú¬O©R¦W´NÅý¤H©ü­Ë,¦Ó¥B¨Ï¥Î°_¨Ó«Ü
  ¤£¦ÛµM,¤£¬O¶Ü? §i¶D§A,¨ä¹ê§A¥i¥H¤£­n¼gªº¨º»ò¨¯­Wªº, ¤W¤@­Ó¨Ò¤l¤]¥i¥H¼g
  ¦¨³o¼Ë:

    double max(double a,double b)//ª`·N³á!¦W¦r©Mint max(~~)¤@¼Ë³á!
    {
        if(a>b)
                return a;
        else
                return b;
    }

      ¤£·|§a!¤£¬O¤£¥i¥H³o¼Ë¼g¶Ü?" «¢«¢!§i¶D§A,³o´N¬OC++ªº·s»yªk"¨ç¦¡½Æ¸ü"
  ©Î³\§A·|°Ý:"¥L«ç»òª¾¹D§Ú­n¥Îªº¬O­þ¤@­Ó?" ©ñ¤ß§a!¥Lª¾¹Dªº! ¨Ò¦p¦pªG§A©I¥s
  max(1,2); ¥L´N·|¥Î³B²z¾ã¼Æªº¨º¤@­Ó, ¦pªG§A©I¥s:max(1.3,0.005); ¥L´N·|¥Î
  ³B²z¯BÂI¼Æªº¨º¤@­Ó¯«©_§a!

      ½Æ¸ü¦b¾Ç³N¤W¤SºÙ¬°ÀRºA³sµ², ¦]¬°¨ì©³­n©I¥s¨º­Ó¨ç¦¡¨ä¹ê¦b½sĶªº®É­Ô
  ´N¨M©w¤F, ¥t¥~ÁÙ¦³¤@ºØ¥s°ÊºA³sµ²ªº, ­nµ¥¨ì°õ¦æªº®É­Ô¤~¯à¨M©w, ³o­Ó§Ú­Ì
  ¥H«á¦A»¡.


<6> «Øºc¨ç¦¡
      ¤@­Óª«¥ó¦b«Ø¥ßªº®É­Ô, ¦³®É­Ô§Ú­Ì·|§Æ±æ¯à´À¥Lªì©l¤Æ, ¨Ò¦p»¡§Ú­Ì§Æ±æ
  ¦b«Ø¥ß¤l¼uª«¥ó®É, ­Y¨S¦³«ü©wªì­È, ¨Ò¦p:_Bullet Bullet; «h¤l¼u­è«Ø¥ßªº®É
  ­Ô¦ì¸m¬O(0,0), ­Y¦³«ü©wªì­È, ¨Ò¦p:_Bullet Bullet(10,10); «h¤l¼uªº¦ì¸m¥i
  ¥H³]¬°§Ú­Ì­nªº¦ì¸m, «h³o¼Ë¤l­n«ç»ò°µ©O?

      C++ ´£¨Ñ¤F«Øºc¨ç¦¡(constructor), ¥i¥HÅý§Ú­Ì¦bª«¥ó­è«Ø¥ßªº®É­Ô°µ¤@¨Ç
  ¨Æ±¡, ±Nª«¥óªì©l¤Æ, ½Ð¬Ý¤U¨Ò:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xclass _Bullet       //³o¬O¤@­Ó "¤l¼u" ªº "¼Ò¤l",§ï¥Îclass¨Ó¼g         ¢x
  ¢x{                                                                     ¢x
  ¢x    private:   //¨p¥Î¦¨­û                                             ¢x
  ¢x      int x;                                                          ¢x
  ¢x      int y;                                                          ¢x
  ¢x      void show(int x,int y);   //³o¬O¤@­Ó¨ç¦¡,¥i¥H¦b(x,y)¤Wµe¥X¤@ÂI, ¢x
  ¢x    public:    //¤½¥Î¦¨­û                                             ¢x
  ¢x      _Bullet(){x=y=0;}              //µL°Ñ¼Æ¤§«Øºc¨ç¦¡               ¢x
  ¢x      _Bullet(int X,int Y){x=X;y=Y;} //¦³¨â­Ó°Ñ¼Æ¤§«Øºc¨ç¦¡           ¢x
  ¢x      void go()                      //³o¬O¤@­Ó¨ç¦¡,©I¥s¥L¥i¥HÅý¤l¼u  ¢x
  ¢x      {                              //©¹¤U²¾¤@®æ¨Ãµe¥X¨Ó             ¢x
  ¢x            show(x,y);                                                ¢x
  ¢x            y++;                                                      ¢x
  ¢x      }                                                               ¢x
  ¢x      int collision(int X,int Y)     //³o¬O¤@­Ó¨ç¦¡,¥Î¨Ó§PÂ_¤l¼u¬O§_  ¢x
  ¢x      {                              //¼²¨ìªF¦è, ¤£¬O«h¶Ç¦^0          ¢x
  ¢x            return (x==X && Y==y);                                    ¢x
  ¢x      }                                                               ¢x
  ¢x};                                                                    ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¨ä¤¤_Bullet()¬O¤@­ÓµL°Ñ¼Æªº«Øºc¨ç¦¡, ·íª«¥ó¥H _Bullet Bullet; ªº¤èªk
  «Ø¥ßªº®É­Ô, C++·|¦Û°Êªº©I¥s¦¹¨ç¦¡¨Ó§@ª«¥óªºªì©l¤Æ,¦Ó _Bullet(int X,int Y)
  «h¬O¤@­Ó¦³¨â­Ó¾ã¼Æ°Ñ¼Æªº«Øºc¨ç¦¡, ¨Ò¦p·íª«¥ó¥H _Bullet Bullet(2,17)¨Ó«Ø¥ß
  ªº®É­Ô, C++·|¦Û°Êªº©I¥s¦¹¨ç¦¡¨Ó§@ª«¥óªºªì©l¤Æ.

      ­nª`·Nªº¬O«Øºc¨ç¦¡ªº¦WºÙ¥²¶·©MÃþ§O¦WºÙ¤@¼Ë, «Øºc¨ç¦¡¤£¥i¥H¦³¶Ç¦^­È
  (³s¼gvoid³£¤£¦æ) µ²§ô®É¤]³Ì¦n¤£­n¥Îreturn;©R¥Oµ²§ô, ¤£µM¦b¬Y¨Ç½s;¹¤W
  ·|¦³°ÝÃD. ¨ä¥Lªº¨Æ¶µ³£©M¤@¯ëÃþ§O¤º¨ç¦¡¬Û¦P.


<7> new ©M delete
      ¦bC ¤¤,°t¸m°O¾ÐÅ骺¤èªk³Ì±`¥Îªº´N¬O malloc() ©M free() ¤F! ·íµM¦bC++
  ¤¤, §A¤@¼Ë¥i¥H¹B¥Î³o¨â­Ó¨ç¦¡¨Ó°t¸m°O¾ÐÅé. ¦ý¬O¨Ï¥Î³o¨â­Ó¨ç¦¡¨Ó°t¸m°O¾ÐÅé
  ¦bC++¤¤«o¦³¤@¨Ç¤£§´!! ¦]¬°malloc()ÁöµM·|°t¸m°O¾ÐÅéµ¹ª«¥ó¥Î, ¦ý¬O«o¤£·|©I
  ¥sª«¥óªº«Øºc¨ç¦¡, ³o¼Ë¤l§Ú­Ì´N¤£¯à¦A«Ø¥ßª«¥ó¤§ªì±N¨äªì©l¤Æ¤F!! ©¯¦nC++·Q
  ¨ì¤F³oÂI, ´£¨Ñ¤F¨â­Ó·sªº°O¾ÐÅé°t¸m¹Bºâ¤l----new ©M delete!! ¥L­Ìªº¥Îªk¬Û
  ·í²³æ! ½Ð¬Ý:

    int *p=new int;                  //«Ø¥ß«ü¼Ðp,¨Ã°t¸m¤@­Óintªº°O¾ÐÅéµ¹¥L.
    int *q;                          //©M¤W­±ªº®ÄªG¤@¼Ë,¦ý¬O¥ý«Å§i«á°t¸m.
    q=new int;
    int *r=new int[10];              //«Ø¥ß«ü¼Ðr,¨Ã°t¸m10­Óintªº°O¾ÐÅéµ¹¥L.
    _Bullet *s=new _Bullet[10];      //©M¤W­±¤@¼Ë,¥u¤£¹Lint´«¦¨_Bullet.
    _Bullet *t=new _Bullet(1,2)[10]; //©M¤W­±¤@¼Ë,¦ý«ü©w¤Fªì­È.

    delete p;    //ÂkÁÙp©Ò°t¸mªº°O¾ÐÅé
    delete q;    //ÂkÁÙq©Ò°t¸mªº°O¾ÐÅé
    delete [] r; //ÂkÁÙr©Ò°t¸mªº°O¾ÐÅé
    delete [] s; //ÂkÁÙs©Ò°t¸mªº°O¾ÐÅé
    delete [] t; //ÂkÁÙt©Ò°t¸mªº°O¾ÐÅé

      ­È±oª`·Nªº¬O, ¨Ï¥Înew®É, C++·|¦Û°Êªº©I¥s¨C¤@­Óª«¥óªºªº«Øºc¨ç¦¡. ¨Ò¦p
  ¦bt ¤¤:

        *(t).x  , *(t+1).x ,....*(t+9).x ³£·|¬O 1
        *(t).y  , *(t+1).y ,....*(t+9).y ³£·|¬O 2

      ¨Ï¥Îdelete®É, ­Y·íªì°t¸mªº¬O³æ¤@ª«¥ó«h¤£­n¥[¬A¸¹, ­Y·íªì°t¸mªº¬Oª«¥ó
  °}¦Cªº¸Ü«h¤@©w­n¥[¬A¸¹!! ¤£µM·|¦³°ÝÃD! ¤Á°O!¤Á°O!


<8> ¸Ñºc¨ç¦¡
      ¦³«Øºc·íµM´N·|¦³¸Ñºc°Õ!!! ¦³ªº®É­Ô§Ú­Ì·|§Æ±æ¦bª«¥ó³Q®ø·Àªº®É­Ô(¨Ò¦p³Q
  deleteªº®É­Ô) ¯à°÷°µ¤@¨Ç±¹¬I. ¦Ó°µ³oºØ°µ¬Iªº¨ç¦¡´N¥s¸Ñºc¨ç¦¡.(destructor)
  , ½Ð¬Ý¤U¨Ò:

    class test
    {
        int *p;
        public:
          test(){p=new int;} //«Øºc¨ç¦¡
    };

    void main()
    {
        test a;
    }

      ³o­ÓÃþ§O¦b«Ø¥ß®É·|°t¸m¤@­Óintªº°O¾ÐÅéµ¹«ü¼Ðp, ¦ý¬O·íµ{¦¡µ²§ô®É¨Ã¨S¦³
  ±Np ©Ò«ü¨ìªº°O¾ÐÅéÂkÁÙµ¹¨t²Î, ³o¼Ë·|³y¦¨¤@¨ÇBUG. ¸Ñ¨Mªº¤èªk¬O¥[¤J¸Ñºc¨ç¦¡
  ½Ð¬Ý:

    class test
    {
          int *p;
          public:
            test(){p=new int;}   //«Øºc¨ç¦¡
            ~test(){delete p;}   //¸Ñºc¨ç¦¡
    };

    void main()
    {
          test a;
    }

      ³o­Ó·sªºª©¥»¤¤¥[¤J¤F¸Ñºc¨ç¦¡, ·íª«¥ó±N­n³Q·´·À®É,(µ{¦¡µ²§ô®É,©Îª«
  ¥ó³Qdelete±¼®É) C++·|¦Û°Ê°õ¦æ¸Ñºc¨ç¦¡,¥H§´µ½ªº¶i¦æµ½«á¤u§@, ­È±oª`·Nªº
  ¬O¸Ñºc¨ç¦¡¦W¬°Ãþ§O¦W«e­±¦A¥[¤W "~" ²Å¸¹¦Ó¦¨¤£¥i¥H¦³°Ñ¼Æ,¤]¤£¥i¥H¦³¶Ç¦^
  ­È, ¤£±o½Æ¸ü!! ¨ç¦¡¤¤¤£¥i¥H¦³return;±Ô­z. §_«h¥i¯à·|¦³°ÝÃD!!


<9> Ä~©Ó
      Ū¹L¥Íª«§a!!(¤S¬O¤@¥y¼o¸Ü!!) °Êª«¬O¤@ºØ¥Íª«, ÆFªø¥Ø¤S¬O¤@ºØ°Êª«,¤H
  Ãþ¤S¬O¤@ºØÆFªø¥Ø, §õµn½÷¬O¤@­Ó¤HÃþªº­ÓÅé. ¦V³oºØ "¬O¤@ºØ" ªºÃö«Y´N¥sÄ~
  ©Ó. C++¬O¬°¤F¼ÒÀÀ¥@¬É¦Ó³Ðªº, ¹³³oºØÄ~©Óªº¾÷¨î·íµM¬O¤£·|©ñ¹Lªº°Õ!

  ½Ð¬Ý§Ú­Ìªº¨Ò¤l:

      ¥Íª«¦³¤@¨Ç¥Íª«ªº¯S©Ê, ¥Íª«·|Ác´Þ¡B·|¥Íªø. °Êª«¬JµM¬O¤@ºØ¥Íª«, ·íµM
  ¤]¤@©w·|Ác´Þ·|¥ÍªøÅo! ¥i¬O°Êª«ÁÙ¥[¤F¦Û¤vªº¤@¨Ç¯S©Ê:°Êª«·|°Ê(¼o¸Ü!) ÆFªø
  ¥Ø¤]¬O¤@ºØ°Êª«Åo!! ©Ò¥H°Êª«¸Ó¦³ªº¯S©Ê¥L³£¦³Åo! ¥i¬OÆFªø¥Ø¥L¤S¦h¤F¤@ºØ¦Û
  ¤vªº¯S©Ê, ´N¬O¥L¦³IQÅo! ¦P¼Ëªº,¤HÃþ¬O¤@ºØÆFªø¥Ø, ©Ò¥H¤HÃþ·|Ác´Þ,·|¥Íªø,
  ·|°Ê,¦³IQ, ¦Ó¥B¤HÃþÁÙ¦h¤F¦Û¤vªº¯S©Ê----¤HÃþ¦³¦W¦r!!!


      §õµn½÷¬O­Ó¤HÃþ! ¦]¦¹¥L¦³¦Û¤vªº¦W¦r:¥L¥s§õµn½÷, ¦³¦Û¤vªºIQ---ÁöµM§Ú
  ¤£ª¾¹D¦³¦h¤Ö, ·|°Ê,·|Ác´Þ,¤]·|¥Íªø!!

  ¥H¤W©Ô©ÔÂøÂøªº¤@¤j°ï¥HC++ªº¤èªk¨Óªí¥Ü´N¬O:

    class life      //¥Íª«Ãþ§O
    {
        public:
          void gorw(){~~~};  //©R¥O¥Íª«"¥Íªø"ªº¨ç¦¡,¤º®e¥ý¤£ºÞ
          void bear(){~~~};  //©R¥O¥Íª«"Ác´Þ"ªº¨ç¦¡,¤º®e¥ý¤£ºÞ
    };

    class animal:public life //°Êª«Ãþ§O,Ä~©Ó¦Û¥Íª«,¤]´N¬O»¡"°Êª«¬O¤@ºØ¥Íª«"
    {
        public:
          void move(){~~~};  //©R¥O°Êª«"²¾°Ê"ªº¨ç¦¡,¤º®e¥ý¤£ºÞ
    };

    class primates:public animal  //ÆFªø¥Ø,Ä~©Ó¦Û°Êª«
    {
        int IQ;        //³o¬OÆFªø¥ØªºIQ
    };

    class human:public primates   //¤HÃþ,¬O¤@ºØÆFªø¥Ø
    {
        char name[6];     //¦W¦r,¤T­Ó¤¤¤å¦r
        public:
          human(char *p){strcpy(name,p);}   //³]©w¦W¦rªº«Øºc¨ç¦¡
    };

    void main()   //µ{¦¡¶}©l
    {
        human LDW("§õµn½÷");  //½Ï¥Í§õµn½÷¨Ã´À¥L¨ú¦W¦r(±Nname[]³]¬°"§õµn½÷")
        LDW.grow();           //§õµn½÷¦b"¥Íªø"(¤Ñ¤Ñ³Ü§J¹ç,§A´N·|ªø±o¸ò"¤p¾ð"
                              //¤@¼Ë³á!)
        LDW.move();           //§õµn½÷°µ"¹B°Ê"(¼K¥ð!¼K¥ð!)
        LDW.bear();           //§õµn½÷¦b"Ác´Þ"!!??%^#$%(18·³¥H¤U¨àµ£½Ð¤ÅÆ[¬Ý)
    }

      ³o­Ó¨Ò¤l¥u¬O³Õ§g¤@¯º, ¨Æ¹ê¤WÄ~©Óªº¥Î³B¬O«Ü¤jªº. ¥L¥i¥HÅýµ{¦¡§óÀÀ
  ª«¤Æ, ¤]¥i¥HÅýµ{¦¡¨ã¦³­«¥Î©Ê... §Ú³o¼Ë»¡§A¥i¯à·|«Ü¼Ò½k, ¨SÃö«Y,µ¥¨ì§Ú
  ­Ì¶}©l¹ê°µµ{¦¡ªº®É­Ô§A¦ÛµM´N·|ÁA¸Ñ¤F!


<²Ä¤@³¹µ²§ô>
                                                           ¤p¾ð






--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]

µo«H¤H¡Gbbs@neptune.cksh.tp.edu.tw
¤é´Á¡GFri Oct 24 09:20:01 1997
¼ÐÃD¡G«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 2

§@ªÌ: lcr (¤p¤û) ¬ÝªO: CKCSC
¼ÐÃD: ª«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 2
®É¶¡: Tue Oct 15 04:46:12 1996

          C++ª«¥ó¾É¦Vµ{¦¡»y¨¥Â²©ú±Ðµ{¤§¤G

<²Ä¤G³¹  ·§½× II >

¼¶¤å:µ{¦¡³Ð§@°Ï ¤p¾ð         ¨Ï¥Î½s;¹:Turbo C++ 3.0

­×§ï:lcr(¤p¤û)
­×§ï«e¨¥:     ³o½g¤p¾ð¼gªº oop ·§©ÀÆZ®e©öÀ´ªº, ÆZ¾A¦Xªì¾ÇªÌ¬Ý¤@¤U..
          ¥u¬Oµ§ªÌı±o¼gªº¦³ÂI¶Ã¶Ãªº (^_^), ©Ò¥H¤p§Ì¦b³o¾ã²z¤F¤@¤U,
          ¨Ã¨S¦³­×§ï¤º®e....½Ð¤p¾ð­ô­ô¨£½Ì°Õ....:p
                                                     Lcr (1996.10.13)

ŪªÌ¶·ª¾:
      ¥»¤å³¹¥ÑC ¶}©l½Í°_, ºâ¬O¤@½gC++ªº¤Jªù°Ñ¦Ò®Ñ, ¤å¤º°²³]¦U¦ì¤w¸g¦³
  C »y¨¥ªº°ò¦,¬OC++ªºªì¾ÇªÌ, ŪªÌ¦Ü¤Ö¥²¶·¹ïC¦³¬Û·íµ{«×ªº¼ô±x, ¦p¬yµ{
  ±±¨î(if,for,while,switch...),«ü¼Ð,°}¦C,µ²ºc(struct), ³£¥²¶·«D±`¼ô±x
  , §_«h®£©È·|¦³¾\Ū¤Wªº§xÃø....

      ¥»¤å¥óªº¥Øªº¬O·Q­nÅýC++§ó¦n¾Ç, ¨Ï¤j®a³£¯à»´©öªºÁA¸ÑC++ªººë¸q¡C
  ¦]¦¹¥»¤å¥óÅwªï¶Ç¾\, ­Y¦³»Ý­n¤]Åwªï°µ¾A·íªº­×§ï, ¥H­×¥¿¿ù»~©Î¼W¥[¥i
  Ū©Ê. ¦ý½Ð¤Å¥[¤J¤£¶®ªº¨¥»y, ¦Ó¥B­×§ïªÌ°È¥²µù©ú­×§ïªÌ¦WºÙ¤Î­×§ï¤é´Á,
  ¨Ã«O¯d­ì§@ªÌ¤§Ã±¦W. ÁÂÁ¦U¦ì!


<1>  ¦A½ÍÃþ§OÄ~©Ó

      Åý§Ú­Ì¨ÓÄ~Äò½Í¤W¤@¦^ªºÄ~©Ó. ¦bÄ~©ÓÃö«Y¤¤, ¤@­ÓÃþ§Oªº¤W¤@¼hºÙ¬°¦¹
  Ãþ§O¤§¤÷Ãþ§O, ¤@­ÓÃþ§Oªº¤U¤@¼hºÙ¬°¦¹Ãþ§O¤§¤lÃþ§O©Î­l¥ÍÃþ§O. ¨Ò¦p¥Íª«
  Ãþ§O¬°°Êª«Ãþ§O¤§¤÷Ãþ§O, °Êª«Ãþ§O¬°¥Íª«Ãþ§O¤§¤lÃþ§O.

        C++¦³¤@­Ó³W©w:"¤@­Ó¤÷Ãþ§Oªº«ü¼Ð¥i¥H«ü¦V¤@­Ó¥Lªº¤lÃþ§O"
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ½Ð¬Ý:

    class father
    {
    };

    class son:public father
    {
    };

    void main()
    {
        father *man;
        son peter;
        man=&peter;
    }

      ¥H¤Wªº±Ô­z§¹¥þ¦Xªk, ¤£·|¦³¥ô¦ó¿ù»~. ¦Ü©ó¦³¤°»ò¥Î³~, µ¥§Ú­Ì¯u¥¿¶}
  ©l°µµ{¦¡®É§A´N·|©úÁA!


<2>  µêÀÀ¨ç¦¡
  §Ú­Ì§ï³y¤@¤U¤W¤@­Ó¨Ò¤l:

    class father
    {
        public:
          DoJob();  //°µ¤u§@
    };

    class son:public father
    {
        public:
          DoJob();  //°µ¤u§@
    };

    void main()
    {
        father *man;   //¤÷¿ËÃþ§O«ü¼Ð.
        son peter;
        man=&peter;    //¤÷¿Ëªº«ü¼Ð¥i¥H«ü¦V¨à¤l,³o¬O¤W¤@³¹¤~»¡¹Lªº.
        man->DoJob();  //¨ì©³¬Oª¨ª¨ªºDoJob·|³Q©I¥s©O?ÁÙ¬O¨à¤lªº?
    }

      ¦b¤W¨Ò¤¤,ª¨ª¨©M¨à¤l³£¦h¤F¤@­Ó¦¨­û¨ç¦¡--DoJob(), ·N«ä¬O¥s¥L­Ì§@¦Û¤v
  ªº¤u§@ªº·N«ä!! ¥Ñ©óª¨ª¨ªº¤u§@©M¨à¤l¤£¦P, ©Ò¥H¤º®e·íµM¤£¤@¼Ë°Õ!! ¥H¤W­±
  ªº¼gªk, ÁöµMman¬O«ü¨ìpeter, man->Dojob()À³¸Ó­n°õ¦æªº¬O¨à¤lªº¤u§@, ¦ý¬O
  µ{¦¡¨ì©³·|¥s¨à¤l°õ¦æª¨ª¨ªº¤u§@©O? ¦Ó¬O§@¦Û¤vªº¤u§@©O?

  ¨ä¹êµ{¦¡ªº¥»·N·íµM¬O§Æ±æ¨à¤l°õ¦æ¥L¦Û¤vªº¤u§@°Õ!!(¦]¬°man «ü¨ìªº¬Opeter
  °Ú!!) ¥i¬O·Ó¤W­±ªº¼gªk,C++«o·|°õ¦æª¨ª¨ªº¤u§@..­nÅýµ{¦¡¯à°õ¦æ«ü¼Ð©Ò«ü¨ì
  ªº¤Hªº¨ç¦¡, µ{¦¡¥²¶·³o»ò¼g:

    class father
    {
        public:
          virtual DoJob();  //°µ¤u§@
    };

    class son:public father
    {
        public:
          virtual DoJob();  //°µ¤u§@
    };

    void main()
    {
        father *man;
        son   peter;
        man=&peter;
        man->DoJob();//¦]¬°«ü¼Ð«ü¨ìªº¬O¨à¤l,©Ò¥H¨à¤l°µ¤u§@
    }

      ¤W­±ªºµ{¦¡¦b¨ç¦¡«e¦h¥[¤F"virtual"±Ô­z, ºÙ§@µêÀÀ¨ç¦¡, ¥[¤W¥h¤§«á,µ{
  ¦¡«K·|®Ú¾Ú«ü¼Ð©Ò«üªº¤H,¥h°õ¦æ¥L¸Ó°µªº¨Æ, ³o¼ËÁA¸Ñ¶Ü?

      µêÀÀ¨ç¦¡¤S¥s°ÊºA³sµ²,©Î±ß³sµ², ¦]¬°¨ì©³­n°õ¦æ½Öªº¨ç¦¡­nµ¥¨ì¹ê»Ú°õ¦æ
  ¤~ª¾¹D.


<3>  °Ñ¦Ò«¬§O
      ¦bC++¤¤,´£¨Ñ¤F¤@­ÓC ©Ò¨S¦³ªº¯S©Ê--"°Ñ¦Ò«¬§O" ¨ä¹ê°Ñ¦Ò«¬§O¨S¦³¤°»ò,
  ¥L¥u¬O´Àª«¥ó«Ø¥ß¤@­Ó§O¦W½}¤F!

  ½Ð¬Ý:

    int i=5;   //i ¬O­Óint ª«¥ó.
    int &j=i;  //j ¬O i ªº§O¦W,§Yj ¬Oi ªº°Ñ¦Ò,©ú¥Õªº»¡,
               //i ©M j ¬O¦P¤@­ÓÅܼƪº¤£¦P¦W¦r.
    i++;       //°õ¦æ«á i Åܦ¨ 6.
    j++;       //¦]¬°j ´N¬Oi ,¬Gi ¦¹®É¬° 7.

      ©Ò¿×ªº"°Ñ¦Ò",¨ä¹ê´N¬O§O¦W. ´N¦n¹³½±¤¤¥¿¤S¥s½±¤¶¥Û¤@¼Ë. ¨ä¹êj ©Mi ¬O
  ¦P¤@­ÓÅܼÆ, ¥u¬O¦W¦r¤£¦P½}¤F!! ³o¼ËÀ´¥G?

      ¨ä¹ê¦pªG¥u¦³³o¼Ë, ¨º°Ñ¦ÒÁÙ¯u¬O¨S¤°»ò¥Î³B! ¨Æ¹ê¤W°Ñ¦Ò³Ì¤jªº¥Î³B,¦b©ó
  ¨ç¦¡¶Ç°Ñ¼Æ®É¨Ï¥Î. ½Ð¬Ý¤U¨Ò:

    struct test  //¤@­Óµ²ºc
    {
        int string[1000];
    };

    void function(test value) //¦¹¨ç¦¡·|¦L¥Xvalue.string
    {
        cout << value.string;
    }

    void main()
    {
        test a;       //«Ø¥ß¤@­Óaª«¥ó
        function(a);  //±Na¶Çµ¹¨ç¦¡
    }

      testµ²ºc¬O¤@­Ó«Ü¤jªºµ²ºc, ¥ú¬Oa ³o­Óª«¥ó´N¦Ü¤Ö­n¦û±¼2000 bytesªº°O
  ¾ÐÅé, ¦U¦ì·Q·Q, ·í§Ú±Na ¶Çµ¹function ªº®É­Ô, ¦]¬°¬O¶Ç­È, ©Ò¥HC++·|¥ý°µ
  ¥X¤@­Ótestµ²ºcªº valueª«¥ó, µM«á¦A±Na ¤@­Ó¦ì¤¸¤@­Ó¦ì¤¸ªºcopy µ¹value,
  ¤Ñ°Ú! ³o¬J¦û°O¾ÐÅé¤S¯Ó®É¶¡, ¦pªG§Ú¯àª½±µ±Na ®³µ¹function¨ç¦¡¨Ï¥Îªº¸Ü¦h
  ¦n°Ú!! ¥Î¶Ç°Ñ¦Ò´N¥i¥H°µ¨ì³o¤@ÂI, ¦Ó¥B¤£·|¹³¶Ç§}¨º»ò¹û§á, ½Ð¬Ý§ï¶i«áªºµ{
  ¦¡½X:

    struct test  //¤@­Óµ²ºc
    {
        int string[1000];
    };

    void function(test & value) //¶Ç°Ñ¦Ò,³o¸Ì¦h¤F¤@­Ó & ²Å¸¹
    {
        cout << value.string;
    }

    void main()
    {
        test a;       //«Ø¥ß¤@­Óaª«¥ó
        function(a);  //±Na¶Çµ¹¨ç¦¡,ª`·N!!¨ç¦¡¥Îªk¤£Åܳá!!
    }

      ¥u­n·Ó¤W­±³o¼Ë¼g, value ´N·|¬Oa ªº§O¦W, ¤]´N¬O»¡value ´N¬O a°Õ!!! (
  ¦ý¬O¥Í¦s´Á¸ò¶Ç­È®É¤@¼Ë) ¤£¥²¦h¦û°O¾ÐÅé, ¤]¤£¥²ªácopyª«¥óªº®É¶¡. ³o¤£¬O«Ü
  ¦n¶Ü!! °Ñ¦Òªº¥Î³B´N¦b¦¹, ³o¼ËÁA¸Ñ¶Ü?


<4>  const ª«¥ó
      ¬Û«H¼ô±xC »y¨¥ªº§A, ¹ï"#define"³o­ÓÃöÁä¦rÀ³¸Ó«Ü¼ô¤F§a!! ¨Ï¥Î#define
  ¥i¥H¦bC»y¨¥¤¤©w¸q¥X±`¼Æ, ¨Ò:

    #define PI 3.1416159 //©w¸q±`¼ÆPI
    void main()
    {
        cout << PI;    //¦L¥XPI
    }

      ¥i¬O#define¨Ï¥Î¦bC++¤¤«o¦³¯Ê³´, (¤£¹L³o­Ó¯Ê³´¤£¬O­«ÂI,¬°¬Ù¦U¦ìªº¸£¤O
  §Ú´N¤£Á¿°Õ!!) ¬°¦¹C++´£¥X¤F·sªº©w¸q±`¼Æªº¤èªk---const ª«¥ó!! ½Ð¬Ý:

    const double PI=3.1416159;
    void main()
    {
        cout << PI;   //¦L¥XPI
        PI=10;        //¿ù»~!!!const ª«¥ó¤£¯à³Q§ó§ï
    }

      ©Ò¿×ªºconst ª«¥ó, ¨ä¹ê¥L©M¤@¯ëªºª«¥ó¤@¼Ë, ¦ý¬O¥L¦b©w¸q«á´N¤£¯à§ï­È¤F,
  ¦Ó¥B¦b©w¸q®É´N¥²¶·­nµ¹ªì­È,(¤£µ¹¤£¦æ³á!!) ­Y¹Á¸ÕµÛ¥h§ó°Êconstª«¥ó, «h½sĶ
  ¾¹·|µ¹¤©Äµ§i, ¨Ã²×¤î½sĶ!!


<5>  ¦æ¤º¨ç¦¡
      ¬Û«H¦U¦ìC ªº°ª¤â­Ì¹ï¥¨¶°¨ç¦¡À³¸Ó¤£­¯¥Í§a!! ¥¨¶°¨ç¦¡¦³°õ¦æ³t«×§ÖªºÀuÂI,
  ¥i¬OC ªº¥¨¶°¨ç¼Æ«o¬O«Ü³Â·Ð, ¤@­Ó¤£¤p¤ß´N·|¯d¤UÃø¥H°£¿ùªºBUG!!

      C++´£¨Ñ¤F¦æ¤º¨ç¦¡, ¥Î¥H¨ú¥N¶Ç²ÎC ¤§¥¨¶°!! ¨ä¹ê¦æ¤º¨ç¦¡«Ü²³æ, ¥u­n¦b
  ¨ç¦¡¦W¦rªº«e­±¥[¤W"inline"ªºÃѧO¦r, C++´N·|µø±¡ªp±N¦æ¤º¨ç¦¡©Ý®i¦¨¥¨¶°, ½Ð
  ¬Ý:

    inline int max(int a,int b)
    {
        if(a>b)
                return a;
        else
                return b;
    }

      ¦p¦¹¤@¨Ó,max´N¬O¤@­Ó§Ö³tªº¥¨¶°¨ç¦¡¤F!! ­È±oª`·Nªº¬O: ¦æ¤º¨ç¦¡¬°¥¨¶°,
  ¬G¤£¥i»¼°j, §Y¤£¥i©I¥s¦Û¤v.

  ²{¦bÅý§Ú­Ì¨Ó¦^·¹¤@¤U§Ú­Ì²Ä¤@³¹©Ò«Ø¥ßªº¤l¼uÃþ§O:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xclass _Bullet//³o¬O¤@­Ó "¤l¼u" ªº "¼Ò¤l",§ï¥Îclass¨Ó¼g              ¢x
  ¢x{                                                                   ¢x
  ¢x    private:    //¨p¥Î¦¨­û                                          ¢x
  ¢x      int x;                                                        ¢x
  ¢x      int y;                                                        ¢x
  ¢x      void show(int x,int y);        //³o¬O¤@­Ó¨ç¦¡,¥i¥H¦b(x,y)¤Wµe ¢x
  ¢x    public:     //¤½¥Î¦¨­û             ¥X¤@ÂI.                      ¢x
  ¢x      _Bullet(){x=y=0;}              //µL°Ñ¼Æ¤§«Øºc¨ç¦¡.            ¢x
  ¢x      _Bullet(int X,int Y){x=X;y=Y;} //¦³¨â­Ó°Ñ¼Æ¤§«Øºc¨ç¦¡.        ¢x
  ¢x      void go()                      //³o¬O¤@­Ó¨ç¦¡,©I¥s¥L¥i¥HÅý¤l¼u¢x
  ¢x      {                              //©¹¤U²¾¤@®æ¨Ãµe¥X¨Ó.          ¢x
  ¢x            show(x,y);                                              ¢x
  ¢x            y++;                                                    ¢x
  ¢x      }                                                             ¢x
  ¢x     int collision(int X,int Y)     //³o¬O¤@­Ó¨ç¦¡,¥Î¨Ó§PÂ_¤l¼u¬O   ¢x
  ¢x     {                              //§_¼²¨ìªF¦è.                   ¢x
  ¢x            return (x==X && Y==y);  //¤£¬O«h¶Ç¦^0                   ¢x
  ¢x     }                                                              ¢x
  ¢x};                                                                  ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¦b³o­ÓÃþ§O¤¤,Ãþ§O¤º¨ç¦¡¦¨­û³£¬O©w¸q¦bÃþ§O¤¤,(ª`·N!!©w¸q©M«Å§i¬O¤£
  ¤@¼Ëªº!!) ¨ä¹ê§Ú­Ì¤]¥i¥H©w¸q¦bÃþ§O¥~ªº, ½Ð¬Ý:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xclass _Bullet                                                       ¢x
  ¢x{                                                                   ¢x
  ¢x    private:                                                        ¢x
  ¢x      int x;                                                        ¢x
  ¢x      int y;                                                        ¢x
  ¢x      void show(int x,int y);                                       ¢x
  ¢x    public:                                                         ¢x
  ¢x      _Bullet();    //¥u«Å§i¤£©w¸q                                  ¢x
  ¢x      _Bullet(int X,int Y);                                         ¢x
  ¢x      void go();                                                    ¢x
  ¢x      int collision(int X,int Y);                                   ¢x
  ¢x};                                                                  ¢x
  ¢x                                                                    ¢x
  ¢xBullet::_Bullet()  //©w¸q¦b¥~ªº«Øºc¨ç¦¡                             ¢x
  ¢x{                                                                   ¢x
  ¢x    x=y=0;                                                          ¢x
  ¢x}                                                                   ¢x
  ¢x                                                                    ¢x
  ¢x_Bullet::_Bullet(int X,int Y) //¦P¤W                                ¢x
  ¢x{                                                                   ¢x
  ¢x    x=X;                                                            ¢x
  ¢x    y=Y;                                                            ¢x
  ¢x}                                                                   ¢x
  ¢x                                                                    ¢x
  ¢xvoid _Bullet::go()   //¦P¤W                                         ¢x
  ¢x{                                                                   ¢x
  ¢x     show(x,y);                                                     ¢x
  ¢x     y++;                                                           ¢x
  ¢x}                                                                   ¢x
  ¢x                                                                    ¢x
  ¢xint _Bullet::collision(int X,int Y)   //¦P¤W                        ¢x
  ¢x{                                                                   ¢x
  ¢x     return (x==X && Y==y);                                         ¢x
  ¢x}                                                                   ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¤@­ÓÃþ§Oªº¨ç¦¡¦¨­û­Y¹L¤j, ©w¸q¦b¥~­±¬O¤ñ¸û¦nªº, ¦]¬°³o¼Ë¤l¦n¬Ý¦h¤F!!
  ¬Û«H±q¤W¨Ò¤j®aÀ³¸Ó¥i¥H¾Ç·|Ãþ§O¤º¨ç¦¡©w¸q¦b¥~ªº»yªk!! ­Y­n±NÃþ§Oªº¨ç¦¡¦¨
  ­û©w¸q¦b¥~, ¨ä»yªk¬°:

      ¨ç¦¡¶Ç¦^­È  ©ÒÄÝÃþ§O::¨ç¦¡¦W(°Ñ¼Æ)
      {
        ......
      }

      °ò¥»¤W,¹ï©ó©w¸q¦b¤ºªº¦¨­û,C++·|±N¨ä½s½X¬°¦æ¤º¨ç¦¡, ©w¸q¦b¥~ªº«h½s½X
  ¬°¤@¯ë¨ç¦¡!! ­Y­n©w¸q¦b¥~ªº¤]¬°¦æ¤º¨ç¦¡, ¥u­n¥[¤Winline±Ô­z§Y¥i!!

<²Ä¤G³¹µ²§ô>
                                                          ¤p¾ð  1996 8/16






--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]

µo«H¤H¡Gbbs@neptune.cksh.tp.edu.tw
¤é´Á¡GFri Oct 24 09:20:01 1997
¼ÐÃD¡G«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 3

§@ªÌ: lcr (¤p¤û) ¬ÝªO: CKCSC
¼ÐÃD: ª«¥ó¾É¦V(oop)°ò¦Á¿Ä³ -- 3
®É¶¡: Tue Oct 15 04:47:02 1996

          C++ª«¥ó¾É¦Vµ{¦¡»y¨¥Â²©ú±Ðµ{¤§¤T

<²Ä¤T³¹  ª«¥ó¾É¦Vµ{¦¡³]­p¹ê§@>

¼¶¤å:µ{¦¡³Ð§@°Ï ¤p¾ð         ¨Ï¥Î½s;¹:Turbo C++ 3.0


­×§ï:lcr(¤p¤û)
­×§ï«e¨¥:     ³o½g¤p¾ð¼gªº oop ·§©ÀÆZ®e©öÀ´ªº, ÆZ¾A¦Xªì¾ÇªÌ¬Ý¤@¤U..
          ¥u¬Oµ§ªÌı±o¼gªº¦³ÂI¶Ã¶Ãªº (^_^), ©Ò¥H¤p§Ì¦b³o¾ã²z¤F¤@¤U,
          ¨Ã¨S¦³­×§ï¤º®e....½Ð¤p¾ð­ô­ô¨£½Ì°Õ....:p
                                                     Lcr (1996.10.13)

ŪªÌ¶·ª¾:
      ¥»¤å³¹¥ÑC ¶}©l½Í°_, ºâ¬O¤@½gC++ªº¤Jªù°Ñ¦Ò®Ñ, ¤å¤º°²³]¦U¦ì¤w¸g¦³
  C »y¨¥ªº°ò¦,¬OC++ªºªì¾ÇªÌ, ŪªÌ¦Ü¤Ö¥²¶·¹ïC¦³¬Û·íµ{«×ªº¼ô±x, ¦p¬yµ{
  ±±¨î(if,for,while,switch...),«ü¼Ð,°}¦C,µ²ºc(struct), ³£¥²¶·«D±`¼ô±x
  , §_«h®£©È·|¦³¾\Ū¤Wªº§xÃø....

      ¥»¤å¥óªº¥Øªº¬O·Q­nÅýC++§ó¦n¾Ç, ¨Ï¤j®a³£¯à»´©öªºÁA¸ÑC++ªººë¸q¡C
  ¦]¦¹¥»¤å¥óÅwªï¶Ç¾\, ­Y¦³»Ý­n¤]Åwªï°µ¾A·íªº­×§ï, ¥H­×¥¿¿ù»~©Î¼W¥[¥i
  Ū©Ê. ¦ý½Ð¤Å¥[¤J¤£¶®ªº¨¥»y, ¦Ó¥B­×§ïªÌ°È¥²µù©ú­×§ïªÌ¦WºÙ¤Î­×§ï¤é´Á,
  ¨Ã«O¯d­ì§@ªÌ¤§Ã±¦W. ÁÂÁ¦U¦ì!


<1>  ¦ó¿×ª«¥ó¾É¦V
  ©Ò¿×ªºª«¥ó¾É¦Vµ{¦¡³]­p, ²³æªº»¡´N¬OÀÀ¤H¤Æªºµ{¦¡³]­p.
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ¤]´N¬O»¡§Ú­Ì©Ò³]­pªº¤£¦A¬O¤@­Ó­Óªº¨ç¦¡, ¦Ó¬O¤@­Ó­Ó¦³¥Í©R¤Oªºª«¥ó.
  ¨ä¹ê¦U¦ì¥i¥H§âª«¥ó·Q¦¨¤@­Ó­Ó¤£¦P¾·~ªº¤H, ª«¥óªº¦¨­û¨ç¦¡´N¬O­n¨D³o­Ó
  ¤HªA°ÈªººÞ¹D. ¦ÓÃþ§O«h¬O³y¤Hªº¼Ò¤l!

      §Ú­Ì¥Î¦UºØ¤£¦Pªº¼Ò¤l§@¥X¦UºØ¤£¦P¾·~ªº¤H, µM«áÂǥѤH»P¤Hªº¤¬¬Û·¾
  ³q, ¦Ó¬[ºc°_¾ã­Óµ{¦¡. ³o¼Ë»¡©Î³\¦³ÂI¼Ò½k, ¦ý¬Oµ¥§A¬Ý§¹¾ã­Ó±Ðµ{¦A¦^¨Ó
  ¬Ý³o¤@¬q, ¬Û«H§A¤@©w·|µo¥X·|¤ßªº¤@¯º.


<2>  ¨Æ¥óÅX°Ê
      ±µ¤U¨Ó§Ú­Ì­n¹ê»Úªº°µ¤@­Óª«¥ó¾É¦Vªºµ{¦¡, ¬JµM­n°µµ{¦¡, ´N¥²¶·­n¦³
  ÃD¥Ø. ¨Æ¥óÅX°Ê®Ö¤ß¬O¤@­Ó«Ü¯à¥R¥÷ªí¹Fª«¥ó¾É¦Vºë¯«ªºÃD¥Ø, ¦Ó¥B¤S¤£·|¤Ó
  Ãø, ©Ò¥H§Ú­Ì¨M©w¥H¥¦¬°³o­Ó±Ðµ{ªº½d¨Ò.

      ¨º»ò¤°»ò¬O¨Æ¥óÅX°Ê©O? ¬Û«H¼g¹LWindowsªºµ{¦¡ªºÅªªÌ¥²¤£­¯¥Í. ¦]¬°
  Windows¥»¨­´N¬O¤@­Ó¨Æ¥óÅX°Êªº®Ö¤ß!!! ¥H«e§Ú­Ì¦b¼gµ{¦¡®É, µ{¦¡¥²¶·¥D°Ê
  ªº¬d¸ß¹q¸£ªº¦UºØª¬ªp, ¨Ò¦pÁä½L¬O§_³Q«ö¤U¥h°Õ?! ·Æ¹«¬O§_²¾°Ê¤F°Õ?!¯S©w
  ªº®É¶¡¶¡¹j¬O§_¨ì¤F°Õ?! ¹³¥H¤W§Ú­Ì©Ò»¡ªº³o¨ÇªF¦è´NºÙ¬°¨Æ¥ó!! ¥H±q«eªº
  §@ªk, §Ú­Ì©Ò¼gªºµ{¦¡¥²¶·¥D°Ê¤£Â_ªº¥h¬d¸ß¨Æ¥ó¬O§_µo¥Í, ­Yµo¥Í,«h¨Ìµo¥Í
  ¨Æ¥óªººØÃþ¤À¥h³B²z. ³o¬O¤@ºØ«Ü½ÆÂøªº§@ªk....

      ©Ò¿×ªº¨Æ¥óÅX°Ê¦¡ªºµ{¦¡³]­p, ´N¬O¦³¤@­Ó®Ö¤ß,(¥L¬O¤@­Óª«¥ó,¤]´N¬O¤@
  ­Ó"¤H",¦W¦r¥s"Kernel"¦n¤F!! ) ¥L·|¥D°Ê¥h°»´ú¨Æ¥ó¬O§_µo¥Í, ­Y¦³¨Æ¥óµo¥Í,
  «h³qª¾±Mªù³B²z³o­Ó¨Æ¥óªº¤H(ª«¥ó)¨Ó³B²z(¥i¯à¤£¥u¤@­Ó³á!!) ¤]´N¬O»¡, ¾ã­Ó
  µ{¦¡¥u¦³®Ö¤ß¬O¥D°Êªº, ¨ä¥Lªº³¡¥÷¦U¥q©Ò¾, ¥­±`®É¨Ã¤£°Ê§@, ¥u¦³·í»P¦Û¤v
  ¦³Ãöªº¨Æ¥óµo¥Í®É¤~·|³Q®Ö¤ß³qª¾¥h³B²z. ³o¼Ë¤lµ{¦¡·|«Ü¦³±ø²z, ¦³°ÝÃD®É¤]
  ¥i¥H«Ü®e©öªº¬d¥X¿ù»~¦b­þ¸Ì. ¦Ó§Ú­Ì­n¬[ºcªº,´N¬O³o³o¼Ëªº¤@­Ó®Ö¤ß.


<3> ¸Uª«ªº°_·½--°ò¥»Ãþ§O
      ¤H¬O¤@ºØ°Êª«, °Êª«¬O¤@ºØ¥Íª«, ¥Íª«¬O¤@ºØª«Åé, ©Ò¥H¤H¤]¬O¤@ºØª«Åé.
  ©Ò¦³ªºªF¦è³£¬O¤@ºØª«Åé. ¥Ñ¤W¥iª¾, ¦b¦ÛµM¬É¦s¦b¦³¤@ºØ"³Ì°ò¥»Ãþ§O" ¤@¤Á
  Ãþ§O³£¬O¥Lªº¤lÃþ§O, ¦bC++·íµM¤]¤£¨Ò¥~. ³q±`³o­Ó³Ì°ò¥»Ãþ§O·|¥s°µ"Object",
  ¤]´N¬Oª«Å骺·N«ä. ¤£¹L³o­Ó¦r¤Ó±`¥Î¤F, «Ü¦hÃþ§O®w³£¥Î³o­Ó¦W¦r. ¬°¤FÁ×§K
  »P¥L­Ì½Ä¨ì, §Ú­Ì§â§Ú­Ìªº³Ì°ò¥»Ãþ§OºÙ§@"_Thing", ½Ð¬Ý_Thingªºµ{¦¡½X:(¦s©ó
  thing.h¤¤):

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢x#ifndef _THING_  //¨¾¤î­«½Æinclude¥Î                                ¢x
  ¢x#define _THING_                                                     ¢x
  ¢x                                                                    ¢x
  ¢x#include "class.h"                                                  ¢x
  ¢xclass _Thing                                                        ¢x
  ¢x{                                                                   ¢x
  ¢x    public:                                                         ¢x
  ¢x     _Thing(){}  //«Øºc¨ç¦¡                                         ¢x
  ¢x     virtual ~_Thing(){}  //¸Ñºc¨ç¦¡,¥²¶·«Å§i¬°µêÀÀ¨ç¦¡             ¢x
  ¢x                          //©I¥s¦¹¨ç¦¡«h·|¶Ç¦^ª«¥ó©ÒÄÝÃþ§Oªº¥N½X    ¢x
  ¢x     virtual unsigned Is(){return IAm_Thing;}                       ¢x
  ¢x};                                                                  ¢x
  ¢x                                                                    ¢x
  ¢x#endif                                                              ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¬JµM_Thing¬O³Ì°ò¥»Ãþ§O, ¦]¦¹¥L¦³ªº¯S©Ê¸Uª«³£·|¾Ö¦³. ¦]¬°¸Uª«³£¬O¤@
  ºØ_Thing.(¸Uª«³£¬O¤@ºØ"ªF¦è"), ²{¦bÅý§Ú­Ì¨Ó¬Ý¬Ý¥L¦³­þ¨Ç¯S©Ê:

   <1>  «Øºc¨ç¦¡:ÁöµM¬OªÅªº,¤£¹LÂ\µÛ¤ñ¸û¦n¬Ý
   <2>  ¸Ñºc¨ç¦¡:¸Ñºc¨ç¦¡¥²¶·¬OµêÀÀ¨ç¦¡,¬°¤°»ò¥H«á¦A»¡
   <3>  Is()¨ç¦¡:³o¬O¤@­Ó³ø©m¦Wªº¨ç¦¡,·N«ä¬O°Ýª«¥ó»¡§A¬O­þ¤@ºØ¤H°Ú?(¤°»òÃþ
                 §O?) ©ó¬Oª«¥ó·|¶Ç¦^¤@¼Æ­È, §Ú­Ì¥i¥Ñ¦¹¼Æ­È¥H¤Îclass.h¤¤ªº
                 °O¿ý±oª¾¦¹ª«¥ó¬O¤°»òÃþ§O¥Í¥X¨Óªº
   <4>  class.h :³o¬O¤@­Ó§t¬AÀÉ,°O¿ý©Ò¦³Ãþ§Oªº¥N½X,¸Ô²Ó¤º®e¦p¤U:

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢x#ifndef _CLASS_    //¨¾¤î­«½Æinclude¥Î                              ¢x
  ¢x#define _CLASS_                                                     ¢x
  ¢x                                                                    ¢x
  ¢xconst unsigned IAm_Thing=0;                                         ¢x
  ¢xconst unsigned IAm_Letter=1;                                        ¢x
  ¢xconst unsigned IAm_EventReceiver=2;                                 ¢x
  ¢xconst unsigned IAm_Kernel=3;                                        ¢x
  ¢xconst unsigned IAm_KeyBoard=4;                                      ¢x
  ¢x                                                                    ¢x
  ¢x#endif                                                              ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ³Ì°ò¥»Ãþ§O¬O¼gª«¥ó¾É¦Vµ{¦¡¤@©w­n¥ý©w¸qªº, ©Ò¥H§Ú­Ì´N¥ý¼g¥X¨Ó°Õ!
  ¦Ü©ó¬°¤°»ò¤@©w­n©w¸q©O? ­ì¦]¦³¤G:

         <1>  ¦n¬Ý,¾ã­ÓÃþ§OÄ~©Óªº«Ü§¹¾ã
         <2>  ¤è«K°µ¥]§tªÌÃþ§O

      ²Ä¤G­Ó­ì¦]¤@®É¤§¶¡«ÜÃø¸ÑÄÀ¬O¤°»ò·N«ä, ¥ý¤£­nºÞ¥L, §Ú­ÌÄ~Äò§@¤U¥h«K
  ¬O¤F!!


<4>  ³]­pÃþ§OºØÃþ¤Î¤º®e
      §Ú­Ì¨Ó½Æ²ß¤@¤U«e­±©ÒÁ¿¨ìªº®Ö¤ß¬O¤°»ò¼Ë¤l: ©Ò¿×ªº¨Æ¥óÅX°Ê¦¡ªºµ{¦¡³]
  ­p, ´N¬O¦³¤@­Ó®Ö¤ß,(¥L¬O¤@­Óª«¥ó,¤]´N¬O¤@­Ó"¤H",¦W¦r¥s"Kernel"¦n¤F!! )
  ¥L·|¥D°Ê¥h°»´ú¨Æ¥ó¬O§_µo¥Í, ­Y¦³¨Æ¥óµo¥Í, «h³qª¾±Mªù³B²z³o­Ó¨Æ¥óªº¤H(
  ª«¥ó)¨Ó³B²z(¥i¯à¤£¥u¤@­Ó³á!!) ¤]´N¬O»¡, ¾ã­Óµ{¦¡¥u¦³®Ö¤ß¬O¥D°Êªº, ¨ä¥L
  ªº³¡¥÷¦U¥q©Ò¾, ¥­±`®É¨Ã¤£°Ê§@, ¥u¦³·í»P¦Û¤v¦³Ãöªº¨Æ¥óµo¥Í®É¤~·|³Q®Ö¤ß
  ³qª¾¥h³B²z.

   °ÝÃD¨Ó¤F:

  ²Ä¤@:Kernel«ç»òª¾¹D·í¤@¨Æ¥óµo¥Í®É­n³qª¾½Ö©O? (·Q¤@¤U³á..)

          ©Ò¥H¥²¶·¥ý¥Ñ·Q­n­n¨D¨Æ¥ó³B²zÅvªº¤H¥ý¦VKernel³ø¨ì, ¨Ò¦pª«¥ó
      LittleTree§Æ±æKernel¦bÁä½L¨Æ¥óµo¥Í®É³qª¾¥L, ¥L¥²¶·¥ý³o¼Ë°µ:
     Kernel.RequestKeyEvent(&LittleTree), ·N«ä¬O§i¶DKernel»¡ LittleTree
     §Æ±æKernel¦bÁä½L¨Æ¥óµo¥Í®É§i¶DLittleTree, ¨Ã§âLittleTreeªº¦ì§}§i¶D
     Kernel¦nÅýKernel³qª¾¥L!

         ¦P²z,­Yª«¥óKenLin§Æ±æKernel¦b·Æ¹«¨Æ¥óµo¥Í®É³qª¾¥L, ¥L¥²¶·¥ý³o¼Ë
     °µ:Kernel.RequestMouseEvent(&KenLin) ·N«ä¬O§i¶DKernel»¡KenLin §Æ±æ
     Kernel¦b·Æ¹«¦³°Ê§@®É§i¶DKenLin, ¨Ã§âKenLinªº¦ì§}§i¶DKernel¦nÅýKernel
     ³qª¾¥L!

     ¥ý»¡©ú¤@ÂI:Kernel¤@¶}©l¬O¤£¬¡°Êªº!!
     ¤]´N¬O»¡´Nºâ¨Æ¥óµo¥Í¤F,Kernel¤]·|¸m¤§¤£²z!!
     ¦]¬°µ{¦¡°õ¦æ¤§ªì¬O±MªùÅý¦U¨Æ¥ó³B²z¤H¦VKernel³ø¨ì¥Îªº!
     ·í¤@¤Á³B²z´Nºü,©I¥sKernel.Go()!! (·N«ä¬O»¡Kernel,¶}©l·F¬¡§a!)
     Kernel«K¶}©l¬¡°Ê!!¦¹®É¤@¥¹¦³¨Æ¥óµo¥Í,
     Kernel«K·|¨Ì·Ó¨Æ¥óªººØÃþ³qª¾¨Æ«e´¿µn°O¹Lªº¨Æ¥ó³B²z¤H.

  ²Ä¤G:Kernel­n«ç»ò°µ¥X¨Ó©O? (·Q¤@¤U³á..)

         ·íµM¬O¥Î¼Ò¤l(Ãþ§O)°µ¥X¨Óªº°Ú!! Kernelªº¼Ò¤l¥s°µ _Kernel. ÁÙ°O±o
     ¥ý«eÁ¿¹Lªº_ThingÃþ§O¶Ü? _Kernel¬O¤@ºØ"ªF¦è", ©Ò¥H_Kernel¤]¬O¤@ºØ
     _Thing°Õ!!! ´«¥y¸Ü»¡,_Kernel¬OÄ~©Ó¦Û_Thingªº! ¥HC++ªºªí¥Üªk¦p¤U:

    (¦s©óKernel.hÀɤ¤)

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢x#ifndef _KERNEL_                                                      ¢x
  ¢x#define _KERNEL_                                                      ¢x
  ¢x                                                                      ¢x
  ¢x#include "Evrece.h"         //¥ý¤£­nºÞ³o¤@¦æ¬O°µ¤°»òªº                ¢x
  ¢x#include "thing.h"                                                    ¢x
  ¢x#include "class.h"                                                    ¢x
  ¢xclass _Kernel:public _Thing                                           ¢x
  ¢x{                                                                     ¢x
  ¢x    public:                                                           ¢x
  ¢x      _Kernel();          //«Øºc¨ç¦¡.                                 ¢x
  ¢x      virtual ~_Kernel(); //¸Ñºc¨ç¦¡.                                 ¢x
  ¢x      virtual unsigned Is(){return IAm_Kernel;}                       ¢x
  ¢x      void Go();          //¥sKernel¤u§@ªº¨ç¦¡.                       ¢x
  ¢x      void RequestKeyEvent(_EventReceiver *);   //­n¨DÁä½L¨Æ¥óªº¨ç¦¡. ¢x
  ¢x      void RequesrMouseEvent(_EventReceiver *); //­n¨D·Æ¹«¨Æ¥óªº¨ç¦¡. ¢x
  ¢x};                                                                    ¢x
  ¢x                                                                      ¢x
  ¢x#endif                                                                ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

    ¦Ó¤@­ÓÀ³¥Îµ{¦¡,­n¼g¦¨¤U­±ªº¼Ë¤l:


    #include "Kernel.h"
    void main()
    {
      _Kernel Kernel;  //¥Î¼Ò¤l°µ¥XKernel.
      ~~~~~~~;         //°µ¥X¨ä¥Lªºª«¥ó,¨Ã¦VKernel¥Ó½Ð¨Æ¥óªº³B²zÅv!
                       //¦¹®ÉKernel¨Ã¤£¤u§@.
      _Kernel.Go();    //Kernel¶}©l¤u§@°Õ!!
    }


  ²Ä¤T:Kernel­n¦p¦ó¸Ô²Óªº§i¶D¨Æ¥ó³B²z¤H©Òµo¥Íªº¨Æ¥óªº¸Ô²Ó±¡§Î©O? ¤ñ¦p»¡¤@
       ­ÓÁä½L¨Æ¥ó, ¦³¥i¯à¬OAÁä³Q«ö¤F,¤]¥i¯à¬OB, Kernel­n¦p¦ó§i¶D¨Æ¥ó³B²z¤H
       ¨ì©³¬O¨º­ÓÁä³Q«ö¤F©O? (·Q¤@¤U³á..)

           ·íµM¬O"¼g«H"§i¶D¥L°Õ!! ­º¥ý¥²¶·­n¦³¤@­Ó«H«HÃþ§O  _Letter, ¦¹Ãþ
       §O¥²¶·¯à°÷¸Ô²Ó°O¸ü¦UºØ¥i¯àªº¨Æ¥ó, ·í¨Æ¥óµo¥Í®É,Kernel¥ý¥Î_LetterÃþ
       §O°µ¥X¤@«Ê«H, µM«á¦b«H¤¤°O¸ü¨Æ¥óªº¸Ô²Ó±¡§Î!! ¦A±N«H«H¶Çµ¹¨Æ¥ó³B²z¤H
       , ¥H¤U¬OKernelªº³B²z¹Lµ{:

     _Letter Letter;                      //¥ý°µ¥X¤@«Ê«H
     ~~~~~~~~;                           //±N©Òµo¥Íªº¨Æ¸Ô²Óªº¼g¤J«H¤¤
     LittleTree.ReceiveLetter(Letter);   //±N«H±Hµ¹¨Æ¥ó³B²z¤H


     Åý§Ú­Ì¨Ó§â_LetterÃþ§O°µ¥X¨Ó:(¦¹Àɦs©óLetter.h¤¤)

   ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
   ¢x#ifndef _LETTER_                                                    ¢x
   ¢x#define _LETTER_                                                    ¢x
   ¢x                                                                    ¢x
   ¢x#include "thing.h"                                                  ¢x
   ¢x#include "event.h"                                                  ¢x
   ¢x#include "class.h"                                                  ¢x
   ¢xclass _Letter:public _Thing //«H¤]¬O¤@ºØ"ªF¦è"                      ¢x
   ¢x{                                                                   ¢x
   ¢x   public:                                                          ¢x
   ¢x     _Letter(){EventKind=EvNothing;Message=NULL;};  //«Øºc.         ¢x
   ¢x     virtual ~_Letter();      //¸Ñºc.                               ¢x
   ¢x     virtual unsigned Is(){return IAm_Letter;}                      ¢x
   ¢x     unsigned EventKind;      //°O¸ü¨Æ¥óªººØÃþ.                     ¢x
   ¢x     unsigned Key;            //­Y¬OÁä½L¨Æ¥ó«h°O¿ý©Ò«ö¤§Áä­È.       ¢x
   ¢x     unsigned MouseX,MouseY;  //­Y¬O·Æ¹«¨Æ¥ó«h°O¿ý·Æ¹«¥Ø«e¤§¦ì¸m.   ¢x
   ¢x     char *Message;           //­Y¬O°T®§¨Æ¥ó«h°O¿ý°T®§©ó¦¹.         ¢x
   ¢x};                                                                  ¢x
   ¢x                                                                    ¢x
   ¢x#endif                                                              ¢x
   ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

     ²{¦bÅý§Ú­Ì¨Ó¬Ý¬Ý¥L¦³­þ¨Ç¯S©Ê:

     <1>  include "event.h":

          event.h¤¤°O¸ü¤F©Ò¦³¨Æ¥óªº¥N½X, ½Ð¬Ý:
        ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
        ¢x                                                          ¢x
        ¢x  #ifndef _EVENT_                                         ¢x
        ¢x  #define _EVENT_                                         ¢x
        ¢x                                                          ¢x
        ¢x  const unsigned EvNothing=0;        //¨S¨Æ               ¢x
        ¢x  const unsigned EvKeyDown=1;        //Áä½L³Q«ö¤U¥h¤F!    ¢x
        ¢x  const unsigned EvKeyUp=2;          //Áä½L³Q©ñ¶}         ¢x
        ¢x  const unsigned EVMouseMove=3;      //·Æ¹«²¾°Ê¤F         ¢x
        ¢x  const unsugned EvMouseLeftDown=4;  //·Æ¹«¥ªÁä³Q«ö¤U     ¢x
        ¢x  const unsugned EvMouseLeftUp=5;    //·Æ¹«¥ªÁä³Q©ñ¶}     ¢x
        ¢x  const unsugned EvMouseRightDown=6; //·Æ¹«¥kÁä³Q©ñ¶}     ¢x
        ¢x  const unsugned EvMouseRightUp=7;   //·Æ¹«¥kÁä³Q©ñ¶}     ¢x
        ¢x  const unsigned EvMessage=8;        //¶Ç°e°T®§¨Æ¥ó       ¢x
        ¢x  const unsigned EvTimer=9;          //®É¶¡¨Æ¥ó           ¢x
        ¢x  const unsigned EvEnd=10;           //"®Ö¤ß§Y±N²×¤î"¨Æ¥ó ¢x
        ¢x  const unsigned EvKernelStart=11;   //"®Ö¤ß¶}©l°Ê§@"¨Æ¥ó ¢x
        ¢x  #endif                                                  ¢x
        ¢x                                                          ¢x
        ¢x  _LetterÃþ§O¤¤ªºEventKind´N¬O¥H¦¹¥N½X°O¸ü¨Æ¥óªº          ¢x
        ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

     <2>
        unsigned Key;           //­Y¬OÁä½L¨Æ¥ó«h°O¿ý©Ò«ö¤§Áä­È
        unsigned MouseX,MouseY; //­Y¬O·Æ¹«¨Æ¥ó«h°O¿ý·Æ¹«¥Ø«e¤§¦ì¸m
        char *Message;          //­Y¬O°T®§¨Æ¥ó«h°O¿ý°T®§©ó¦¹

        ¦¹¤T­ÓÅܼƤÀ§O°O¸ü¨Æ¥óªº¸Ô²Ó¤º®e

        ¦bevent.h¤¤°O¸ü¦³«Ü¦hºØ¨Æ¥óªº¥N¦W¤Î¥N½X, ¨Æ¹ê¤W¬°¤F²³æ°_¨£,
    §Ú­Ì±N¶È°µ¥XÁä½L¨Æ¥ó, ¤]´N¬O»¡¦b§Ú­Ìªº±Ðµ{¤¤Kernel¥u·|°»¹îÁä½L¨Æ
    ¥ó°Õ! ¨ä¥Lªº¨Æ¥ó, ­Y¦U¦ì¦³¿³½ì¥i¥H¦Û¤v°µ°µ¬Ý!


  ²Ä¥|:ÁöµM§Ú­Ì¤w°µ¥X_LetterÃþ§O,¥i¥H±H«Hµ¹±Mªù³B²z¨Æ¥óªºª«¥ó, ¥i¬O·íªì¦U
       ­Óª«¥ó¦VKernel¥Ó½Ð¨Æ¥ó³B²zÅvªº®É­Ô, ¥u¯d¤U¦ì§}¦Ó¤w,§Ú­Ì­n¦p¦ó®Ú¾Ú¦¹
       ¦ì§}¨Ó¶Ç«Hµ¹¥L©O?  (·Q¤@·Q³á..)

       ¥H¤Uªº¤å³¹½Ð¤@¤f®ð¬Ý§¹, ÂsÄý¤@¹M«á¦A¦^ÀY¨Ó¸Ô²Ó¬Ý·|¤ñ¸û¦nÁA¸Ñ!

       ©Ò¦³¯à°÷¦¬«Hªºª«¥ó(¤H)³£¬O¤@ºØ¨Æ¥ó±µ¦¬ªÌ-- _EventReceiver §Ú­Ì³o¼Ë¼g:
       (EvRece.h)

   ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
   ¢x#ifndef _EVENTRECEIVER_                                             ¢x
   ¢x#define _EVENTRECEIVER_                                             ¢x
   ¢x                                                                    ¢x
   ¢x#include "class.h"                                                  ¢x
   ¢x#include "thing.h"                                                  ¢x
   ¢xtypedef int Bool                                                    ¢x
   ¢xclass _EventReceiver:public _Thing //¨Æ¥ó±µ¦¬ªÌ¤]¬O¤@ºØ_Thing       ¢x
   ¢x{                                                                   ¢x
   ¢x  _EventReceiver(){}                                                ¢x
   ¢x  virtual ~_EventReceiver();                                        ¢x
   ¢x  virtual unsigned Is(){return IAm_EventReceiver;}                  ¢x
   ¢x          //³o¬O¦¬«H«H¥Îªº¨ç¦¡,¦¨¥\ªº³B²z§¹©Òµo¥Íªº¨Æ¥ó«á«h¶Ç¦^True,¢x
   ¢x          //§_«h¶Ç¦^False                                           ¢x
   ¢x  virtual Bool ReceiveLetter(_Letter &){return 1}                   ¢x
   ¢x};                                                                  ¢x
   ¢x                                                                    ¢x
   ¢x#endif                                                              ¢x
   ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      °ò¥»¤W,_Eventreceiver©M_Thing¤@¼Ë,³£¬O¤@ºØ°ò¥»Ãþ§O, ©Ò¿×ªº°ò¥»Ãþ§O,
  ³q±`¬O¤£®³¨Óª½±µ©w¸qª«¥óªº!! ¦Ó¬O®³¨Ó·í§@¨ä¥LÃþ§Oªº¤÷Ãþ§O!!¦]¬°
  _EventReceiverÃþ§O¦h¤F¤@­ÓµêÀÀ¨ç¦¡-- ReceiveLetter() ©Ò¥H©Ò¦³Ä~©Ó¦Û¦¹Ãþ
  §OªºÃþ§O©Ò°µ¥X¨Óªºª«¥ó³£·|¦³±µ¦¬«H«Hªº¯à¤O, ´«¥y¸Ü»¡, ©Ò¦³·Q­n¦³¦¬«H«H¯à
  ¤Oªº¤H³£»Ý­n¬O¤@ºØ_EventReceiver, ¤ñ¦p»¡Kernel¤£¬O¤@ºØ_EventReceiver¥L·í
  µM¤£¯à¦¬«H, §Ú³o¼ËÁ¿§A¥i¯à¤£À´, Åý§ÚÁ|­Ó¨Ò¤l:

   ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
   ¢xclass _KeyEventReceiver:public _EventReceiver  //Áä½L¨Æ¥ó±µ¦¬ªÌÃþ§O   ¢x
   ¢x{                                                                     ¢x
   ¢x  public:                                                             ¢x
   ¢x         //·íÁä½L¨Æ¥óµo¥Í®ÉKernelÂǥѦ¹¨ç¦¡³qª¾¥L                     ¢x
   ¢x    virtual Bool ReceiverLetter(_Letter &Letter)                      ¢x
   ¢x    {                                                                 ¢x
   ¢x           cout << Letter.Key; //¦¹Ãþ§O¦¬¨ì«H«H«áªº¤ÏÀ³               ¢x
   ¢x           return 1;                                                  ¢x
   ¢x    }                                                                 ¢x
   ¢x};                                                                    ¢x
   ¢x                                                                      ¢x
   ¢xvoid main()                                                           ¢x
   ¢x{                                                                     ¢x
   ¢x    _Kernel Kernel; //¥Í¥XKernel                                      ¢x
   ¢x    _KeyEventReceiver LittleTree; //¥Í¥XLittleTree                    ¢x
   ¢x  Kernel.RequestKeyEvent(&LittleTree);                                ¢x
   ¢x                                //LittleTree¦VKernel¥Ó½ÐÁä½L¨Æ¥ó³B²zÅv¢x
   ¢x  Kernel.Go();      //Kernel¶}©l·F¬¡§a!                               ¢x
   ¢x}                                                                     ¢x
   ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¦bKernel.Go()¤¤,Kernel¨ì©³¬O«ç»ò©I¥sLittleTreeªº©O? Åý§Ú­Ì¨Ó¬Ý¬Ý·s
  ªºKernelªºµ{¦¡½X:

   ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
   ¢xclass _Kernel:public _Thing                                           ¢x
   ¢x{                                                                     ¢x
   ¢x   unsigned KeyEventReceiverCount;                                    ¢x
   ¢x                //°O¿ý¦³¦h¤Ö¤H¥Ó½ÐÁä½L¨Æ¥ó³B²zÅv                      ¢x
   ¢x  _EventReceiver *KeyEventReceiver[30];                               ¢x
   ¢x                //¥Î¨Ó°O¿ý©Ò¦³¥Ó½ÐÁä½L¨Æ¥ó³B²zÅvªºª«¥óªº¦ì§},³Ì¦h30¤H ¢x
   ¢x  public:                                                             ¢x
   ¢x    _Kernel(){KeyEventReceiverCount=0;}  //«Øºc¨ç¦¡                   ¢x
   ¢x    virtual ~_Kernel();                  //¸Ñºc¨ç¦¡                   ¢x
   ¢x    virtual Is(){return IAm_Kernel;}                                  ¢x
   ¢x    void Go();                           //¥sKernel¤u§@ªº¨ç¦¡         ¢x
   ¢x    void RequestKeyEvent(_EventReceiver *);   //­n¨DÁä½L¨Æ¥óªº¨ç¦¡    ¢x
   ¢x    void RequesrMouseEvent(_EventReceiver *); //­n¨D·Æ¹«¨Æ¥óªº¨ç¦¡    ¢x
   ¢x    _Letter Letter;                           //°µ¥X¤@«Ê«H            ¢x
   ¢x};                                                                    ¢x
   ¢x                                                                      ¢x
   ¢xvoid _Kernel::RequestKeyEvent(_EventReceiver *Receiver)               ¢x
   ¢x{                                                                     ¢x
   ¢x   KeyEventReceiver[KeyEventReceiverCount]=Receiver;                  ¢x
   ¢x   KeyEventReceiverCount++;                                           ¢x
   ¢x}                                                                     ¢x
   ¢x                                                                      ¢x
   ¢xvoid _Kernel:::Go()                                                   ¢x
   ¢x{                                                                     ¢x
   ¢x  while (1)                                                           ¢x
   ¢x  {                                                                   ¢x
   ¢x    if(bioskey(1) != 0)//¦pªGÁä½L¨Æ¥óµo¥Í                             ¢x
   ¢x    {                                                                 ¢x
   ¢x      Letter.EventKind=EvKeyDown;                                     ¢x
   ¢x                            //±N«H¤¤ªº¨Æ¥óºØÃþ§ï¦¨Áä½L¨Æ¥ó            ¢x
   ¢x      Letter.Key=bioskey(0);//¥ÑÁä½LŪ¤J¤@Áä                          ¢x
   ¢x      for(unsigned i=0;i<KeyEventReceiverCount;i++)                   ¢x
   ¢x        KeyEventReceiver[i]->ReceiveLetter(Letter);//°e«Hªº°Ê§@       ¢x
   ¢x                            //±N¦¹«H¶Çµ¹©Ò¦³Áä½L¨Æ¥ó³B²z¤H            ¢x
   ¢x    }                                                                 ¢x
   ¢x  }                                                                   ¢x
   ¢x}                                                                     ¢x
   ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

  ²Ä¤­:  ­n«ç»òÅýKernel°±¤î¤u§@©O? (·Q¤@·Q..)

          ¥ô¦óª«¥ó¥u­n©I¥sKernel.End()´N¥i¥H°±¤î®Ö¤ßªº¤u§@¤F! ¥i¬O³o¼Ë·|¦³
      ¨â­Ó°ÝÃD:

       1.Kernel¬O«ç»ò§â¦Û¤v°±¤U¨Óªº©O?
       2.¦Uª«¥ó¤S¤£ª¾¹DKernelªº¦ì§},­n«ç»ò©I¥s¥L©O?

          §Ú­Ì¥ý¸Ñ¨M²Ä¤G­Ó°ÝÃD: ¨ä¹ê«Ü²³æ, ¥u­n¦b_LetterÃþ§O¤¤°O¿ý¤U®Ö¤ßªº
      ¦ì§}´N¦n¤F°Ú!

  ¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
  ¢xclass _Letter:public _Thing //«H¤]¬O¤@ºØ"ªF¦è"                      ¢x
  ¢x{                                                                   ¢x
  ¢x  public:                                                           ¢x
  ¢x    _Letter(){EventKind=EvNothing;Message=NULL;};  //«Øºc           ¢x
  ¢x    virtual ~_Letter();                            //¸Ñºc           ¢x
  ¢x    virtual unsigned Is(){return IAm_Letter;}                       ¢x
  ¢x    unsigned EventKind;           //°O¸ü¨Æ¥óªººØÃþ.                 ¢x
  ¢x    unsigned Key;                 //­Y¬OÁä½L¨Æ¥ó«h°O¿ý©Ò«ö¤§Áä­È.   ¢x
  ¢x    unsigned MouseX,MouseY;       //­Y¬O·Æ¹«¨Æ¥ó«h°O¿ý·Æ¹«¥Ø«e¤§¦ì¸m¢x
  ¢x    char *Message;                //­Y¬O°T®§¨Æ¥ó«h°O¿ý°T®§©ó¦¹.     ¢x
  ¢x    _Kernel KernelAddress;        //³o¬O°O¿ý®Ö¤ßªº¦ì§}¥Î.           ¢x
  ¢x};                                                                  ¢x
  ¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

       ¦p¦¹¤@¨Ó,¦¬¨ì«H«Hªº¨Æ¥ó³B²z¤H´N¥i¥H®Ú¾ÚKernelªº¦ì§}¸òKernel·¾³q¤F.
       ¦Ü©ó²Ä¤@­Ó°ÝÃD,½Ð¬Ý§ó·s«áªºµ{¦¡½X:

¢z¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢{
¢x  class _Kernel:public _Thing                                           ¢x
¢x  {                                                                     ¢x
¢x    unsigned KeyEventReceiverCount;  //°O¿ý¦³¦h¤Ö¤H¥Ó½ÐÁä½L¨Æ¥ó³B²zÅv.  ¢x
¢x    _EventReceiver *KeyEventReceiver[30];                               ¢x
¢x                 //¥Î¨Ó°O¿ý©Ò¦³¥Ó½ÐÁä½L¨Æ¥ó³B²zÅvªºª«¥óªº¦ì§},³Ì¦h30¤H. ¢x
¢x    int EndFlag; //¦h¤F³o¤@­Óµ²§ôºX¼Ð                                   ¢x
¢x                                                                        ¢x
¢x    public:                                                             ¢x
¢x      _Kernel(){KeyEventReceiverCount=0;                                ¢x
¢x                EndFlag=0;Letter.KernelAddress=this;}  //«Øºc¨ç¦¡       ¢x
¢x      virtual ~_Kernel();       //¸Ñºc¨ç¦¡.                             ¢x
¢x      virtual Is(){return IAm_Kernel;}                                  ¢x
¢x      void Go();                //¥sKernel¤u§@ªº¨ç¦¡.                   ¢x
¢x      void RequestKeyEvent(_EventReceiver *);    //­n¨DÁä½L¨Æ¥óªº¨ç¦¡.  ¢x
¢x      void RequesrMouseEvent(_EventReceiver *);  //­n¨D·Æ¹«¨Æ¥óªº¨ç¦¡.  ¢x
¢x      void End();      //¦h¤F³o¤@­Óµ²§ô¨ç¦¡.                            ¢x
¢x      _Letter Letter;  //°µ¥X¤@«Ê«H.                                    ¢x
¢x  };                                                                    ¢x
¢x                                                                        ¢x
¢x  void _Kernel::RequestKeyEvent(_EventReceiver *Receiver)               ¢x
¢x  {                                                                     ¢x
¢x    KeyEventReceiver[KeyEventReceiverCount]=Receiver;                   ¢x
¢x    KeyEventReceiverCount++;                                            ¢x
¢x  }                                                                     ¢x
¢x                                                                        ¢x
¢x  void _Kernel:::Go()                                                   ¢x
¢x  {                                                                     ¢x
¢x    while (1)                                                           ¢x
¢x    {                                                                   ¢x
¢x      if(EndFlag==1)      //­Yµ²§ôºX¼Ð¬°1«hµ²§ôµ{¦¡.                    ¢x
¢x        break;                                                          ¢x
¢x      if(bioskey(1) ==1)  //¦pªGÁä½L¨Æ¥óµo¥Í.                           ¢x
¢x      {                                                                 ¢x
¢x        Letter.EventKind=EvKeyDown; //±N«H¤¤ªº¨Æ¥óºØÃþ§ï¦¨Áä½L¨Æ¥ó.     ¢x
¢x        Letter.Key=bioskey(0);      //¥ÑÁä½LŪ¤J¤@Áä.                   ¢x
¢x                                    //±N¦¹«H¶Çµ¹©Ò¦³Áä½L¨Æ¥ó³B²z¤H.     ¢x
¢x        for(unsigned i=0;i<KeyEventReceiverCount;i++)                   ¢x
¢x          KeyEventReceiver[i]->ReceiveLetter(Letter);  //°e«Hªº°Ê§@.    ¢x
¢x      }                                                                 ¢x
¢x    }                                                                   ¢x
¢x }                                                                      ¢x
¢x                                                                        ¢x
¢x void _Kernel::End()                                                    ¢x
¢x {                                                                      ¢x
¢x   EndFlag=1;         //±Nµ²§ôºX¼Ð³]¬°1.                                ¢x
¢x   Letter.EventKind=EvEnd;                                              ¢x
¢x   for(unsigned i=0;i<KeyEventReceiverCount;i++)                        ¢x
¢x     KeyEventReceiver[i]->ReceiveLetter(Letter);                        ¢x
¢x                      //§i¶D©Ò¦³ªº¨Æ¥ó³B²z¤Hµ{¦¡§Y±Nµ²§ô,½Ð°µ¦nµ½«á·Ç³Æ.¢x
¢x }                                                                      ¢x
¢|¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢w¢}

      ¤W­±ªºµ{¦¡½X¤¤,¦b«Øºc¨ç¦¡ªº¦a¤è, ¥Î¨ì¤Fthis³o­Ó«ü¦ì¾¹! this¬O¤@­ÓC++
  ¦Û¤v«Ø¥ßªº«ü¦ì¾¹, ¥Ã»·«ü¦V²{¦b¥¿¦b¾Þ§@ªºª«¥ó!! ·í«Øºc¨ç¦¡°õ¦æ®É, this·í
  µM¬O«ü¦VKernel°Õ! ©Ò¥H§âthis«þ¨©¤@¥÷µ¹Letter.KernelAddress, ³o¼Ë
  Letter.KernelAddress´N¯à¥¿½Tªº«ü¨ìKernel¤F!


<5>  ½s½X¤Î½d¨Ò

      ±µ¤U¨Ó¬O¤@­Ó½d¨Ò, µ{¦¡½X§Ú³£¤w¸g¦¬¿ý¦bÀɰϤF! ³Â·Ð¤j®a¥h§ì¤U¨Ó¬Ý¤@¬Ý.
 µ{¦¡¨Ã¤£Ãø,­«­nªº¬Oª«¥ó¾É¦VªºÆ[©À. ¾ã­Óµ{¦¡¨ä¹ê´N¬O¤@­Óª«¥ó©Mª«¥ó¶¡ªº·¾³q¥v!
 ¬Ý§¹´Nª¾¹D¾ã­Óª«¥ó¾É¦Vªºµ{¦¡¬O«ç»ò¹B§@ªº¤F! ¨Æ¹ê¤W¤@­Ó¨Æ¥óÅX°Êªº®Ö¤ßµ´¹ï¤£
 ¥u³o»ò²³æ. ­n¦Ò¼{ªº¨Æ±¡¬O«Ü¦hªº!! ¦³¿³½ìªº¤H¥i¥H°Ñ¦ÒºX¼Ðªº"¨Æ¥óÅX°Êµ{¦¡³]
 ­p"³o¥»®Ñ¬O¥j²M¼w¥ý¥Í¼gªº! ¸Ì­±¦³§ó¸Ô²Óªº»¡©ú! ¬Û«H¬Ý§¹³o¾ã­Ó±Ðµ{, ±z¹ïª«¥ó
 ¾É¦Vªºµ{¦¡³]­p¤èªk·|¦³¦h¤@¼hªºÁA¸Ñ.

     ´Á«Ý¦A»P±z¨£­±, Bye!Bye!

          ¥þ½g§¹
                                                               ¤p¾ð




--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]

µo«H¤H¡G zmx (¼@°|¤§°­)    ¬ÝªO¡Gmath89
¤é´Á¡G Fri Oct 24 09:30:41 1997
¼ÐÃD¡G ³o¤T½g



        ²©öªº C++ ¸Ñ»¡, ·Q¾Ç§ó¦hªº¤H½Ð¬Ý®Ñ, ÁÙ¬O±Àų C++ª¨ª¨¼gªº
        The C++ Programming Language. ¤¤¤åªº¸Ü, ªQ®æ¥Xªº C++¸t¸g
        ÁÙ¥i¥H.   §Ú·|¦b¶K´X½g OOP( Object-Oriented Programming )ªºªF¦è

--
ZMX
        The Phantom of The Opera



--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]

µo«H¤H: william@cis_nctu (C++/ASM/Win Master), «H°Ï: oop
¼Ð  ÃD: ª«¥ó¾É¦Vªº¤ÑªÅ
µo«H¯¸: ¥æ¤j¸ê¬ì_BBS (May 18 01:51:10 1994)
Âà«H¯¸: cis_nctu

FOOTNOTE by william@cis_nctu:
©³¤U¤å³¹¬O¥Ñ«Ø¤¤ªL«TªN¥ý¥Í¨â¤T¦~«eµoªí©ó¡u«Ø¤¤«C¦~¡v¥Zª«ªº¤å³¹ , µ¹¦U¦ì°Ñ¦Ò¡C
¨ä¤¤¸Ó¤åªºÆ[ÂI¦h¥b¥X¦Û OMT ¤èªk½×¡C

µù: ªL«TªN²{¦bÀ³¸Ó´NŪ©ó¥x¤j¼Æ¾Ç¨t¤j¤G, §A¥i¥H¦b HOPE BBS ¬Ý¨ì¥L,
    ID ¬° Dickson Lin¡C


                           ª«¥ó¾É¦Vªº¤ÑªÅ
                                                              ¡¼ªL«TªN

«e    ¨¥

¡@¡@¡uª«¥ó¾É¦V¡v³o­Ó¦Wµü¶V¨Ó¶V¼öªù¡A¦ü¥G¤£À´¥¦ªº¤H³£¦n¹³¬¡¦b¤W¥j¥@¬É¤@
¯ëªº¹L®É¡A¦ýª¾¨äµMªÌ¥¼¥²ª¾¨ä©Ò¥HµM¡Aª«¥óªº©w¸q¬°¦ó¡Hª«¥ó¾É¦Vªº³]­p­õ¾Ç
ºëÅ謰¦ó¡H³o¨Ç°ÝÃD¨Ã«D¬O¤H¤H³£¯àµª±o¤W¨Óªº¡C

¡@¡@³Ìªñ¾ÇC++ªº¤H¤f¤]¶}©l¤W¤É¡A®£©È¤S·|±a°Ê¥t¤@ªÑ¬y¦æªº­·®ð¡C¦ý¯îÂÕªº
¬O¤j³¡¤ÀC++ªº±Ð¬ì®Ñ©ÒÁ¿ªº¤º®e®Ú¥»´N¬O¢Ñ»y¨¥¡A¥~¥[¤@ÂIª«¥ó¾É¦Vµ{¦¡³]­p
(OOP)ªº¥Ö¤ò¡C³o¼Ë°µ¯u¯à¾Ç¦nC++¶Ü¡Hµ§ªÌ¨£¯u¥¿§â¢Ñªº³]­p­õ¾Ç·dÀ´ªº¤H¤h¹ê
¦b¤£¦h¡A®£©È¯u¥¿§ËÀ´C++ªº§ó¤Ö¡C¦pªG¯Ê¥Fª«¥ó³]­p­õ¾Ç·§©Àªº¤H¥ÎC++©Ò¼gªº
µ{¦¡®£©È¤]¥u¬O¤ñ¸û¯S§Oªº¢Ñ½}¤F¡C

¡@¡@¨ä¹êª«¥ó¾É¦V¬Oªù«Ü¦³½ìªº³]­p­õ¾Ç¡A¥¦¸Õ¹Ï¥Ñ¤H­Ì¹ï°ÝÃDªº¬Ýªk¨Ó¸ÑÄÀ³n
Å骺¬[ºc¡A¨Ã¤O¨D±N°ÝÃDªº©w¸q°ì¬M®g¨ì¤ÀªRªº¼Ò«¬¡A¦AÂন¬Û¹ïªºµ{¦¡½X¡C¥Ø
«e¨Ï¥Îª«¥ó¾É¦V§Þ³Nªº³nÅé¦p«B«á¬Kµ«¯ë¦a½´«kµo®i¡A¦]¦¹µL½×§A¬O¤£¬O±M·~ªº
¤uµ{®v¡A³£À³¸Ó¹ïª«¥ó¦³©ÒÁA¸Ñ¡C

¡@¡@¦b«á¤å¤¤¡A±N¥Hª«¥ó¾É¦V³nÅé¤uµ{½×¬°°Q½×ªº®Ö¤ß¡A³Ì«áIJ¤ÎC++»Pª«¥ó³]
­pªºÃö«Y¡C¦p¦¹ºëªöªº¤å³¹¡A§A­Y¦A¤£²r¢Ù¡A°Z¦³°êªk¤Ñ²z¤H±¡¨}¤ß¥G¡I

²Ä ¤@ ³¹    ¦ó¿×ª«¥ó (OBJECTS)

¡@¡@ª«¥óªº­ì¤å¬OObject¡A°ê¤º¤]¦³¤H§â¥Lͬ°¡u­ÓÅé¡v¡A¡u¶µ¥Ø¡v¡B¡u¥Øªº¡v
µ¥µ¥¡A¦ý¬°²Î¤@°_¨£¡A¦b¥»¤å¤¤¤@«ß²ÎºÙª«¥ó¡C¦Ó¥Hª«¥ó¬°°ò¦ªº³nÅé³]­p­õ¾Ç
¡A«h¤@«ß«a¥H¡uª«¥ó¾É¦V¡v (Object Oriented¡A²¼g¬°OO)ªºÀY»Î¡C¬Gª«¥ó¾É¦V
µ{¦¡³]­p«KºÙOOP  (Object  Oriented  Programming  ) ª«Åé¾É¦V¤ÀªR(Object
Oriented  analysis, OOA)¡Aª«¥ó¾É¦Vµ{¦¡»y¨¥(Object Oriented Programming
Lagnage,OOPL)¦p¦¹Ãþ±À¡A¤£¤@¦Ó¨¬¡CµM¦Ó¡A¨ì©³ª«¥ó¬O¤°»ò©O¡H¹q¸£¾Ç®aµ¹¥¦
¤@­Ó©w¸q¡G

¡@¡@¤@­Ó©â¶HÅé¡B·§©À¡B©Î¬O¤@­Ó¦³©ú½T¬É©w½d³òªº¨Æª«¡A¨Ã¥B¦b§Ú­Ì­n¸Ñ¨Mªº
    °ÝÃD¤¤¬O¦³·N¸qªº¡C

¡@¡@Á|¨â­Ó¨Ò¤l¡Gµ§ªÌ¦³³¡¸}½ñ¨®¡A³o¬O­Óª«¥ó¡A»Õ¤U¤â¤W¬Ýªº«Ø«C¤]¬O­Óª«¥ó
¡C¥Í¬¡¤¤§Î§Î¦â¦âªº¨Æª«¤]³£¬Oª«¥ó¡A»Õ¤U¥ç´_¦p¦¹¡C³oÂI·§©À¤j®a³£¥i¥H±µ¨ü
¡A¦ý¥ú©w¸qª«¥ó¨S¥Î¡A¨®¤l¨Ì¦b¸ô¤W¶]¡A©M»Õ¤Uªºµ{¦¡²@¤£¬Û¯A¡C¦A¶i¤@¨B¥h
¬ã¨s¡Aµ§ªÌªº¦Û¦æ¨®¬O¥H¾T¦Xª÷¬°¨®°©¡A»´¥B¤£¥ÍùסA¦Ó¥B¥¦¥i¥H«e¶i¡A¥i¥H«b
¨®¡A³o¤]³£¨SÔ£©_©Ç¡A¦ý¸g¥Ñ¥H¤Wªº´y­z¡A§Ú­Ì¤w¸g©w¸q¥Xµ§ªÌªº¦Û¦æ¨®¡A©M¥¦
ªº¯S©Ê¡]¾T¦Xª÷¨®¬[¡^¡A¤Î¥¦ªº¥\¯à¡]«e¶i¡B«b¨®¡^¡C·íµM³o¼Ë¥i¯à©|¥¼¿²©P©µ
¡A¦]¬°§Ú¨S»¡§Úªº¨®¤l¦³½ü¤l¡A¦ý§Úªºµ{¦¡©Î³\¤£¥²ª¾¹D¨º»ò¦h¡I°²©wŪªÌ§A¤]
¦³³¡¸}½ñ¨®¡A§Aªº¸}½ñ¨®ªº¨®¨­¬O¶ì½¦»sªº¡A¦P¼Ëªº¡A±zªº¨®¤]¥i¥H«e¶i¡B«b¨®
¡I²z©Ò·íµM¡A§Aªº¨®¤]¬O­Óª«¥ó¡I¤W­±´£¨ìµ§ªÌªº¤Î»Õ¤Uªº¦Û¦æ¨®¡A¦ý¨ä¥¦ªº±i
¤T§õ¥|¤]·|¦³¦Û¦æ¨®¡A¨ä¤¤¦³ÅKªº¡A¤]¥i¯à¦³¯È½kªº¡I¦¹®É§Ú­Ì¥i©w¸q¤@­Ó¥s¡u
¦Û¦æ¨®¡vªº¡uÃþ§O¡v(class)¡CÃþ§O¤]¦P¼Ë¦³­Ó©w¸q¡G

¡@¡@¹ï©ó¨ã¦³Ãþ¦ü©Ê½è¡B¬Û¦Pªº¦æ¬°¡B·N¸q¤Î¦@¦PÃö«Yªºª«¥ó¤§´y­z§Y¬°Ãþ§O¡C

¡@¡@²L¥Õªº»¡¡AÃþ§O§Y¬O¨ã¬Û¦P©Ê½èª«¥óªº¶°¦X¡F¤Ï¤§¡A¹ï©óÃþ§O¦Ó¨¥¡Aª«¥ó«h
¬°¨ä¡u®×¨Ò¡v(instance)¡C

¡@¡@¶Ç²Îªº³nÅé³]­p¤è¦¡¬O±N°ÝÃDªº¹ï¶H¤ÀªR¤§«á¡A±Ä¨ú¾A·íªº¸ê®Æµ²ºc¨Óªí¥Ü
¡A¨Ã¥H¬Û¹ïªºµ{§Ç¨ç¼Æºtºâªk¨Ó³B²z¸ê®Æ¡A¨âªÌ¬Ý°_¨Ó¦ü¥G¿W¥ß¦ÓµLÃö¡C¦Ó²{¦b
§Ú­Ì«h¥H¡uª«¥ó¡v±N¬ÛÃöªº¸ê®Æ©Mµ{§Çµ²¦X¦¨¤@Åé¡A¨Ï±o¨âªÌªºÃö«Y¬Ý°_¨Ó§ó©ú
¥Õ¡A³o¬Oª«¥ó¾É¦Vµ{¦¡³]­p³Ì¤jªº¯SÂI¤§¤@¡C

¡@¡@¸ê°TÁôÂÃ(information  hiding)¡A¤]´N¬Oª«¥óªº«Ê¸Ë©Ê(encapsulation)¡A
¥i¥H©ú¥Õ¤À¥Xª«¥ó¥i¥H³Q¥~¬É¨Ï¥Îªº¯S©Ê¤Î¨ü«OÅ@ªº¤º³¡¯S©Ê¡C§â¯S©Ê¨Ì¦s¨úÅv
­­¤ÀÃþ¥i¥HÁ×§Kµ{¦¡ªº¨ä¥¦³¡¤À»~¥Î¦¹ª«¥ó¡A¦Ó¾É­P¤£¨}ªº°Æ§@¥Î¡CÃö©ó«Ê¸Ë©Ê
¦b²Ä¤»³¹¦³§ó²`¤Jªº°Q½×¡C

¡@¡@Cox ¤ó»{¬°§Ú­Ì¥i¥HÂǥѫإߪ«¥óµ{¦¡®w¨Ó¹F¦¨³nÅéICªº¥Ø¼Ð¡A²z¥Ñ¬O¦]¬°
ª«¥ó¨ã¦³­«ÂШϥΩÊ(reusability)¡A¦ÓÄ~©Ó(inheritance)«h¬O¹F¦¨­«ÂШϥΪºµ¦
²¤¡C¥s¥¦Ä~©Ó¥i¯à¦³¨Ç»y·N¤£©ú¡A¤£¹L«o«Ü¶K¤Á¡A¥H¦Û¦æ¨®³o­ÓÃþ§O¨Ó»¡¡A¥[¸Ë
¤@¨ã°¨¹F´N¦¨¤F¤@³¡¹q°Ê¾÷½ñ¨®¡A¹q°Ê¾÷½ñ¨®¨ÌµM¥i¥H«e¶i¡B«b¨®¡A¤]¦³¨®¨­§÷
½è¡A¥u¤£¹L¦h¨ã°¨¹F¡A¦]¦¹³o­Ó¹q°Ê¾÷½ñ¨®Ãþ§O«K¬O¥Ñ¸}½ñ¨®¿ò¶Ç¦Ó¨Óªº¡CÄ~©Ó
¦bµøµ¡ªº³]­p¤W¯S§O¦³¥Î¡C¥Ñ³Ì°ò¥»ªºµøµ¡¥i¥H­l¥Í¥X¥i±²­¶ªº¡A¥i©ñ¤jÁY¤pªº
......µ¥µ¥¦U¦¡¦U¼Ëªºµøµ¡¡C¸Ô²Óªº¤º®e¦b«á­±ªº³¹¸`¦³§ó²`¤Jªº¤¶²Ð¡C

¡@¡@¤õ¨®¡B¨T¨®¡B¾÷¨®³£¥i¥H¬°¤H©Ò¾r¾p¡C¡u¾r¾p¡v³o­Ó°Ê§@¬O­Ó¬Û·í©â¶Hªº¦W
µü¡A¤õ¨®¡B¨T¨®¡B¾÷¨®ªº¾r¾p¤èªk³£¤£¤@¼Ë¡A¦ý¾r¾p¤@µü²[»\¤F¹ê»Ú¤W¨ã¦³®t²§
©Êªº¾r¾p¦æ¬°¡C³oºØ¯S½èºÙ¬°¡u¦h§Î©Ê¡v(polymophism)¡C

¡@¡@¥t¤è­±¡A¥úª¾¹Dª«©óª«¥óªº¯S©Ê¹ê¦b¤£¨¬¥H¸Ñ¨M§Ú­Ìªº°ÝÃD¡A¦p¦ó±Nª«¥ó¤Þ
¤J³nÅé³]­p¤¤©O¡H¦p¦ó¤ÀªRª«¥ó¡H¦p¦ó¿ò¶Ç¡H¦p¦ó´y­z¤@¾ã­Ó¨t²Î¤¤ª«¥ó©Mª«¥ó
¶¡ªºÃö«Y¡H³o¨ÇÁÙ³£¬O¥¼ª¾ªº°ÝÃD¡C¦b«á¤å¤¤¡Aµ§ªÌ±N¥H¬Û·í½g´T°Q½×ª«¥ó¤èªk
½×¡C¦b³o­Ó»â°ì¤¤À³­º±À¥¬©_(Booch)ªº¬ã¨s¦¨ªG¡A¥L¦³®Äªº¥H¹Ïªí¤ÀªR¥Xª«¥ó
ªºµ²ºc¤ÎÃöÁp¡C¤£¹L§Ú¨Ã¤£¥´ºâ¦h½Í¡A¦]¬°¥Lªº²z½×¸û°¾­«©ó¶Ç²Îªº³]­p²z½×¡A
¹ï©ó¿ò¶Çµ¥¥ý¶iªº·§©ÀÅã±o¸ûÁ¡®z¡Aµ§ªÌ±N¥H³Ò®¦´Ë (Lorensen) µ¥¤H©Ò´£¥Xªº
OMT ( Object Modeling Technique ) ¬°°©·F¡C³o®M²z½×¦³¤@®M·¥§¹¾ãªºµo®i¹L
µ{¡COMT¬O¥L­Ì¥Î¥Hµo®i³nÅ骺¤èªk¡A¦]¦¹¦b¹ê§@¤è­±ªº®ÄªG¬Û·í²z·Q¡C

¡@¡@ª«¥ó¾É¦V³nÅé¤uµ{¦³¶µ¯SÂI¡A´N¬O¸Õ¹Ï¥H«Ø¥ß¡u¼Ò«¬¡vªº¤è¦¡¨Ó¤ÀªR°ÝÃD¡C
OMTªk¤×¬Æ¡A¥¦¥H¤TºØ°ò¦¼Ò«¬¨Ó±Ô­z¾ã­Ó³nÅ骺µ²ºc¡B¹B§@¼Ò¦¡¡A¥¦­Ì¤À§O¬O
¡G

ü檫¥ó¼Ò«¬(Object Model)

¡@¡@´y­zª«¥óªºµ²ºc¤Îª«¥ó¶¡ªºÃö«Y

üç°ÊºA¼Ò«¬(Dynamic Model)

¡@¡@¨t²Îªºª¬ªp®É®É³£¦³ÅܤơA°ÊºA¼Ò«¬¥H¨Æ¥óµo¥Í©Mª¬ºAªº§ïÅܨӴy­z¨t²Î¤¤
    ªº¥æ¤¬§@¥Î¡C

üè¥\¯à¼Ò«¬(Functional Model)

¡@¡@¥\¯à¼Ò«¬¬OOMT¥]®e¶Ç²Î³nÅé³]­pªº¤@³¡¤À¡C¥¦ÂÇ¥Ñ¸ê®Æ¬yµ{¹Ï(Data  Flow
    Diagram¡ADFD)¨Ó´y­z¸ê®ÆÂà´«©Î­pºâ¤§¬yµ{¡CÃö©óDFD¡AŪ¤Í¥i°Ñ¦Ò«Ø«C
    94´Áµ§ªÌ©å§@¡u³nÅé³]­pªº«äºû¡v¤@¤å¡C

¡@¡@OMTªº³nÅé³]­p¨BÆJ¬O¤ÀªR(Analysis)¡B¨t²Î³]­p(System Design)¡Bª«¥ó³]
­p(Object  Design)¦b¨Ó¬O¹ê§@(Implementation)¤§¥»½è«h¬O¥Hª«¥óÆ[ÂI«Ø¥ß«e
­z¤TºØ¼Ò«¬¡A¦A¥[¥H³]­p¡B²Î¦X¡BµM«á¬M®g¦¨¬°µ{¦¡½X¡C

¡@¡@ÂǥѪ«¥ó¾É¦Vªº¤è¦¡¨Ó³]­p³nÅé¥i¥H¦³®Äªº´£¤É³nÅé³]­pªº®Ä²v¡A¡]ÁöµM¦b
¥Ñ¤èªkÂà¤Jª«¥ó¾É¦V®É¥i¯à·|¦³­°§Cªº²{¶H¡^¡CÁ|­Ó©úÅ㪺¨Ò¤l¡GBorland ¤½
¥q¦bQuattro±À¥X¥b¦~¦h«á±À¥XQuattro Pro¡A¤T­Ó¤ë«áµøµ¡ª©´N°Ý¥@¤F¡C³o»ò§Öªº
³t«×§¹¥þ¬O«ôª«¥ó¾É¦Vªk©Ò½ç¡A¤]¨ÏBorland¤½¥q¤jÁȨä¿ú¡]¸Ó¤½¥q¸¹ºÙ¦~¦¨ªø
²v¦Ê¤À¤§¨â¦Ê¡^¡C¥H¥Í²£dBASEµÛ¦Wªº¦w«H¹F¤½¥q¦bdBASE III±À¥X¼Æ¦~«á¤~±À¥X
dBASE IV 1.0ª©¡A¦Ó¥BÁÙ¬O¦ñÀH¤@°ïBug¤W¥«ªº¡C³Ì«á¡A¦b´X­Ó¤ë«eBorland²×©ó
¨Ö§]¤F¦w«H¹F¡I

1.2¡@ª«¥ó¼Ò«¬(Object Model)

¡@¡@ª«¥ó¥²©w¨ã³Æ¨â­Ó°ò¥»ªººc­n¯À¡GÄÝ©Ê(attributes)¤Î¦æ¬°(behavior)¡A¤]
´N¬Oª«¥óªº¹B§@(operation)¡C¦AÁ|«e­±ªº¨Ò¤l¡A¦Û¦æ¨®Ãþ§O¤¤Ãö©ó¨®¨­§÷®Æµ¥
µ¥ÀRºAªº¸ê®Æ´N¬OÄݩʡA¦Ó¦Û¦æ¨®¥i¥H°µªº°Ê§@¡A¦p«e¶i¡B·Ù¨®µ¥µ¥³£ÄÝ©óÄÝ©Ê
¡C¤]´N¬O»¡¡AÃþ§O¤¤ÀRºAªº¸ê®Æ¦¨­û´N¬O¸ÓÃþ§OªºÄݩʡA¦Ó¸ÓÃþ§O°ÊºAªººtºâªk
´N¬O³o­ÓÃþ§Oªº¦æ¬°©Î¬O¹B§@(operation)¡C¨º¦ó¿×¹B§@¡A¦ó¿×¤èªk(Method)©O
¡H¨âªÌ¦³¤°»ò¤£¦P©O¡H«e¤@¸`´¿¸g´£¨ì¡u¾r¾p¡v³o­Ó©â¶H¤Æªº¤u§@¡A¡u¾r¾p¡v¦b
¦¹«K¬O­Óoperation¡A¦Ó¹ê»Úªº¡B¯u¥¿ªº¾r¾p«h¬OÄÝ©ó¦U§Oª«¥óªº¯S©w¤èªk
(method)¡C¨Ò¦p»¡¡A¶}Ã⨮ªº¤èªk©M¶}¤C¥|¤C´N¤£¤@¼Ë¡A¦ý¤@¼Ë³£³£³QºÙ¬°¬O¾r
¾p¡A¦ý³o¤£¬O±¾¦ÏÀY½æª¯¦×ªº¤Ä·í¡I

¡@¡@½Ð¬Ý©x¤j·Ýª`·N¡A¦bÁÙ¥¼¹ê§@¤§«e¡A©Ò¦³ªº·§©À³£¬O©â¶H¤Æªº¡A¦]¦¹¸£¤¤°£
¤F¦Ò¼{§Aªº°ÝÃD¥~¡A¤£¥²«æµÛ¥h·Q¦b¹q¸£¤W³]­pªº²Ó¸`¡A°£«D§A©Ò­n¸Ñ¨Mªº°ÝÃD
¥»¨­´N»P¹q¸£¦³Ãö¡C

1.2¡@ª«¥ó¤§¶¡ªºÃö«Y

1.2.1¡@Ãìµ²(Links)

¡@¡@°²©w§Ú­Ì²{¦b¦³¤G­Óª«¥ó®×¨Ò(instance)¡A¤@¦ì¬O±i¦Ñ®v¡A¤@¦ì¬O¤ý¦P¾Ç¡C
±i¦Ñ®v©M¤ý¦P¾Ç³o¨â­Óª«¥óªºÄݩʩM¦æ¬°§Ú­Ì¼È¥B¤£Ãö¤ß¡C±i¦Ñ®v»P¤ý¦P¾Ç¤§¶¡
¦s¦b¬YºØÃö«Y¡A¥Ñ°Ñ¦Ò¹Ï1.1¥i¥H¬Ý¥X±i¦Ñ®v¡u±Ð¾É¡v¤ý¦P¾Ç¡C¤Ï¹L¨Ó¬Ý¡A¤ý¦P
¾Ç«h¡u¨ü±Ð¡v©ó±i¦Ñ®v¡C³o¨â­Ó®×¨Ò¶¡ªºÃö«Y«K¬OÃìµ²¡C

1.2.2  ÃöÁp(Associations)

¡@¡@¦bLinkÃìµ²ªº³¡¤À¡A§Ú­Ìªº®×¨Ò(instance)¬O±i¦Ñ®v©M¤ý¦P¾Ç¡A¦ý¦Ñ®v¥i¯à
¬O»¯¿ú®]§õ¡A¦P¾Ç¤]¥i¯à¬O©P§d¾G¤ý¡C±N¨â­Ó®×¨Ò¤@¯ë¤Æ«á¡A§Ú­Ì±o¨ì¨â­Ó³æ¯Â
©â¶HªºÃþ§O¡F¦Ñ®vÃþ§O(class teacher)¤Î¦P¾ÇÃþ§O(class student)¡C¦U¦P¾Ç¦U
¦Ñ®v¤§¶¡Ãìµ²ªº¶°¦X«KºÙ¬°ÃöÁp(associations)¡C¤]´N¬O»¡¡AÃìµ²¬O¯u¹ê¥@¬É¤¤
ª«¥óªºÃö«Y¡A¦Ó¬O±NÃìµ²©â¶H¤Æ¡A¤@¯ë¤Æ«á§Ú­Ì«K¥i±o¨ìÃöÁp(association)¡C

¡@¡@ŪªÌ¦b¦¹À³¥ý«Ø¥ß¤@­Ó·§©À¡Aª«¥ó¾É¦Vªº¤ÀªR³W«h¬O¥Ñ¯S®í¨ì¤@¯ë¡A¥Ñ¹êÅé
¨ì©â¶H¡A´N¹³§Ú­Ì¥ý¥H±i¦Ñ®v©M¤ý¦P¾Ç¬°¬ã¨s¼Ë¥»¡A¦A±N¥L­ÌªºÃö«Y©â¶H¤Æ¡C©¹
«áÁÙ¦³§ó¦hªº¨Ò¤l¡C

¡@¡@¤@­Ó¦Ñ®v©Ò¬I±Ðªº¹ï¶H³q±`¦³³\¦h¦ì¾Ç¥Í¦Ó¤£¥u¬O¤@¦ì¡C¦¹®É¡A³o­Ó±Ð¾Éªº
Ãö«Y«K¦¨¤@¹ï¦h(one-to-many)ªºÃö«Y¡A¦p¹Ï1.2©Ò¥Ü¡C¦Ó­Y¤@­Ó¾Ç¥Í¥u¦V¤@¦ì¦Ñ
®v¨D±Ð¡A±Ð¾ÉÃö«Y«h¬°1¹ï1(one-to-one)¡F­Y¤@­Ó¾Ç¥Í¤£¶È¶È¥u¦³¤@¦ì¦Ñ®v¡A±Ð
¾ÉÃö«Y´N¦¨¤F¦h¹ï¤@¤F¡I½ÐŪªÌ¸ÕµÛ¬ÝÀ´§Ú­Ì©Ò¥Îªº¹Ï§Îªí¥Üªk¡A¨Ã¥B¤ñ¸û¨ä¶¡
ªº®t²§¡C¦b¯u¹ê¥@¬É¤¤¡AÃö«Y¬O¬Û·í¨ã¦h¼Ë©Êªº¡C¨Ò¦p»¡¥¦¥i¯à¬O­Ó¿ï¾Ü©ÊÃö«Y
(optional association)¡C¨Ò¦p¦b¤@¤Ò¤@©d¨î°ê®a¤¤¡A¤@­Ó¨k¤H¥i¥H¿ï¾Ü³æ¨­¡]
µL©d¡^©Î¦³°ß¤@ªº°t°¸¡A¦p¹Ï1.3©Ò¥Ü¡C¦ý¤¤°ê¥j®É­Ô¬O¦æ¤@¤Ò¦h©d¨îªº¡A½aº~
¤l¥i¯à¤@­Ó¦Ñ±C³£¨S¦³¡F¥«¤«¤p¥Á©Î³\¥u¾i±o°_¤@¤f¤l¡F¤Ñ¤l¤ý«J¥i¯à´NÂübµL
¼Æ¤F¡I³o´N¦p¹Ï1.4©Ò¥Ü¤F¡C¹Ï1.3¤¤ªºÃö«Y¬O1©ÎµL¡A¹Ï1.4¬OµL©Î³\¦h¡Cµ§ªÌ¦b
¦¹¯S§OÁn©ú§Úµ´¹ï¨S§Oªº·N«ä¡C

¡@¡@Ãö«Y(association)¤]¥i¥H¤£¥u­­©w©ó¤G¤¸Ãö«Y(binary  association)¡A¥¦
¥i¯à¬O¤T¤¸©Ê(ternary  association)©Î¦h¤¸©Êªº¡C¹Ï1.5 ªí¥Ü¦Ñ®v¡B¾Ç¥Í¤Î±Ð
«Çªº¤T¤¸Ãö«Y¡C

1.2.3  Ãìµ²ªºÄÝ©Ê(Link attributes)

¡@¡@«e­±©Ò´£¨ìªºÃìµ²³£ÆZ³æ¯Âªº¡A¦ý¯u¹ê±¡ªp¤¤¡AÃìµ²¥i¯à¦³±ø¥ó©Î½d³ò¤Wªº
­­¨î¡C¨Ò¦p¦b¤@­Ó¦h¨Ï¥ÎªÌ(multi-users)ªº§@·~¨t²Î(operating  system)¤¤¡A
¨C­Óuser¹ïÀɮתº¦s¨ú³£¦³¤£¦PªºÅv­­¡A³oÂI¦b93´Á«Ø«Cµ§ªÌ©å§@¡u¤Á¶}MS-DOS
¡v¤¤¦³¤¶²Ð¡A¦U¦ì¬Ý©x¥i½¾\°Ñ¦Ò¤@¤U¡C¨Ï¥ÎªÌ¨Ì¨ä¼h¯Å¤£¦P¡A¥i¥HŪ¼gÀɮסA
©Î¶È¯àŪÀÉ¡A¬Æ¦Ü³sªgÃ䪺¾÷·|³£½Í¤£¤W¡C³o»ò°µªº²z¥Ñ¬O¬°¤F«OÃÒÀɮתº¦w¥þ
©Ò³]ªº³W©w¡C¦¹®ÉUser³o­Óª«¥ó¦b¹ï©óÀɮת«¥óªº¦s¨úÃö«Y¤¤¡A«K¨ã¦³¦s¨úÅvªº
ÄݩʡC¦p¹Ï1.6©Ò¥Ü¡C

¡@¡@¤@­Ó¸û¯S®íªºÃì±µÄݩʺ٬°¸ê®æ(qualificiation)¡C¥i±N¨äµø¬°¬O¨ã¦³ÅÞ¿è
©ÊªºÄݩʡC¨Ò¦pÃö¥dªº³q¦æ³\¥i¡C¡u³q¦æ¡v¥u¦³­ã³\¤Î©Úµ´ªº§P©w¡A¤£¥i¯à¥u¤¹
³\«e¸}¶i¡A«á¸}¥X¡A¨­Åé¸ó¦bªù¤¤¶¡¡C¦]¦¹³oºØÃö«Y¬O¡u¸ê®æ¡vªº§P©w°ÝÃD¡C

1.2.4  ¶°¦X(aggregation)

¡@¡@¡u¶°¦X¡vªí©ú¤F¤@ºØª«¥ó²Õ¦¨ªºÃö«Y¡C¨Ò¦p¨T¨®ª«¥ó¬O¥Ñ½ü¤lª«¥ó¡B¤ÞÀºª«
¥ó¡B¾¦½ü½cª«¥ó¡A¨®´ßª«¥óµ¥µ¥ª«¥ó©Ò²Õ¦¨ªº¶°¦XÅé¡C¦pªG¢Ïª«¥ó¬O¢Ð¤¸¥óªº¤@
³¡¤À¡A¢Ðª«¥ó¬O¢Ñª«¥óªº¤@³¡¤À¡A«h¢Ðª«¥ó¥ç·|¬O¢Ñª«¥óªº¤@³¡¤À¡C«h¢Ïª«¥ó¬O
¢Ñª«¥óªº¤@³¡¤À¡C¢Ïª«¥ó¬O¢Ðª«¥óªº¤@³¡¤À¡C«h¢Ðª«¥ó¥²«D¢Ïª«¥ó¤§¤@³¡¤À¡I

¡@¡@³o­Ó·§©À¦bµøµ¡³]­p¤W¤]«Ü¦³¥Î¡I§A¥i¥H§Q¥Î«ö¶sª«¥ó©Mµøµ¡ª«¥ó²Õ¦X¦¨¤@
­Ó¹ï¸Ü²°ª«¥ó¡C¶°¦XÃö«Y(aggregation)«Ü®e©ö´N©M¿ò¶Ç©Î¨ä¥L¯S©Ê·d²V¤F¡AŪªÌ
©yª`·N¡C

1.2.5  ¿ò¶Ç(Inheritance)¤ÎÂk¯ÇÃö«Y(Generalization)

¡@¡@§Ú¬Û«H¥u­n¬O¹ïª«¥ó¾É¦Vµy¦³±µÄ²ªºªB¤Í³£¥²©w¹ï¡u¿ò¶Ç¡v(inheritance)
³o¦Wµü¤£­¯¥Í¡C¿ò¶Ç©MÂk¯ÇÃö«Y´£¨Ñ¤Fµ{¦¡½X­«½Æ¨Ï¥Îªº¥i¦æ¤è®×¡C¥Ñ¥Íª«¾Çªº
Æ[ÂI¨Ó¬Ý¿ò¶Ç¡G¤l¥Nªº¯S¼x³£¨Ó¦Û©ó¿Ë¥N¡C¥Ñ¹q¸£ªºÆ[ÂI¨Ó¬Ý¿ò¶Ç¡G¿ò¶Ç´N¬OÃþ
¦ü³nÅ餸¥ó¦@¥Î¡A¨Ã¥B¤À¨É¬Û¦Pªº¦æ¬°¥H¤Î¬Û¦üªº¯S©Ê©Î¹B§@¡C¤@­Ó³Q¿ò¶Çªº¤÷
¥NÃþ§O  ( parent class ) ³Q§Ú­ÌºÙ¬°¡u¶W¯ÅÃþ§O¡v(super class)¡C¦Ó¤l¥NÃþ
§O(child  class)³QºÙ¬°°ÆÃþ§O(subclass)¡C¤÷Ãþ§O©M¤lÃþ§O¤§¶¡«h¦s¦b¦³Âk¯Ç
Ãö«Y(Generalization)¡A¦Ó¦P®É¤]¬Oªí¥Ü¡¨is-a¡¨©Î¡¨a-kind-of¡¨ªºÃö«Y¡A³o
¥Nªí¤°»ò©O¡H¤lÃþ§Oªº®×¨Ò(instance)¦P®É¤]¥²¶·¬O¤÷Ãþ§Oªº®×¨Ò¡C³o¶µ¯S©Ê¤Q
¤Àªº¦X²z¡A°²©w¤lÃþ§O³Q­×§ïªº©M¤÷Ãþ§O¤£¦P¡A´d¼@±NµL¥iÁ×§Kªº²£¥Í¡G¾A¥Î©ó
¤÷Ãþ§Oªº¹B§@(operation)µLªk¥¿½Tªº¾A¥Î©ó¤lÃþ§O¤W¡A¦Ó³]­pªÌ¦b¤£ª¾±¡ªºª¬
ªp¤U¡A³nÅé¥i¯à·|·í±¼©Î¥¢»~¡C¦ý¤lÃþ§O¨Ã«D¤£¯à­×§ï¡C§A¥i¥H­×§ï(refine)¤Î
¼W¥[(append)¤@­Ó¤lÃþ§OªºÄÝ©Ê(attribute)¤Î¹B§@(operation)¤§¤º³¡¤èªk   (
method ) ¡A½ÐŪªÌ¦^¾Ð«e­±³¹¸`´¿»¡©ú¹L¹B§@©M¤èªkªº®t²§¡C¹B§@(operation)
¬O¤@­Ó°Ê§@ªº¡uñ¦W¡v(signature)¡A¤]´N¬O¬Y¤@°Ê§@ªº¦WºÙ¡C¦ýµ§ªÌ¦b¦¹©Ò»¡
ªº­×§ï¡A¬OÄÝ©ó¡u¾÷¯à©Ê¡vªº­×§ï¡A·N¿×¬°¤F¾AÀ³·sª«¥óªº¹B§@¤è¦¡¡A¦Ó¥²»Ý­×
§ï¨ä¤º³¡ªº¤èªk(method)¡A¥H²Å¦X·sªº­n¨D¡A¦ý¸Ó¤èªk³Ì«á©Ò­n¹F¦¨ªº¥ØªºÀ³¸Ó
©M¤èªk¬O¤@­Pªº¡A«D­«·s©w¸q¡C¨Ò¦p§Ú­Ì§â¡¨¡Ï¡¨©w¸q¬°¹Bºâ¤Wªº¥[ªk¡A¦Ó§A
«o­n©w¸q¬°´îªk¡A³o¤£¬O®¼¦MÀIªº¶Ü¡H¤£©¯¦a¡A¥Ø«eªºµ{¦¡»y¨¥¨Ã¤£·|¥D°Ê¦aĵ
§i³]­pªÌ³o­Ó¼ç¦bªº¦MÀI¡A¦Ó¦¨¬°¤@­Ó³nÅé³´¤«¡C

¡@¡@­è¤~§Ú­Ì´¿°Q½×¤F¤@­Ó­«ÂI¡G¬°¤F¾AÀ³·sª«¥óªº·s¯S©Ê¡A¦Ó¥²»Ý­×§ï¨ä¤º³¡
ªº¤èªk¡A¦ý¹B§@ªºÃ±¦W(signature)«o¥²»Ýºû«ù¬Û¦P¡A³oºØ¯SºÙ©Ê«K¬°¡u­â¶V¡v
(overriding)¡A¦ý©MC++¤¤ªº¡u¦h­«¸ü¤J¡v(overloading)¨Ã¤£¬Û¦P¡A½ÐŪªÌ¦Û¦æ
¤ñ¸û¡C

¡@¡@¦b¦¹Á|¤@­Ó½d¨Ò¡C¦b¤@­Ó´X¦óø¹Ïªºµ{¦¡¤¤¡A§Ú­Ì¹Á¸Õ´£¨ÑÂI¡B½u¡B©·½u¡B
¦hÃä§Î¡B¶ê§ÎªºÃ¸¹Ï¤¸¥ó¡C¦b¦¹½d¨Ò¤¤¡Aµ§ªÌ±N¥Hª«¥ó¤ÀªR(OOA)¤¤Ãö©óª«¥ó¼Ò
«¬ªº¤èªk¨Ó¤ÀªR³o­Ó¨Ò¤l¡C

¡@¡@§Ú­Ì¥ý¸ÕµÛ´y­z³o­Óø¹Ï¨t²Îªº¦UºØ¹Ï§Î¤¸¥ó¡]¥ý¤ÀªR®×¨Ò¡^¡C¦]¬°¥Î¤å¦r
»¡©ú¦û¥h½g´TÁc¯E¡A¬G§â¦Uª«§@Ãþ§Oªº¯S©Ê¦C©ó¹Ï¤¤¡C¨M©w¦UÃþ§O«á¡A±oµø±¡ªp
±NÃþ§O¦h¾lªº¡AµL®ÄªºÄݩʩιB§@­ç°£¡A¨Ã¥B±N¤@¨Ç¥i¥H°µ¦¨ª«¥óªº¯S¼x¿W¥ß¦¨
¬°ª«¥ó¡]¤£¹L¦b½d¨Ò¤¤¦ü¥G¨S¦³¡^¡C¤U¤@¨B¬OŲ§Oª«¥ó»Pª«¥óªºÃö«Y(link)¡A³æ
´N³o¨Çª«¥ó¨Ó¬Ý¤]¯Ê¥FÃöÁp¡C±µ¤U¨Ó¡AÆ[¹î³o¨Çª«¥ó¬O§_¥Î¤F¤@¨Ç¦@¦Pªº¯S¼x¡]
ÄݩʤΦ欰¡^¡A±N¦@¥Îªº¯S¼xµÑ¨ú¥X¨Ó¡A§Î¦¨¤÷Ãþ§O¡C¦b½d¨Ò¤¤¡A§Ú­Ì¥i¥H¥ý±N
ª«¥ó¤À¦¨¤TÃþ¡A¤À§O¬O¹sºû¡B¤@ºû¤Î¤Gºû¹Ï§Î(¥Îgeneralization)¡A¦Ó¥B¤@ºû¤Î
¤Gºû¹Ï§Î¥i¥H«ö¤ñ¨Ò(scale)¦ùÁY¡A¦ý¤Tºû¹Ï§Î¤¤¶¡ªÅ¥Õ³¡¤À«h¥i¥H¶ñ¦â(fill)
ÁÙ¥i¥H§âÃC¦â¡B¦ì¸m¡B²¾°Ê¡D¡D¡D¡Dµ¥µ¥¯S¼xÂk¯Ç¦¨¤@­Ó³Ì²×ªº¤÷Ãþ§O¡A¤]´N¬O
¹Ï§Î(figure)Ãþ§O¡C¦p¦¹§Ú­Ì¤S±o¨ì¤@±i·sªº°Ñ¦Ò¹Ï1.7¡C¦P®É¡A¦b¦¹¤]¥i¥H¦Ò
¼{¤Þ¥Îªºª«¥ó¡C

¡@¡@¦b¹Ï¤¤¡A§Ú­Ìµo²{ª«¥óÅã¥Ü(display)ªº¥\¯à³Q­â¶V(overriding)¤F¡I¬°¤°
»ò©O¡H¦]¬°µeªk¤£¦P°Ú¡I¦ý¹Ï§Î(figure)¨º­ÓÃþ§O­n·FÔ£©O¡H¤@ÂI¥Î¤]¨S¦³¡I¦ý
¥L¥i¥Hªí¥Ü¦Usubclassªº¦@¦P¯S©Ê¡C¥ô¦óÃþ§O¥u­n¦³¤@­Ó¹B§@¬O©â¶Hªº
(abstract)¡A³o­ÓÃþ§O´N¬O¤@­Ó©â¶HÃþ§O(abstract class)¡C©â¶HÃþ§O¤£¯à²£¥Í
®×¨Ò(instance)¡A¦ý«o¥i¨Ñ¬°¿ò¶Çªº¤÷Ãþ§O¡C¬Û¹ï©ó©â¶HÃþ§Oªº¬O¹êÅéÃþ§O¡A¹ê
ÅéÃþ§O¥i¥H­l¥Í¤l¥N¡A¤]¥i¥H²£¥Í®×¨Ò(instance)¡C

¡@¡@¥t¤@­Óª§Ä³¬OÀ³¸Ó¿ò¶Ç´X¥N¡C¿ò¶Ç¤Ó¦h¥N¥i¯à·|¨Ï¤l¥N¤£¦nÀ´¡C¤Ó¤Ö¹À¡A¤£
¤Ó¦X¥G¸gÀٮįq¡A¤G¡B¤T¼h«Ü¦n¡A¤»¡B¤C¼h«j±j±µ¨ü¡B¤Q´X¼h®£©È¥O¤H©Q¦Þ¤F¡C
¬°¤°»ò©O¡H¬O³o¼Ëªº¡A²z½×¤WÃþ§OÀ³¸Ó¥i¥H³QµL½aªº¿ò¶Ç¡A²£¥Í·sªºÃþ§O¡A¦ý¬O
±`±`µo¥Í¦b¿ò¶Ç¼Æ¥N«áªº¤lÃþ§Oªº¯S©Ê³ºµM¡uÅܽè¡v¤F¡I¤÷¥NÃþ§OªºÂÂÄݩʩάO
¹B§@ÅܱoÅo­ö¦h¾l¤F¡A¦pªG§AÄ~Äò¤Þ¥Î¿ò¶Ç¡A¨º¥i¯à·|Åܱo¨S¦³®Ä²v¡A¦]¦¹¡A
µ§ªÌ»{¬°ª«¥ó­«½Æ¿ò¶Çªº¦¸¼ÆÀ³¸Ó·|¦³¤@­Ó¦ÛµM¤W­­¡A¦ý³o­Ó¤W­­¬O´X¼h©O¡H³o
´N©M§A©Ò³]­pªºª«¥ó¦nÃa¦³Ãö¤F¡C

1.2.6  ¦h­«Ä~©Ó(Multiple Inheritance)

¡@¡@«e­±©Ò´£¨ìªº³£¬O³æ·½Ä~©Ó(single inheritance)¡A¤Q¤À³æ¯Â¡A¬Û¸û¤§¤U¡A
¦h­«Ä~©Ó¤¹³\¤@­Óª«¥ó¦P®ÉÄ~©Ó³\¦h¤£¦Pª«¥óªº¯S©Ê¡A³oºØ¤è¦¡§ó±µªñ¤HÃþ«ä¦Ò
ªº¤èªk¡A¤£¹L¬Û¹ï¤]²£¥Í¤£¤Ö°ÝÃD¡C©Ò¿×¦h­«Ä~©Ó§Y¬O¤@­Ó¤lª«¥ó¥i¦P®ÉÄ~©Ó³\
¦h¤÷Ãþ§O¡A³q±`§Ú­Ì¥s³oºØ¤lÃþ§O¬°¡uÁp¦XÃþ§O¡v(join class)¡C

¡@¡@¦h­«Ä~©Ó³Ì±`¤Þµoªº³Â·Ð«K¬O¡u¼Ò¸W¨â¥i¡v(ambiguity) ªº¯Éª§¡C³o»F¦]©ó
¤÷Ãþ§O¤¤ªºÄݩʩιB§@¥i¯à¨ã¦³Ãþ¦üªºÃ±¦W¡C³oºØ±¡ªpµLªk¥Hµ{¦¡»y¨¥ªº¯S©ÊÁ×
§K¡]ÁöµM¬Y¨Çµ{¦¡»y¨¥¥i¥H³]©wÄ~©ÓªºÀu¥ý¶¶§Ç¡^¡Aµ{¦¡³]­p®vÀ³¸Ó­nºÉ¤OÁ×§K
¼Ò¸W¨â¥iªº°ÝÃD¡C¥t¥~­È±oª`·Nªº¤@ÂI¬O¬Y¨Ç¸ûªºª«¥ó¾É¦Vµ{¦¡»y¨¥(OOPL)¨Ã
¤£¨ã³Æ¦h­«Ä~©Óªº¯S©Ê¡A¨Ò¦p¡GSmalltalk-80¡AC++ 1.2¡AObjective-C¡C

1.3 ¶°¦X»P¨ä¥¦Ãö«Yªº¤ñ¸û

¡@¡@ª«¥ó»Pª«¥ó¤§¶¡ªºÃö«Y¬O·¥¥O¤H·P¿³½ìªº¡A¤@­Óµ{¦¡¤£¤Ó¥i¯à¶È¥Ñ¤@¨Ç²³æ
ªºª«¥ó¬[ºc¦Ó¦¨¡C«e­±µ§ªÌ´¿»¡¹L¶°¦X(aggregation)«Ü®e©ö©M¨ä¥LºØÃþªºÃö«Y
·d²V¡A¦b³o¸`¤¤¡A§Ú­Ì±N°Q½×¥¦­Ì¦³Ô£®t²§¡CŪªÌ¦b©¹¤U¬Ý¤§«e¡A¤£§«¦Û¤v¥ý¤ñ
¸û¤@¤U¡A¬Ý¬Ý¦Û¤v¬O§_¤]·d²V¤F¡C

1.3.1  ¶°¦X©MÃö«Y(association)ªº¤ñ¸û

¡@¡@¶°¦X¬OÃö«Y(association)¤@ºØ¯S¨Ò¡A¦ý¶°¦XÃö«Y«o¯S§O«ü¥X¬Y­Ó¯S©wª«¥ó
¬O¥Ñ¨º¨Çª«¥ó²Õ¦¨ªº¡C´N¦n¤ñ¤@³¡¾÷¾¹»P²Õ¦¨¥¦ªºÁ³µ·°v¤§¶¡ªºÃö«Y¡C¥D­nªº§P
©w¤è¦¡¬O¡G¦pªG¤@­Óª«¥ó¬O¥t¤@­Óª«¥óªº²Õ¦¨¤¸¯À¡A¨º»ò«K¦s¦b¡u¶°¦X¡vªºÃö«Y
¤F¡C

1.3.2  ¶°¦X©M¿ò¶Ç(Inheritance)ªº¤ñ¸û

¡@¡@¶°¦X©M¿ò¶Ç¨Ã¤£¤@¼Ë¡C¿ò¶ÇÃö«Y³q±`³QºÙ¬°¡¨is-a¡¨©Î¡¨is-kind-of¡¨¡]¬O
¤@­Ó¡A¬O¤@ºØ¡^¡A²z¥Ñ«e­±¤w¸gÁ¿¹L¤F¡A¦Ó¶°¦X«h³Q¥s°µ¡¨a-part-of¡¨¡]¤@³¡
¤À¡^¡C

¡@¡@¤£¹L¡A¦³®É§Ú­Ì³Ì¦n¿ï¾Ü¶°¦XÃö«Y¨Ó´À¥N¿ò¶Çªº¹B¥Î¡C¥ýÁ|¤@¨Ò¡C¦ê¦Cµ²ºc
(list)¬O¸ê®Æµ²ºc¤¤¤@ºØÀx¦s¸ê®Æªº°ò¥»¤èªk¡A¦Ó°ïÅ|(stack)¬O¤@ºØ FILO (
first in ¡Alast out ) ¥ý¶i«á¥Xªºµ²ºc¡AÃö©ó³o¤è­±½ÐŪªÌ¦Û¦æ°Ñ¦Ò»P¸ê®Æµ²
ºc¦³Ãöªº®ÑÄy¡C¦ê¦C¦³¨Ç°ò¥»ªº¹B§@¤èªk¡A¨Ò¦p»¡¡G¼W¥[¸`ÂI¡A§R°£¸`ÂIµ¥µ¥¡C
²{¦b§Ú­Ì­n¹ê§@°ïÅ|¡A¦Ó°ïÅ|¦³¦Û¤v±©¤@ªº¦s¨ú¤èªk¤]´N¬O¥¦ªº¹B§@¢w¢w±À¤J
(push)©M¼u¥X(pop)¡C§Ú­Ì¥i¥H±Ä¨ú¨â®Mµ¦²¤¨ÓÀò±o¡u°ïÅ|¡vÃþ§O¡C²Ä¤@¡G¥Ñ¦ê
¦C¿ò¶Ç¥X·sªº¡u°ïÅ|¡vÃþ§O¡A¦ýª`·N¡I¨º¨Ç§R°£¸`ÂI¤§Ãþªº¹B§@(operation)¤]
·|³Q¿ò¶Ç¤U¨Ó¡AµM¦Ó¹ï°ïÅ|¨Ó»¡¡A¤£¦ý¤£»Ý­n³o¨Ç¦h¾lªº¹B§@¡A¤]¤£¯à­n¡A¦]¬°
¥i¯à·N¥~¦a§R°£¸`ÂI¡C¦]¦¹«ØÄ³±Ä²Ä¤GºØµ¦²¤¡G§â¦ê¦C©M°ïÅ|¥H¶°¦X
(aggregation)³s°_¨Ó¡A´N¬O»¡§â¦ê¦CÅܦ¨°ïÅ|ªº¤@³¡¤À¡C¦p¹Ï1.8©Ò¥Ü¡C

¡@¡@Ãö©óª«¥ó¼Ò«¬(object model)ªº³¡¤À´N¤¶²Ð¨ì¦¹¡A¥Ñ©óª«¥ó¼Ò«¬¬O³Ì°ò¥»¦Ó
­«­nªº¤@³¡¤À¡AŪªÌ©y¦h¯d¤ß¡C

²Ä¤G³¹¡@°ÊºA¼Ò«¬ (Dynamic Model)

2.1  ·§»¡

¡@¡@¤W¤@³¹©Ò°Q½×ªºª«¥ó¼Ò«¬¡A¬OÄݩ󪫥ó¾É¦V¤¤ÀRºAªº³¡¤À¡C¦Ó³o³¹«h­n¥J²Ó
¦a±´°Qª«¥óªº¦æ¬°¡A¤Îª«¥ó¤§¶¡ªº¥æ¤¬§@¥Î¡C

2.2  ¨Æ¥ó(events)©Mª¬ºA(states)

¡@¡@·§¬Aªº»¡¡Aª«¥ó¤¤ªºÄݩʤÎÃìµ²(link)¡A³£ÄÝ©ó¸Óª«¥óªºª¬ºA(state)¡C¦Ó
¤@ª«¥ó¤§ª¬ºA«h·|¦]¨Æ¥ó(events)ªº¼vÅT¦Ó§ïÅÜ¡C¦b¤U­±ªº°Q½×¤¤¡AŪªÌ·|µo²{
§Ú­Ì¸û°¾­«©ó§Y®É(real-time)µ{¦¡ªº³]­p¡A¨Æ¹ê¤W¥ç¬O¦p¦¹¡C

¡@¡@¨Æ¥ó¬O«üµo¥Í¦b¬Y®É¨èªº¬Y¨Æ¡A¦Ó¥B²z½×¤W¥¦¨Ã¤£·|«ùÄò¤@¬q®É¶¡¡C¨Ò¦p¹q
¸Ü¹aÅT´N¬O¤@ºØ¨Æ¥ó¡C¨Æ¥ó³q±`¥Ñ¤@­Óª«¥óµo¥X¡A¦Ó³Q¥t¤@­Óª«¥ó±µ¨ü¡C¦Ó¥B¨Æ
¥ó¥u¬O³æ¦V©Êªº°T®§¶Ç»¼¡A¦Ó¤£¹³¨ç¼Æ·|±a¦³¶Ç¦^­È¡C¨Æ¥ó¤]¬O¤@ºØ¯S®íªºÃþ§O
¡A¥L¥i¥H¨ã³Æ¦³ÄݩʡC¨Ò¦p»¡¡G¼·¹q¸Ü¸¹½X(dial)³o­Ó°Ê§@¤]Áô§tµÛ¼·¬Y­Ó¸¹½X
¡A¨Ò¦p»¡¡G¼·¡¨5¡¨¡B¼·¡¨1¡¨µ¥µ¥¡C¦P²z¡A¡u¿ù»~¡v¤]¥i¥H³Q³]­p¦¨¨Æ¥ó¡A¦Ó¥B
¦ñÀH¦³¿ù»~¥N½X¡C

¡@¡@ª¬ºA(states)¬Oª«¥óÄݩʩÎÃìµ²ªº©â¶HÅé¡Cª¬ºA¬O³Q°Êªº¦Ó¥B¥u¦b¦¹¨Æ¥óµo
¥Í«á¤~§ïÅÜ¡A¦]¦¹§Ú­Ì¥iµø¬°¨â¨Æ¥óµo¥Í¶¡ªº®É¶¡¬°¦¹ª«¥óªºª¬ºA¡A¤]´N¬O»¡¡A
¬Y­Óª¬ºA±N·|«ùÄò¤@¬q®É¶¡¡Aª½¨ì¤U­Ó¨Æ¥óµo¥Í¬°¤î¡C

¡@¡@¬°¤Fªí¥Ü¥X¤@³s¦êªº¨Æ¥ó¤Î¥L­Ìµo¥Íªº¶¶§Ç¡A§Ú­Ì±o½s¤@®M¨Æ¥óªº¡u¼@¥»¡v
(scenario)¡C³o­Ó¼@¥»¤Q¤À­«­n¡A¦³¼@¥»¤~¯àÅý¼Ò«¬¡¨¬¡°_¨Ó¡¨¡C¼@¥»ªº²£¥Í³q
±`¬O¥H¥­±`¥i¯àµo¥Íªº±¡ªp¬°¥DÅé¡A¦A¥[¤J¨Ò¥~¡CµM¦Ó¡A¼@¥»¤]¦³¥i¯à¤£¬Æ¸ÔºÉ
¡A¦ý¬O¥i¥H§ï¡I

¡@¡@¼@¥»·Ç³Æ¦n¤F¤§«á¡A¥i¥H§@¨Æ¥ó°lÂÜ(event  trace)ªº¼ÒÀÀ¡C¨Æ¥ó°lÂÜ¥i¥H
©ú½Tªº¬Ý¥X¨Ó½Ö²£¥Í¤F¨Æ¥ó¡A½Ö±µ¦¬¤F¨Æ¥ó¡A¦ó®É²£¥Í¨Æ¥ó¡A¨º­Ó¨Æ¥ó¥ýµo¥Í¡K
¡Kµ¥µ¥¡C±µµÛ¦A§@¤@¥÷¨Æ¥ó¬yµ{¹Ï(event flow diagram)¡AÅã¥Ü­þ­Óª«¥ó¸Ó²£¥Í
¨º¨Ç¨Æ¥ó¡A¸Ó±µ¦¬­þ¨Ç¨Æ¥óµ¥µ¥¡C

¡@¡@ª¬ºA¹Ï(state  diagram)«h«Ü²M·¡ªºªí¥Ü¤F¨Æ¥óªº¬yµ{¤Î¹ïª¬ºAªº¼vÅT¡A¥H
¤U±N±Ð±z¦p¦óµe¹Ï¡C¦bª¬ºA¹Ï¤¤¡A¥Î¸`ÂI(¤@­Ó¾ò¶ê§Î)ªí¥Ü¦¹ª«¥óªºª¬ºA
(state)¡A¦Ó½bÀY®Ç«h¼Ð©ú¤F¨Æ¥ó¦WºÙ¡A¦b¨Æ¥óªº¬yµ{¹Ï¤W¥i¥[¥H¼Ð¥Ü¡u§PÂ_¡v
¥¬ªL­È¥H¨M©w¨Æ¥óªº¬y¦V¡A¦b«á­±¦³±i¬õºñ¿Oªºª¬ºA¹Ï¡A¦b¦¹§ã­nªº¥[¥H»¡©ú¡C
³o­Ó¸¹»x¨t²Î¬O­Óªø¡u²´·ú¡vªº¬õºñ¿O¡AÂǥѰ»´ú¦b¥ªÅs¨®±M¥Î¹D¤W¬O§_¦³¨®¡A
¨Ó¨M©w¬O§_­nÅýª½¦æ¨®¥ý¦æ©Î¯d¤@¬q®É¶¡µ¹ÂàÅs¨®¨«¡C§A¥i¥H¬Ý±o¥X¨Ó¡A¨Ò¦p»¡
«n¥_¦V­nÅs¬õ¿O®É¡A·|¥ý§PÂ_­n¤£­n¥ý«GÂàÅs¿O¡A¦pªG¤£­n¡A´Nª½±µ¸õ¨ìªF¦è«G
½u¿Oªºª¬ºA¥h¡C¦b¦¹¡A¨º­Ó§PÂ_­È«K¼Ð©ú¦b¨Æ¥óªº½bÀY¤W¡A¨ä¾l¨Ì¦¹Ãþ±À¡C

2.3  °Ê§@(Action)»P¬¡°Ê(Activity)

¡@¡@¥ú¦b¹Ï¤W¼Ð¥X¨Æ¥ó¡Bª¬ºA¤Î§P©w­ÈÁÙ¤£¤Ó°÷¡A³q±`¦ñÀH¨Æ¥ó¤§«áÀ³¸Ó·|¦³¤@
¶µ¹ïÀ³ªº°Ê§@  ( Action ) ¡A¥¦¦b¹Ï¤¤ªºªí¥Üªk¬O¦b¨Æ¥ó±Ô­z«á¥[±×½u¡¨/¡¨°Ï
¹j¡C¨Æ¥óªºµo¥Í¥u¬O§iª¾©Î½T»{ª¬ºAªº§ïÅÜ¡A¦Ü©ó¦p¦óÂàÅܪ¬ºA«h©M¨Æ¥óµLÃö¡A
¥²¶·¾a¤º³¡ªº¬¡°Ê ( activity ) ¨Ó§ïÅܪ¬ºA¡C¦Ó³o¬¡°Ê¥i¯à¥]¬A¤@³s¦êªº¹B§@
(  operation  )  ¡C¬¡°Ê  (  activity  ) ¦b¹Ï¤¤ªºªí¥Ü¤èªk¬O¦b¸`ÂI¤¤¼g­Ó
do:activity  name¡CŪªÌ©Î³\·P¨ìµ§ªÌ¤@ª½¦b±j½Õª¬ºA¹Ï(state diagram)ªºµe
ªk¡C¦]¬°ºc¹Ïªí¥Ü¤@­Óµ{¦¡¤Q¤Àªº­«­n¡C«e¤@³¹ª«¥ó¼Ò«¬¦³¹Ï¡A³o³¹ª¬ºA¼Ò«¬¤]
¦³¹Ï¡A¤U¤@³¹¥\¯à¼Ò«¬ÁÙ¦³¢Ò¢Ô¢Ò¹Ï¡C¥Ñ¦¹¥iª¾¹Ïªíªº­«­n©Ê¡IŪªÌÀ³¸Ó¦n¦nªº
´¢¼¯¹Ï§Îªºµeªk¡C

²Ä¤T³¹¡@¥\¯à¼Ò«¬(Functional Model)

¡@¡@¥\¯à¼Ò«¬  ( Functional Model )¬OOMT ¤TºØ°ò¥»¼Ò«¬¤¤©µ¥Î¡u¶Ç²Î¡vªº¤@
³¡¤À¡C¥\¯à¼Ò«¬¥Î¥H´y­z¨t²Î¤¤¸ê®Æªº¬yµ{¡A¸ê®Æ³Q­þ¨Ç³æ¤¸±µ¨ü³B²z¸g¥Ñ­þ¨Ç
¹Lµ{¡A¦ý«o¤£²`¨s¸ê®Æ¯u¥¿¬O«ç»ò³Q­pºâªº¡C¥\¯à¼Ò«¬¦³®Äªº¹B¥Î¦b½s;¹   (
compilers ) ¤§Ãþ¯Âºé³B²z¸ê®Æªº¤u§@¡A¦Ó³o¨Ç¤u§@©Ò³B²zªº¸ê®Æ¤£©ö©ó³Q³]­p
¦¨ª«¥ó¡C¤£¹L¦b¶Ç²Îªº³]­p»â°ì¤¤¡A°£¥hª«¥ó¼Ò«¬¡Aµ{¦¡¤@¼Ë¥i¥H¼g¡A¥u¤£¹L¦b
³o¸Ì¥Hª«¥ó¤ÀªR¬°­º­nÆ[ÂI¡A¥\¯à¼Ò²Õ¥u±o©}¨­¡C»P¨ä¥¦¨âºØ¼Ò«¬¨Ã¦C¤F¡C

3.1  ¢Ò¢Ô¢Ò¸ê®Æ¬yµ{¹Ï

¡@¡@¸ê®Æ¬yµ{¹ÏªºÃ¸»s¬O¥\¯à¼Ò«¬ªí¥Ü¤èªkªº®Ö¤ß¡C¢Ò¢Ô¢Ò¹Ïªºµeªk¸û«e¨â³¹¹Ï
§Îªºµeªk³£¨Ó±o²³æ¡A¥H¤U´N¦U¹Ï§Î¤¸¥ó¨Ó¤¶²Ð¡C

3.1.1  ³B²z³æ¤¸(process)

¡@¡@§Ú­Ì¥H¤@­Ó¾ò¶ê§Îªº¸`ÂI¨Óªí¥Ü¤@­Ó¡u³B²z¡v¡C¡u³B²z¡v(process)¥Î¥H±µ
¨ü¿é¤J¸ê®Æ¡A¸g¹L¤@¯S©w¤u§@¤èªk¡A±N¿é¤Jªº¸ê®ÆÂà´«­pºâ«á¿é¥X¡C

3.1.2  ¸ê®Æ¬y(Data Flow)

¡@¡@¸ê®Æ¬yªí¥Ü¥X³B²z»P³B²z¤§¶¡©Ò¶Ç»¼ªº¸ê®Æ¡A¦b¦¹§Ú­Ì¥H½bÀY²Å¸¹³s±µ¡C¦b
¬Y¨Ç¨Ò¤l¤¤¡A¤@¹D¸ê®Æ¬y¡]§Úªº·N«ä¬O¶È¥H¤@­Ó½bÀY²Å¸¹¨Óªí¥Ü¤@¹D¸ê®Æ¬y¡^¥i
¯à¥]§t³\¦h¸ê®Æ¡A¦Ó§Ú­Ì©Î³\»Ý­n¤À¸Ñ¨ä¤¤¦U§Oªº¸ê®Æ¬y¡A¦¹®É¥i¥H±N¥¦¤À¬y¦¨
§ó²Óªº¸ê®Æ¬y¡A¬y¤J¥Øªº¡u³B²z¡v³æ¤¸¡C

3.1.3  ±±¨î¬y(control flow)

¡@¡@¸ê®Æ¬y(Data  flow)¥u¬O³æ¯Âªº¶Ç»¼¸ê®Æ¡A¦Ó¤£¶Ç°e±±¨î°T®§¡CµM¦Ó¬Y¨Ç³B
²z(process)·|»Ý­n±±¨îºX¼Ð¨Ó¨M©w¥¦¸ê®Æ³B²zªº¤è¦¡¡A¸Ñ¨Mªº¤è¦¡¨Ã¤£¬O¸g¥Ñ
¸ê®Æ¬y¶Ç¤@­Ó­Èµ¹³B²z,¦b¦¹§Ú­Ì§Ú­Ì¥t¥H±±¨î¬y¨Ó¸Ñ¨M³o­Ó°ÝÃD¡C±±¨îªº©Ê½è
¬O¥¬ªL(boolean)¥N¼Æ­È¡A¥u¦³¯u°°¨âºØ±¡ªp¡C°ò¥»¤W±±¨î¬yÀ³¸ÓÄÝ©ó°ÊºA¼Ò«¬
(dynamic  model)¤¤ªº¡¨¨Æ¥ó¡¨¡A¦ý¦]¬°©M¸ê®Æ³B²z¦³±K¤£¥i¤ÀªºÃö«Y¡A©ó¬O«K
³Q¥]¬A¶i¨Ó¤F¡C±±¨î¬yªºµeªk¬O¥HÂIµê½u½bÀYªí¥Ü¨Æ¥ó°T®§¡C

3.1.4  ¸ê®ÆÀx¦s(data storage)³æ¤¸

¡@¡@¸ê®ÆÀx¦s³æ¤¸³Qµø¬°DFD¹Ï¤¤¤@­Ó±Mªù¥Î¥HÀx¦s¸ê®Æªº³Q°Êª«¥ó¡C¸ê®ÆÀx¦s
³æ¤¸ªºµeªk¬O¥H¤Gºb¾î½uªí¥Ü¥¦¡C

3.1.5  ¦æ¨ÆªÌ(Actor)

¡@¡@Actor³Q¥Î¨Ó¼Ð¥Ü¸ê®Æ¬yªººÝÂI¡A¥i¯à¬O°_ÂI¡A¤]¥i¯à¬O²×ÂI¡Cµeªk¬O¥H¤p
¤T¨¤§Î¨Óªí¥Ü¡CActor©M¸ê®ÆÀx¦s³æ¤¸¦³´X¤ÀÃþ¦ü¡C¦ý¸ê®ÆÀx¦s³æ¤¸¬O³Q°Êªº¡A
¦Ó¤£·|°õ¦æ¥ô¦ó°Ê§@¡A¦ýActor«o¨Ì¸ê®Æªº«ü¥Ü§@¤@¨Ç°Ê§@¡A¨Ò¦p²£¥Í¸ê®Æ©Î²×
µ²¸ê®Æªº³B²z¡A¦]¦¹¦³®É¤]³QºÙ¬°¡u²×µ²ªÌ¡v(terminator)¡C

3.1.6  ¥~¬É­ÓÅé

¡@¡@§Ú­Ì¥Î¤@­Ó¯x§Î¨Ó¥Nªí¥~¬É­ÓÅé¡C¥~¬É­ÓÅé¬O¤°»ò·N«ä©O¡H¦]¬°¦b¢Ò¢Ô¢Ò¹Ï
¤¤Á`·|¦³¸ê®Æ¬O¥Ñ¥~¬É¿é¤J¶i¨Ó¡A¤]·|¦³¸ê®Æ¶Ç°eµ¹¥~¬É¡C¦]¦¹¥H¥~¬É­ÓÅé¨Óªí
¥Ü¨t²Î¿é¤Jªº°_ÂI¤Î¿é¥X²×ÂI¡C

3.2  ª«¥ó¡B°ÊºA¼Ò«¬»P¥\¯à¼Ò«¬ªºÃö«Y

¡@¡@¥\¯à¼Ò«¬´y­z¤F¤@­Ó³nÅé¼Ò«¬¯u¹ê¦a¥h§@¤F­þ¨Ç¨Æ¡A¢Ò¢Ô¢Ò¹Ï¤¤ªº¡u³B²z¡v
(Process)³æ¤¸¥i¥H¹ï¬M¨ìª«¥ó¼Ò«¬¤¤ªº¹B§@(operation)¡A¦Ó¸ê®Æ¬y«h¬Oª«¥ó¤º
ªºÄݩʡC±±¨î¬y(control flow)«e­±¤]»¡¹L¬O¨Ó¦Û©ó°ÊºA¼Ò«¬¡C¾ãÅ骺¨Ó»¡¡A¤T
ºØ¼Ò«¬¨Ã¤£¬O¿W¥ß¦s¦bªº¡A¦Ó¬O¤¬¸Éªº¡A¥u¬O»¡¥¦­Ì¦U¦Û¥H¤£¦Pªº¨¤«×¨Ó¤ÀªR³n
Åé¡C¥\¯à¼Ò«¬¤¤¸ê®Æªº¬yµ{¤Î³B²zªº¬yµ{¹Ï¨Ã¤£¯àªí¥Ü¥X³B²z°õ¦æªº¶¶§Ç¡A³oÂI
¥²»Ý¾a°ÊºA¼Ò«¬¨Ó¸É¨¬¡]ÁÙ°O±o­ì¦]¶Ü¡H¡^¡C¦Ó³B²z»P³B²z¶¡ªº¬yµ{Ãö«Y¤Î¹ï©ó
ª«¥ó¹B§@(operation)ªº¥D«ÈÃö«Y¡C³o¸Ì¥D«ÈÃö«Yªº·N«ä¬O¡G¹B§@(operation)¤§
¶¡ªº¼h¦¸Ãö«Y¡A¥D¼Ò²Õ±N¥¦ªº¥ô°È¤Á³Î¥æ¥Ñ©³¤Uªº¤l¼Ò²Õ³B²z¡Cª«¥ó¼Ò«¬¤ºªºÄÝ
©Ê¡A¤]´N¬Oª¬ºAªº§ïÅÜ¡A¥H¤Î¹B§@¬O¦p¦ó³Q¤Þµo¡A«ç»ò­Ó°õ¦æªk¡A³£¥Ñ°ÊºA¼Ò«¬
¨Óªí¹F¡C¦]¦¹³£©ó©Ò¦³ªº³nÅé¨Ó»¡¡A¤TºØ¼Ò«¬³£¬O°ò¥»¦Ó¥B¥²­nªº¡A¥u¤£¹L¬O­«
­nµ{«×¤£¦P¦Ó¤w¡Cµy«á§Ú­Ì©Ò°Q½×ªºª«¥óµo®i¬yµ{¤]¬O·ÓµÛ³o¤TºØ¼Ò«¬¨Óµo®i¡C

²Ä¥|³¹  ¤ÀªR (Analysis)

4.1 OMTªº³]­p¬yµ{

¡@¡@OMT¤èªk¨ä¹ê´N¬O¤@ºØ³nÅé¤uµ{µo®iªk¡C¦b¦¹Åé¨t¤¤§Ú­Ì±Ä¨ú¤U¦C¨BÆJ¨Ó³]
­p³nÅé¡G

üæ¤ÀªR(analysis)

¡@¡@¤ÀªR¤u§@¥Ñ¤F¸Ñ°ÝÃD©w¸q¶}©l¡A³v¦¸«Ø¥ßª«¥ó¡B°ÊºA¡B¤Î¥\¯à¼Ò«¬¨Ó´y­z³n
    Åé©w¸q°ì(software domain)¡A³o¥ó¤u§@©M¯u¹ê¥@¬É¦³·¥¤jªºÃöÁp¡C

üç¨t²Î³]­p(System Design)

¡@¡@¥Hª«¥ó¼Ò«¬(Object Model)¬°°ò¦¡A¶}©l«Ø¥ß¨t²Îªº¬[ºc¡A©w¸q°ÊºA¼Ò«¬ªº
    ¼@¥»¡A±N¤ÀªR¯u¹ê¥@¬Éªºµ²ªGÂà´«¦¨¹q¸£¥@¬É¤¤«¬ºA¡C

ü誫¥ó³]­p(Object Design)

¡@¡@¦pªG»¡¨t²Î³]­p¬O©Ó¥ý±Ò«áªºªº¤u§@¡A¨º»òª«¥ó³]­p´N¬O¶°¨ä¤j¦¨¤F¡C¦b¥»
    ¨BÆJ¤¤¡A¤TºØ¼Ò«¬³Q§Ú­Ì¥J²Óªº­×§ï¡A²Ó³¡¤Æ¡A¨ãÅ餯¡A¥H¦Ü©ó³Ì¨Î¤Æ¡A±N
    ¼Ò«¬Âà´«¦¨¹ê»Ú¥i¦æªº¤è®×¡AµM«á¶i¦æ¼Ò²Õ¤Æ¡A³Ì«á±Nµ²ªG¥æµ¹¤U¤@¨B³B²z
    ¡C

üé¹ê§@(implementation)

¡@¡@¹ê§@´N¬O±N«e­±©Ò±oªºµ²ªGÂন¹ï¬Mªºµ{¦¡½X¡C©¹«á¦b¦¹³¹¸`¤¤¡Aµ§ªÌ±N©M
    ¤j®a°Q½×C++ªºÀ³¥Î¡C

4.2  ¤ÀªR

¡@¡@³o³¡¥÷ªº¤º®e¦b«e¤T³¹ªº¤º®e¤Î·§©À¤v¸g³Q¥´´²¶i¤J¦U¼Ò«¬ªº¤¶²Ð¤¤¤F¡C§Ú
­Ì²{¦bªº¤u§@´N¬O§â¥L­Ì¾ã¦X°_¨Ó¡A¨Ã¥[±j¤@¨Ç­«ÂI¡C

¡@¡@¤ÀªR¤u§@´N¬O­n¤F¸Ñ°ÝÃDªº©w¸q¡A¦]¦¹²Ä¤@¨B¡A¾ã²zÃö©ó³nÅ骺´y­z¡A§Ë²M
·¡°ÝÃDªº²Ó¸`¡A¤O¨D¨Ï©w¸q©ú½T¦Ó©öÁA¸Ñ¡A¤]´N¬O»¡­n¥Ñ°ÝÃD³¯­z(problem
statement)¨Ó¤ÀªR³nÅ骺µ²ºc¡C³o¤u§@ªº°ò¥»ºë¯«©M¶Ç²Îªº³]­p¤è¦¡¬O®íµL¤G­P
ªº¡Cµ§ªÌ´¿¦b«e´Áªº©å§@¤¤¸ÑÄÀ±o«Ü©ú¥Õ¤F¡C

¡@¡@ª«¥ó¼Ò«¬ªº«Øºc¡G­º¥ý§â¤@­Óª«¥óªºµ²ºc¥]¬AÄݩʩM¹B§@¦æ¬°¦CÁ|¥X¨Ó¡A§ä
¥Xª«¥ó»Pª«¥ó¶¡ªºÃö«Y¡C¨Ã¥B­n±Nª«¥ó¤¤©M°ÝÃDµLÃöªºÄݩʤιB§@§R°£¡A¦P®É¤]
­n¥h°£©M°ÝÃDªºÄݩʤιB§@§R°£¡A¦P®É¤]­n¥h°£©M°ÝÃDµLÃöªºÃö«Y¤ÎÁäµ²¡C¾A·í
ªº¤Þ¥Îª«¥ó¡A©Î±N¦PÃþªºª«¥ó©â¶H¤Æ¡A¨ú¥X¦@¦Pªº¤÷Ãþ§O¨Ó....¡C¦³¤@ÂI»Ý­n
¯d¤ß¡A³Ì¦n­n¦³»¡©ú¤å¥ó¨Ó°O¿ýª«¥óªº©Ê½è©M¹B§@ªº¥Øªº¡C¬ÛÃöªº¤º®e¦b²Ä¤@³¹
¤¤³£»¡¹L¤F¡A½ÐŪªÌ¦Û¦æ°Ñ¦Ò¡C

¡@¡@°ÊºA¼Ò«¬ªí¹F¥Xª«¥ó¤¤¨Æ¥ó¹B§@ªº¶¶§Ç©Mª¬ºAªº§ïÅÜ¡C­º¥ý¡A§A¸Ó·Ç³Æ¤@­Ó
¼@¥»¡A¼@¥»ªº¨Ó·½©Î³\¬O¿n¼Æ¤Q¦~ªºÆ[®×©Ò²Ö¿nªº³W«h¡C¼@¥»ªº¤º®e©Î³\¤£¬O¹d
²ÓÃû¿ò¡A¤]¥i¯à©M¡u³s¼N¼@¡v¤@¼ËµL²á¡A¦ý¥¦«o«Ü­«­n¡CµM«á­n§ä¥X¨º¨Ç¬O¡u¨Æ
¥ó¡v¡A¨Æ¥ó¥]¬A«H¸¹¡A¿é¤J¡A¤¤Â_µ¥µ¥¡C¦P®É­n¯d¤ß¨C­Ó¦ñÀH¨Æ¥ó¦Ó¥Íªº°Ê§@
(action)¡A¤Î¨ä°Æ§@¥Î¡CµM«á¥H¼@¥»¬°®Ú¾Ú§@¨Æ¥ó°lÂÜ(event  trace)¡A´ú¸Õ¨Æ
¥óµo¥Íªº¥ý«á¶¶§Ç¤Î¦U¨Æ¥óªº¥Ø¼Ðª«¥ó(target object)¡C

¡@¡@¨Ï¥ÎªÌ¤¶­± ( User's interface ) ¤]¸Ó¦b¦¹®É´Á«Ø¥ß¡C¨Ï­±ªÌ¤¶­±ªº³]­p
¬O³ÌÃø¦ô¶qªº¡A¦]¬°§A«ÜÃø¨M©w«ç¼Ëªº¤¶­±¤~¬O³Ì¦n¥Î ( easy use ) ©M³Ì¤Íµ½
( user friendly ) ªº¡A°£«D¨ì¯u¥¿³]­p§¹¦¨«á¤~¯àª¾¹D®ÄªG¦p¦ó¡CµM¦Ó¡A§Ú­Ì
¤£±o¤£©Ó»{³nÅé¬O¥Ñµ{¦¡Å޿誺³¡¥÷©M¨Ï¥ÎªÌ¤¶­±¦X°_¨Óªº¡C¤×¨ä¦b¤µ¤Ñ¡A³nÅé
ªº¦nÃa³q±`¸g¥Ñ¨Ï¥ÎªÌ¤¶­±§P©w¡C¨Ï¥ÎªÌ¤¶­±ªº³]­p¦b¥Ø«e¦Ó¨¥¨Ã¨S¦³¤@­Ó«Ü²Î
¤@ªº«¬¦¡¡A¦ý±N¨Ó¤]«ÜÃø¦³¤@­P¤½»{ªº¼Ð·Ç¡C

¡@¡@Ãö©ó¤ÀªR¥\¯à¼Ò«¬ ( Functional model ) ¤è­±¡A¥D­nªº¤u§@´N¬O«Øºc¢Ò¢Ô
¢Ò¹Ï¡C±N¸ê®Æªº¬y¦V©M³B²zµ{§Ç¼Ð¥Ü¥X¨Ó¡A´N¦p¦P«e¤@³¹©ÒÁ¿ªº¤@¼Ë¡AµM«á¥»µÛ
¡u³v¨B²Ó½o¤Æ¡vªº­ì«h¡A±N©â¶Hªº³B²z³æ¤¸¡A¦A²Ó¤À¥X¥¦¤º³¡ªº¢Ò¢Ô¢Ò¹Ï¡A¤@¯u
­«Âгo­Ó¨BÆJ¡Aª½¨ì¥¦­Ìªºµ²ºc°ò¥»¨ì¤£¯à¦A°ò¥»¬°¤î¡C

²Ä¤­³¹  ¨t²Î³]­p(System Design)

¡@¡@¨t²Î³]­p¬O³nÅé³]­p¶g´Á¤¤©Ó¥ý±Ò«áªº¤@Àô¡C¦b¥»¶¥¬q¤¤¦³¤@¨Ç­º­nªº¥Ø¼Ð
¡A¥]§t¼Ò²Õ¤Æ¡B¸ê·½¤À°t¡B¨t²Îµ²ºc³W¹ºµ¥µ¥¤u§@¡C

5.1  ¼Ò²Õ¤Æ

¡@¡@¦A¤@¦¸­n±j½Õ¡u³v¨B²Ó½o¤Æ¡vªº·§©À¡C·§©À¤W¬O±N¤@­Ó¤j¨t²Î¤Á¦¨¤p¨t²Î¡A
¤p¨t²Î¦A¤À¦¨¤p¤p¨t²Î.....¦p¦¹»¼°j¦¡ªº¤Á¤À¡A¥i¥H¤ÀªR¥X°ò¥»³æ¦ì¡B«ü¥O½X
¡A©Ò¥H¤@³nÅé¥i¯à¬O¥Ñ´X­Ó¥D¨t²Î¡A¦Ó¥D¨t²Î¤S¥Ñ­Y¤z­Ó¤p¨t²Î©Ò²Õ¦¨ªº¡C§Ú­Ì
¸ÕµÛÂk¯Ç¥D¨t²Î¤Î¤l¨t²Î¶¡ªºÃö«Y¡A¦³¼hÅ|(layer)¤Î¤À³Î(partition)¡C

5.1.1  ¼hÅ|(Layer)

¡@¡@¨ã¦³¼hÅ|Ãö«Yªº±qÄݼҲաA¨ä²{¶H¬O¡F¤l¼Ò²Õ´£¨Ñ¤÷¼Ò²Õ©Ò»Ýªº¥\¯à¡A¤l¼Ò
²Õ¨Ã¤£»Ýª¾¹D¤÷¼Ò²Õ¦b°µ¤°»ò¡A§ó¤£·|©I¥s¤W¼h¼Ò²Õ¡C¦]¦¹¡A¼hÅ|ªººc¦¨¬O¡u««
ª½¡vªº¬Ûô¡C¼hÅ|¦¡ªºÃö«Y¥i¥H­°§C¾÷¾¹¬Û¨Ì©Ê(machine  dependence),¦]¬°¥u
¦³³Ì©³¼h¼Ò²Õ¤~»Ý¡u¹êÅ餯¡v¡A¤¤¼h¥H¤Wªº¼Ò²Õ©Ò§@ªº¤u§@³£¥i¥H¬O©â¶Hªº¡C¦]
¦¹¬°¤F­n¾AÀ³·sªºÀô¹Ò¡A¥u­n©â´«©³¼hªº¼Ò²Õ´N¥i¥H¤F¡C

5.1.2  ¤À³Î(partition)

¡@¡@¤À³Îªí¥Ü»¡¡A¼Ò²Õ©M¼Ò²Õªº³sô¬O¤ô¥­¤è¦Vªº¡C¼Ò²Õ¶¡¥i¥H¬Û¤¬ªº©I¥s¡C¤À
³Î¤Î¼hÅ|µ²ºc³q±`³£¦@¦s¦b¨t²Î¤¤¶¡¥i¥H¬Û¤¬ªº©I¥s¡C¤À³Î¤Î¼hÅ|µ²ºc³q±`³£¦@
¦s¦b¨t²Î¤¤¡A¤]¨S¦³±E¦n±EÃaªº°ÝÃD¡A¨Ì¨t²Î©Ò»Ý¤~­«­n¡C

5.2  ºÞ²z¸ê·½(resource)

¡@¡@ºÏºÐ¡B¿Ã¹õÅã¥Ü¡B°O¾ÐÅé¡BÁä½L¡B¦Lªí¾÷µ¥³£¬O¨t²Î¸ê·½¡CºÞ²z¨t²Î¸ê®Æªº
¤u§@¤j¥b³£¦³§@·~¨t²Î§âÃö¡C¤£¹LÀ³¥Îµ{¦¡¤]¤£À³¥ô·NÅýµ{¦¡¤ºªº¦¸¨t²ÎÀH·N¨Ï
¥Î¤½¦@¸ê·½¡C³Ì¦nªº§@ªk¬O³o¼Ë¡G³]­p¹ïµ¥©ó¸ê·½ªº§âÃöªÌª«¥ó¡A¨Ï¸Óª«¥ó¥Nªí
¸Ó¸ê·½¡A¥Ñ¦¹ª«¥ó²ÎÄw¦¹¸ê·½ªººÞ²z¡C¨Ò¦p»¡§A¥i¥H§â¬Y­ÓÀɮשw¸q¦¨¤@­Óª«¥ó
¡A©w¸q¤@¨Ç¹B§@.....¡C·íµM¥i¯à·|¹ï¦s¨ú³t«×©Î®Ä²v¦³ÂI¼vÅT¡A¦ý¨º¤]¬O·¥¤Ö
ªº¤@ÂI¦Ó¤v¡A¦ý«o¥i¥H¥Î¤@­Pªº¤è¦¡¨ÓºÞ²z¸ê·½¡C

²Ä¤»³¹¡@ª«¥ó³]­p(Object Design)

¡@¡@ª«¥ó³]­p(Object  Design)ªº¤u§@¬O³W¹º¤u§@ªº³Ì«á¤@Àô¡A¦b³o­Ó³¡¥÷¸Ì¡A
§Ú­Ì±o§â¼Ò«¬¨ãÅ餯¡A³Ì¨Î¤Æ¡A¤~¯à¹ê§@¡C

6.1  ºtºâªk(Algorithms)³]­p

¡@¡@ºtºâªkªº­«­n©Ê¬OµL¥i¤ñÀÀªº¡C¤@­Ó¦nªººtºâªk¤£¦ý§Ö¡A¦Ó¥B¦³®Ä²v¡C½Ð¬Ý
³o­Ó¤èµ{¦¡ f(x)=10*x^250-20*X^249+1¨D f(2)=? ¶â¡A«Ü²³æ¡A§â2¥N¶i¥hºâ¡A
µM«á¤@©w·|µo¥Í´d¼@¡A¦]¬°250¦¸¤è¹ê¦b¤Ó¤j¤F¡A¨Sªkºâ¡C¥i¬O¼g¦¨f(x)      =
(10x-20)*x^249+1  ¤£´N«Ü¦nºâ¤F¶Ü¡H³o¬O¤@­Ó¼Æ¾Çºtºâªkªº¨Ò¤l¡C¦p¦ó¥h¿ï¾Ü
¤@­Ó¾A·íªººtºâªk©O¡HÄY®æ»¡¨Ó³oÂI±N²o¯A¨ìºtºâªk¤ÀªR¡A»Ý­n¤Þ¥Î¤j¶qªº¼Æ¾Ç
¦ôºâ¡A®£©È±o¼g¤W¤@¥»«Ü«pªº®Ñ¡C¤£¹L´N³nÅé¤uµ{ªºÆ[ÂI¨Ó¬Ý´N¤ñ¸û²³æ¦Óª½Æ[
¤F¡C½Ð¦U¦ì§â´¤¤@¨Ç­nÂI¡G¿ï¾Ü¨º¨Ç¤½»{¦Ó¥B¨S¦³ª§½×ªººtºâªk¡A¥¦­Ì³q±`¬O¦³
®Äªº¡C¦ý¦pªG§A¦Û¤v³]­pºtºâªk¡A±N¤@¯ë©Ê¦C¤J¦Ò¼{¡C¦pªGºtºâªk¤£¬O­n³Q¥Î¦b
ÃöÁä²~ÀV¤Wªº¡A³Ì¦n¬O©öÀ´©ö§ïªº¡C

¡@¡@¬°¤F¹ê§@ºtºâªk¡A¤]¦P®É±o¿ï¾Ü¦X¾Aªº¸ê®Æµ²ºc¡C¬JµM¦³ÀRºAªº¸ê®Æµ²ºc©M
°ÊºAªººtºâªk¡A§Ú­Ì¥i¥H¸ÕµÛ°µ¤@¨Ç¤º³¡Ãþ§O(internal class)¨ÓÀ³¥I¹ê§@ºtºâ
ªk¡C²{¦b¤j³¡¥÷ªºª«¥ó¾É¦Vµ{¦¡»y¨¥³£ªþ¦³¸ê®Æµ²ºcªºª«¥ó¡A¥i¥H´î¥h­«·s³]­p
ºtºâªkªº³Â·Ð¡A¯u¬O³]­p®vªººÖ­µ¡C

6.2  ÃöÁp(association)ªº³]­p

¡@¡@§Ú­Ì¦n¹³«Ü¤[³£¨S¬Ý¨ì³o­Ó°¶¤jªº¦Wµü¤F¡Cµ§ªÌ´¿´£¤ÎÃöÁpªº¹B¥Î¬O«Ü­«­n
ªº¡A¦ý«ç»ò¹ê§@ÃöÁp©O¡H§Ú­Ì¸ÕµÛ¥HÃöÁp¥Î³~ªº¤è¦V¨Ó¤ÀªR¡C

6.2.1  ³æ¦VÃöÁp(One Way Association)

¡@¡@¦n´X³¹«eµ§ªÌ´¿¥H¦Ñ®v¤Î¦P¾ÇÃþ§Oªº¥æ¤¬Ãö«Y¨Ó»¡©úÃöÁp¡C¦pªG³æ´N¡u±Ð¾É
¡v³oÃöÁp¨Ó¬Ý¡A¯Âºé¬O³æ¦V©Êªº¥Ñ¦Ñ®v¨ì¾Ç¥Í¡A¦Ó¨S¦³¾Ç¥Í¡u±Ð¾É¡v¦Ñ®v¡C³æ¦V
ÃöÁpªº¹ê§@³q±`¥H«ü¼Ð¹F¦¨¡C¦pªGÃöÁp¬O¤@¹ï¤@(one-to-one)ªº¡A«h¥Î¤@­Ó«ü¼Ð
´N¥i¥H¸Ñ¨M¡A¦ý¦pªG¬O¤@¹ï¦h(one-to-mamy)¡A«h¥i¯à­n¥Î¤@²Õ«ü¼Ð¡A©Î¤@­Ó«ü
¼Ðªºªí®æ¡C¦ý¦pªG³oÃö«Y¬O¦³±ø¥ó­­¨î¡A«h¤@©w­n¥Î¤@­Ó±a¦³Åv­­­È
(qualificiation)ªºªí®æ¨Ó³s±µ¤F¡C

6.2.2¡@Âù¦VÃöÁp¡@(Two-way association)

¡@¡@¦b¤@¨Ç±¡ªp¤U¡AÂù¦VÃöÁp¬O¦³¥²­nªº¡C¦pªG¥hªº¤è¦V¨Ï¥Î²v¤j©ó¤Ï¦Vªº¨Ï¥Î
²v¡A¨º»ò©M³æ¦VÃöÁp¤@¼Ë¡A¥Î¤@­Ó«ü¼ÐÁp°_¨Ó´N¨¬°÷¤F¡A¦b»Ý­n¥Î¤Ï¦VÃö«Y®É¡A
¥H·j´Mªº¤èªk¨Ó§ä¨ì¥¿¦V«ü¼Ðªº¨Ó·½ª«¥ó¡C¦pªG¨Ó¥hÂù¦V¨Ï¥ÎÀW²v³£®t¤£¦h¡A¨º
»ò«K¥ÎÂù«ü¼Ð¡C¦b½ÆÂøªº±¡ªp¤¤¡A¨Ò¦p¨ã¦³±ø¥óªºÃö«Y©Î¬O¦h¹ï¦hªºÃöÁp¤§Ãþªº
¹B¥Î«K¦³¶·­n±NÃöÁp°µ¦¨¤@­Óª«¥ó¡C°ò¥»¤W¡A³oª«¥ó¤]¬O¤@­Óªí®æ¡CÃö©ó³o¨ÇÃþ
«¬ªºªí®æ¡A¥i¦Ò¼{¥HÂø´êªí(hash table)¨Ó¹ê§@¡C

6.2.3¡@ÃöÁpªº³Ì¨Î¤Æ(Optimization)

¡@¡@§Ú­Ì¡uª«¥ó¼Ò«¬¡v¤¤©Ò«Øªºª«¥ó¤Î¨äÃöÁp¥i¯à¬O«Ü§¹¾ã¦Ó¶g±K¡A¦Ó¥B²Å¦X²{
¹êªº¡C¤£¹L¥¦¥i¯à¤ÓÁc½Æ¤F¡C¬°¤F¶Ç°e¤@­Ó¨Æ¥ó¡A¥i¯à­n¬ï¹L¼Æ­Óª«¥ó¡A³z¹L¼Æ
­ÓÃö«Y(association)¶Ç»¼¡C´N¦n¹³±q¥x¥_¨ì°ª¶¯¡A¨«¤T¸¹¬Ù¹D¡A±o¸g¹Lªñ¦Ê­Ó
«°Âí©M¼Æ¤£²Mªº¤ä½u¤~¯à¨ì¹F¥Øªº¦a¡A¦ý¦pªG¸g¹L°ª³t¤½¸ô¡A´N¥i¥Hª½¹F°ª¶¯¡C
¦P¼Ëªº¡A¦b¸ê®Æ¶Ç°eÀW²v°ªªºª«¥ó¶¡¡A§Y¨Ï©¼¦¹¨S¦³ª½±µÃöÁp¡A¤]¥i¥H¦Ò¼{¯S§O
«Ø¥ß¤@­ÓÃö«Y(association)¨Ó¹F¦¨³Ì¨Î¤Æ¸ê®Æ¶Ç°e¸ô®|ªº¥Øªº¡A¥H¥h°£¶Ç¿é¹Lµ{
©Ò¤£»Ý­nªº¤¾ªø¨BÆJ¡C

6.3¡@¿ò¶Ç(Inheritance)ªº¹B¥Î

¡@¡@ª«¥ó¾É¦Vªº¯SÂI´N¬O¥¦¨ã¦³¿ò¶Ç©Ê¡A§Ú­Ì§Æ±æ³nÅ餤ªºª«¥ó¯à°÷¾¨¥i¯à¦a­«
ÂШϥΡAÄ~©Óª«¥ó¡A¥H¤j¶qÁY´î³nÅé³]­pªº®É¶¡¤Î¼W°ª¥i«H«×¡C

¡@¡@ª«¥ó¤¤ªº¤@¨Ç¹B§@(operation)¥i¯à©Mªºª«¥ó©Î¥L¦P¨t²Î¤¤Ãþ¦üªºª«¥ó¤¤
ªº¹B§@¦³¬Ûªñªº¥\¯à¡A¦ý¨ä°Ñ¼Æ­Ó¼Æ«o¤Ö¤F¤@¨Ç¡C´N¦]¬°³o¼Ë¡A¥i¯à·|¾É­PµLªk
¿ò¶Çª«¥ó¡A³o¹ê¦bªº«Ü¥i±¤¡C¤£¹L¡A¦ó¤£´À³oºØ¹B§@¡u¸É¨¬¡v¦h¾lªº°Ñ¼Æ©O¡H
³o¯u¬O¤@­Ó¦n¥D·N¡CÂǥѼW¥[¦h¾lªº°Ñ¼Æ¡A¥¦­ÌªºÃ±¦W©M¥\¯à´N¥i§¹¥þ¤@­P¤F¡I
¨Ò¦p»¡¦b³æ¦âø¹Ï¨t²Î¤WµeÂI¡A¥u»Ý­n®y¼Ðªº¸ê®Æ§Y¥i¡A¦ý¦b±m¦â¨t²Î¤W«o±o­n
¦³ÃC¦â(color)ªº°Ñ¼Æ¡A¦p¦ó¹F¦¨¦@¥Î©O¡H¥u¦n¦b³æ¦âµeÂIªº¨ç¼Æ¤¤¦h¥[¤@­Ó¤£
»Ý­n¡B¥i©¿²¤ªºÃC¦â°Ñ¼Æ¡CÅý¨â­Ó­ì¨Ó¨Ã¤£¬Û¦Pªº¹B§@(operation)¡AÅܦ¨Ã±¦W
(signature)¬Û¦P¡A¦ý¤º³¡¤èªk(method)¤£¦Pªº¦P¤@­Ó¹B§@¡C

¡@¡@°£¤F¿ò¶Çª«¥ó¥H¥~¡A·s«ØªºÃþ§O¤]¥i¥H·Qªk¤l°µ¡u¿ò¶Ç¡v¡C¦]¬°¬ÛÃþ¦üªº
Ãþ§O³£¨ã¦³¦@¦Pªº¹B§@¤ÎÄݩʡC¦Ò¼{±N³o¨Ç¦@¦Pªº¹B§@©MÄݩʩâ¥X¨Ó¦¨¬°¤@­Ó¦@
¦Pªº¶W¯ÅÃþ§O¡C¦ý°ò©ó¦U¤lÃþ§O¨ã¦³®t²§©Ê¡A«h¬Y¨Ç¹B§@¥i¯à¬O©â¶Hªº¡A©ó¬O¥G
³o­Ó¤÷Ãþ§O´N¦¨¤F©â¶HÃþ§O¤F¡C

¡@¡@³o¼Ë§@¦³¤£¤Ö¦n³B¡C²Ä¤@¡G­×§ï¨ä¦@¦Pªº¤÷Ãþ§O´N¥i¥H¼vÅT¨ì©Ò¦³ªº¤lª«¥ó
¡C²Ä¤G¡G¥i¥H²£¥Í¤£¦Pªº¤lÃþ§O¨Ó¾AÀ³¤£¦PªºÀô¹Ò¡C¹ï©ó«eªÌ¡Aµ§ªÌ»{¬°«Ü²LÅã
¡A¤£»Ý¦h°Q½×¡AŪªÌÀ³¸Ó¥i¥H¤F¸Ñ¡Fµ§ªÌ­nºq¹|¤@¤U²Ä¤GÂI¡C°²¦p§Aªº³nÅ餽¥q
¥X°â¦P¤@®M³nÅéµ¹³\¦h¦³¤£¦P»Ý¨Dªº«È¤á¡A§A¤ð»Ý¤j´T¼W§R§Aªºµ{¦¡¡A¥u­n¿ò¶Ç
·sªº¤lÃþ§O§Y¥i¡C¨ä¦¸¡A¥H¤@­Óø¹Ï¨t²ÎªºÃ¸¹ÏÃþ§O¦Ó¨¥¡A¬°¤F¾AÀ³¤£¦PªºÅã¥Ü
¨t²Î¡A¥i¥H¿ò¶Ç¾AÀ³¤£¦P¾÷¾¹ªºÃþ§O¡A¦b¯u¥¿¤W¾÷°õ¦æ®É¡A¦A¨Ì¯u¹ê±¡ªp¤Þ¥Î¾A
·íªºÃþ§O´N¥i¥H¤F¡C

6.4¡@¸ê°TÁôÂÃ(lnformation Hiding)

¡@¡@¦b«e­±³¹¸`¤¤¡A´X¥G¨S´£¨ì¸ê°TÁôÂÃ(lnformation  Hiding),¤]´N¬Oª«¥óªº
«Ê¸Ë©Ê(encapsulation)¡C«Ê¸Ë©Ê©M¸ê®Æ«O¥þ(security)¤£¯à²V¬°¤@½Í¡A«áªÌ«ü
ªº¬O¨t²Î¸ê®Æªº«O±K©M¦w¥þªº¥i¾a©Ê¡A«eªÌ«h¨ã¦³³nÅé¤uµ{¤Wªº·N¸q¡C¸ê°TÁôÂÃ
ªº¥Øªº¦³¤G¡A²Ä¤@¡G¨Ï¹B§@(operation)¦³­­«×ªº¦s¨ú¸ê®Æ¦¨­û¡A­°§C¨ä¤Þµoªº
°Æ§@¥Î¡C¤]´N¬O»¡¡A§Ú­Ì¤£§Æ±æ¹B§@·|²o¤@¾v¦Ó°Ê¥þ¨­¡A¦]¦¹¦b­×§ï¹B§@ªº¤èªk
(method)®É¡A¥i¹w´Áªº­°§Cª«¥óµ²ºcªº¼vÅT¡C²Ä¤G¡G­¢¨Ïª«¥ó¥²¶·«Ø¥ß¤@­Ó²Î¤@
ªº¤¶­±(interface)¡C³z¹L¤¶­±¨Ó´£¨ú©Î§ïÅܪ«¥óÄݩʡA¥i¥H¦³®Ä¦a¹K¤îÃþ§O¾D
¨ì·N¥~ªº¯}Ãa¡C§ó­«­nªº¬O¡AÃþ§O¤¶­±¥i¥H´£°ªÃþ§Oªº©â¶H¤Æµ{«×¡A¤@­Ó·U©â¶H
ªºÃþ§O¹ï§Ú­Ì·U¦³§Q¡C­n«ç»ò¥h¨M©wÃþ§O¤¤­þ¨ÇÄݩʩM¦æ¬°¸Ó³QÁôÂéO¡H»¡¹ê¸Ü
¡Aµ§ªÌ¤]¦Ò¼{¤F«Ü¤[¡C¤@­Ó±`¨£ªº¬Ýªk¬O³o¼Ëªº¡G¶È±NÃþ§Oªº¬É­±ÅãÅS¥X¨Ó¡A¦Ó
±N¨ä¥¦ªº¤¸¥ó³£ÁôÂð_¨Ó¡C¦Ó³o¤S¤Þµo¤F¤@­Ó°ÝÃD¡G§Ú­Ì¦p¦ó¥h³]­p¤@­Ó¦nªº¤¶
­±¡Hµ§ªÌ¤ß¥Ø¤¤¦nªº¤¶­±¬O°ª«×©â¶Hªº¡A¦Ó¥B»P¤º³¡µ²ºc¤£¬Û¯A¡A¯à°÷¦Ò¼{¨ì¿ò
¶Ç«áªº¤lÃþ§O¤´¥i¾A¥Î¤÷Ãþ§Oªº¤¶­±¡A¨Ã¥B¤£»Ý­n¥ô¦ó¼W§R­×§ï¡A¦ý¦P®É¤]¥²¶·
¯à©P©µ¦a±±¨îª«¥óªº°Ê§@¡C

6.5¡@Ãþ§O¼Ò²Õ¤Æ

¡@¡@¶Ç²Îªº³nÅé³]­p«Ü­«µø¼Ò²Õ¤Æ¡Aª«¥ó¾É¦V³nÅé¤uµ{¦P¼Ë¤]¤Q¤À­«µø¼Ò²Õ¤Æ¡A
¼Ò²Õ©MÃþ§Oªº·N¸q¨Ã¤£¬Û¦P¡Cµ§ªÌ»{¬°¼Ò²Õªº¬É©wÄÝ©ó¡u¥\¯à¼Ò«¬¡vªº½dÃ¥¤¤¡A
¤]´N¬O»¡±N¦³¥D«ÈÃö«Y©Î¬OÃþ¦üªº¹B§@¼Ò²Õ¤Æ¡C¦ý¦p¦ó§Î¦¨¼Ò²Õ©O¡H¼Ò²Õ¶¡¤S¦s
¦b¤°»òÃö«Y©O¡H§Ú­Ì¨ÌÂÂ¥H¡uºò±K©Ê¡v¨Ó§P©w¼Ò²Õ¤º¦¨­ûªºÃö«Y¡A¦Ó¥H¡uÃöÁp©Ê
¡v¨Ó°Q½×¼Ò²Õ»P¼Ò²Õ¤§¶¡ªº¥æ¤¬§@¥Î¡C³o¨â­Ó©Ê½è¤@¼Ëªº¥i¥H³Q¤Þ¥Î¨ìÃþ§Oªº¤À
ªR¡C¼Ò²Õ¤º­Y¬Oºò±K©Ê§C¡A¥i¯à·N¨ýµÛ³o¼Ò²ÕÁÙ¥i¥H¦A³Q¤Á¤À¦¨§ó¤pªº¤l¼Ò²Õ¡C
¦P¼Ëªº¡AÃþ§O¤º­Y¬Oºò±K«×§C¡A¨º»ò³o­ÓÃþ§O©Î³\¤]¬O¤j¦ÓÅ¢²ÎªºÃþ§O¡C¼Ò²Õ¤§
¶¡­YÃöÁp©Ê¹L°ª¡AÀ³¸Ó¦Ò¼{¼Ò²Õªº¤À³Î¤À¦¡¬O§_§´·í¡C¦P¼Ëªº¹D²z¤Þ¥Î¨ìÃþ§Oªº
¤ÀªR¤W¥ç¬O¦p¦¹¡CÃö©ó¼Ò²Õªººò±K©Ê¤ÎÃöÁp©Êªº¸Ô²Ó¤º®e¡A½Ð°Ñ¦Ò¤W´Á«Ø«C¡C

²Ä¤C³¹¡@¹ê§@¡B»y¨¥

7.1¡@ª«¥ó¾É¦Vµ{¦¡»y¨¥(Object Oriented Programming Language)

¡@¡@¤£¥i§_»{ªº¡Aª«¥ó¾É¦V³]­p(OOD)©Mª«¥ó¾É¦Vµ{¦¡»y¨¥ªº¬Û¨Ìµ{«×·¥°ª¡Aª«
¥ó¾É¦V³]­pªº·§©À¦b¤C¡³¦~¥N´N¥X²{¤F¡A¦ý«o¬O¦b¤K¡³¦~¥Nª«¥ó¾É¦Vµ{¦¡»y¨¥µo
®i¦¨¼ô¤§«á¤~¤j©ñ²§±m¡C¶Ç²Îªºµ{¦¡»y¨¥¨Ã«D¤£¯àÀ³¥Îª«¥ó¾É¦V¤èªk¡A¥u¬O«ÜÃø
½}¤F¡A¨Ò¦p¿ò¶Ç  (inheritance) ´N«ÜÃø¹ê§@¡A¦]¦¹±o¨Ì¿àª«¥ó¾É¦V±M¥Îªºµ{¦¡
»y¨¥¡C¦ýª«¥ó¾É¦Vµ{¦¡»y¨¥¨Ã«D¤@¤i©Ò¦¨ªº¡C±qµ{¦¡»y¨¥ªºµo®i¾ú¥v¤¤¡A¥i¥H¬Ý
¥X¤@±ø¯ßµ¸¨Ó¡C¦pªG«ö·Ó¤@¯ë¹ï»y¨¥ªº¤ÀÃþ¤è¦¡¡A«h¦³²Ä¤@¥N¨ì²Ä¥|¥N¤§¤£¦P¡C
¦ýµ§ªÌ¦b¦¹±Ä¨ú¸ê®Æ«¬ºAªºÆ[ÂI¨Ó¬Ýµ{¦¡»y¨¥ªººt¶i¡AÂk¯Ç¥X¤@¨Çµ²ªG¡C¤W¥jªº
µ{¦¡»y¨¥¡A¦p²Õ¦X»y¨¥¡A¨S¦³¤µ¤é¾ã¼Æ¡B¯BÂI¼Æªº¸ê®Æªí¥Üªk¡F¤¤¥jªºµ{¦¡»y¨¥
¦p FORTRAN¡BBASIC µ¥¦³°ò¥»ªº¸ê®Æ«¬ºA¡A¦p¾ã¼Æ¡B¦r¦ê«¬ºAµ¥µ¥¡Fªñ¥Nªºµ{¦¡
»y¨¥¦p¢Ñ©ÎPascal¡A«h¨ã³Æ¦³¡u¶°¦X¡v¦¡ªº¸ê®Æªí¥Üªk¡A¦Ó·s¤@¥Nªºµ{¦¡»y¨¥¦p
Smalltalk ¤ÎC++«h¨ã¦³Ãþ§O«Ê¸Ëªºªí¥Ü¤è¦¡¡C

¡@¤@­Ó²z·Qªºª«¥ó¾É¦Vµ{¦¡»y¨¥(OOPL)¯à°÷½T¹êªº±N°ÝÃDªº©w¸q°ì(Domain)¬M®g
¨ìµ{¦¡¤¤¡C´«¥y¸Ü»¡¡A¦b«e­±¼Æ³¹©Ò´y­zªº¦UºØª«¥ó¯S©Ê³£À³¸Ó³Q¥]§t¶iOOPL¡C
«Ü¤£©¯¦a¡A¦UºØ»y¨¥³£¤£¯à«Ü§¹³Æ¦a¥]§t¨º¨Ç¯S©Ê¡C¨Ò¦p»¡¡G¦h­«Ä~©Ó
(multiple inheritance)¨Ã¤£¦s¦b©ó¸ûªºOOPL¤¤¡A¨Ò¦pC++ 1.2µ¥¡C¦Ó¹ï©ó¦h­«
Ä~©Ó(multiple  inheritance)¸Ñ¨M¼Ò¸W¨â¥i (ambiguity) ªº¤èªk¤]¤£ºÉ¬Û¦P¡C
¦¹¥~¡A§Ú­Ì§Æ±æµ{¦¡»y¨¥¯à°÷´£¨Ñ¤@®M¼Ð·ÇªºÃþ§Oµ{¦¡®w(Class  library)¡A´N
¹³Smalltalk¤@¼Ë¡A³]­p®v¥i¥H¦Û¥Ñ¹B¥Î¤W¦Ê­Ó¤w©w¸qªºª«¥ó¡C¦ÓC++¡A³»¦h¥H
iostreamªºI/Oª«¥ó¥R¼Æ¡C¦U®aª«¥ó¾É¦Vµ{¦¡»y¨¥¹ï©óª«¥ó¾É¦Vªº¸àÄÀ³£¦³©Ò¤£
¦P¡A¾É­P©ó¥¦­Ì¦bª«¥ó¾É¦V²z½×¤¤ªº²Ó¸`¬Ýªk³£¤£¤@¼Ë¡A³oÂIŪªÌ¤£¥i¤£ª`·N¡C

¡@¡@¦¹¥~¥Ø«eOOPL²£¥Í·sÃþ§Oªº¤èªk³£¬O¦bµ{¦¡¼g§@®É¦bµ{¦¡½X¤¤¸ü©ú¿ò¶Ç¤è¦¡
¡C±N¨Ó«h¥i¯à·|¥X²{¦b°õ¦æ®É´Á(run-time)¥i²£¥Íª«¥óªºµ{¦¡»y¨¥¡C©¡®É¬Û·í¦h
ªº°ÝÃD¤]¥i¤@¨Ö¸Ñ¨M¡C

²Ä¤K³¹¡@Ãö©óC++

¡@¡@ÁöµMSmalltalkªº¾ú¥v¡B¦W®ð¥i¯à³£¨Ó±o¤ñC++¤j¡A¦ýC++ªº¾A¥Î©Ê¸û±j¡C¹ï
©óC++ªº¤¶²Ð¯u¬O¦h¦p¹L¦¿¤§ÃV¡A½Ñ¦³¿³½ìªºÅªªÌ¦Û¦æ°Ñ¦Ò¡A¦b¥»³¹¤¤±N±´°QC++
¦bª«¥ó³]­p¤¤ªºÀ³¥Î¡C

8.1¡@¡uÃþ§O¡vVs¡uÃþ§O¡v

¡@¡@¤£­n¥H¬°³o¸`ªº¦WºÙ·d¿ù¤F¡CC++¤¤ªºÃþ§O»Pª«¥ó¼Ò«¬ ( object model )¤¤
ªºÃþ§O¦³Ô£®t²§©O¡H´N©â¶H¤Æªº¼h¦¸¦Ó¨¥¡A¨âªÌªº·N¸q¬O¬Ûµ¥ªº¡C´N¹ê»Ú±¡ªp¨Ó
»¡¡AC++ªºÃþ§Oªº¦¨­û¦s¨úÄݩʥi¤À¬°¤½¦@(public)¡B«OÅ@(protected)¤Î¨p¦³
(private)¤T°Ï¡C¦b¤£°Q½×¿ò¶Çªº±¡§Î¤U¡A«OÅ@(protected)¤Î¨p¦³(private)ÄÝ
§¡©Ê¬OÃþ§O¤¤³QÁôÂ꺳¡¤À¡C¦Ó¥u¥Î©ó¿ò¶Ç®É¡Apublic¤Îprotected¤è¯à¿ò¶Çµ¹
¤lÃþ§O¡C¬°¤°»ò­n³o¼Ë©w¸q©O¡H³o¬O­Ó«Ü¦³½ìªº°ÝÃD¡C®Ú¾Úµ§ªÌªº¬ã¨s¡A
private¦¨­û¨Æ¹ê¤W¤@¼Ë¤]·|³Q¿ò¶Çµ¹¤lÃþ§O¡A¦ý¤£¯à³Q¤lÃþ§Oªº¦¨­û¦s¨ú¡C³o
ÄÝ©ó¤@ºØÁô©Êªº¿ò¶Ç(implicit inheritance ) ¡A¦ý±q¥t¤@­Ó¨¤«×¨Ó¬Ý¡Aprivate
¦¨­û¥i¥H³Q·í¦¨¸ÓÃþ§O¼È®É©Ê¦¨­û¡A¥i¯à¬O¬°¤F­n§¹¦¨¬Y­Ó¹B§@(operation)¤º
ªº¤èªk(method)¡A¦Ó»Ý­nªº¤º³¡Ãþ§O(internal class)©Î»²§Uªº¤l¼Ò²Õ¡C³o¨Ç¦¨
­ûªº¿ò¶Ç¤£¨ã·N¸q¡A¤]´N¦¨¤FÁô©Ê¿ò¶Ç¡C

8.2  ­â¶V(overriding)»P¦h­«¸ü¤J(overloading)

¡@¡@­â¶V¤Î¦h­«¸ü¤Jªº©Ê½è«ê«ê¬Û¤Ï¡C­â¶V¦b«e­±ªº³¹¸`´N½Í¹L¤F¡A·N«ä¬O¤lÃþ
§Oªº¹B§@¨ú¥N¤÷Ãþ§O¹B§@¤º³¡ªº¤èªk¡A¦Ó§ó´«¦¨¾A¦X¤lÃþ§Oªº·s¤èªk¡C¦Ó¦h­«¸ü
¤J(overloading)¤S³QºÙ¬°¡u¦WºÙªº­«ÂШϥΡv¡C²£¥Íªº±¡ªp¬O³o¼Ëªº¡G¨ç¼ÆABC
³Q¦h­«¸ü¤J¦¨¨â­Ó¨ç¼ÆABC(int)¤ÎABC(char)¡A¤]´N¬O»¡¦WºÙ¬O¬Û¦Pªº¡A¦ý¨ä°Ñ
¼Æ¤£¤@¼Ë¡A¾É­Pñ¦W(signature)¤£¦P¡C¦b©I¥sABC¨ç¼Æ®É¡A­Y©I¥sªº«¬¦¡¬O
ABC('A')¡A°Ñ¼Æ¬O¦r¤¸A¡A´N©MABC(char)ªºÃ±¦W¬Û¦P¡A¦¹®É«K¾A¥ÎABC(char)³o
­Ó¨ç¼Æ¡C¤£¥u¬O¨ç¼Æ¡A³s¹Bºâ²Å¸¹¤]¥i¦h­«¸ü¤J¡C½Æ¼Æªº¹Bºâ´N¬O¤@­Ó©úÅ㪺¨Ò
¤l¡A¹ê¼Æªº¥[ªk¬O³Q¥[¼Æ©M¥[¼Æ¬Û¥[¡A¦Ó½Æ¼Æ¬Û¥[«o¬O¹ê³¡¥[¹ê³¡¡Aµê³¡¥[µê³¡
¡A¦ý«o¥i¥H¦@¦P¨Ï¥Î¥[¸¹¬°¥Nªí¤£¦Pªº¥[ªk¹Bºâ¡C

8.3  µêÀÀ¨ç¼Æ(virtual functions)»P©â¶HÃþ§O(abstract class)

¡@¡@Ãö©ó©â¶HÃþ§O(abstract class)¦b¡uª«¥ó³]­p¡v¤@¸`¤¤¡A´¿¸g´£¤Î¥¦ªº©Ê½è
¡A¦b³o¸`¤¤±N¬Ý¬ÝC++¬O¦p¦óªí¥Ü¤@­Ó©â¶HÃþ§O¡C

¡@¡@µêÀÀ¨ç¼Æªº¦s¦b¬°ªº¬O­nªí©ú¸Ó¨ç¼Æªº°õ¦æ¤º®e²{¦bµLªk©w¸q¡A©Î²{¦b¤w©w
¸q¡A±N¨Ó«o¥i¯à·|³Q§ïÅÜ¡C¦bª«¥ó¼Ò«¬¤@³¹¤¤¡A´¿´£¹L¤@­Ó´X¦óø¹Ïªº¨Ò¤l¡C©Ò
¦³ªº¹Ï§Î¡A¦p¹Ï¡B½u¡D¡D¡D¡Dµ¥°ò¥»¹Ï¼Ë³£¬O¥Ñ¤@­Ó³Ì­ì©lªº¤÷Ãþ§O¡A¤]´N¬O¡u
¹Ï§Î¡vÃþ§O¡C¦b¡u¹Ï¡vÃþ§O¤¤¦³¶µ¹B§@(operation)¥s¡uµe¹Ï(draw)¡v³o¶µ¥Ø¡C
¦ý¦U­Ó¹Ï¼Ëªºµeªk«o¦³®t¶Z¡A¦]¦¹¡uµe¹Ï¡v³o¶µ¹B§@¦b¡u¹Ï§Î¡vÃþ§O¤¤¦s¦b¡A¦ý
«o¨Sªk¤l¯u¥¿ªº°Ê°_¨Ó¡A¥u¦³¦b¿ò¶Ç¤l¥N¡A¡@¤]´N¬O¨º¨Ç¹Ï¼ËÃþ§O¤¤¤~¯à©w¸q¡A
¦]¦¹³o­Ó¡uµe¹Ï¡v¨ç¼Æ´N¬O­ÓµêÀÀ¨ç¼Æ¡C¥t¥~¤@ºØ±¡§Î¬O³o¼Ëªº¡G°²©w¦³­Ó¡u¥|
Ãä§Î¡vÃþ§O¡A©w¸q¥¦¡uø¹Ï(draw)¡v³o¶µ¹B§@·íµM¨S°ÝÃD¡C²{¦b°²³]¿ò¶Ç¥X¡u¥¿
¤è§Î¡v³o­ÓÃþ§O¡A§Ú­Ì¥i¥H­«·s©w¸q¡uø¹Ï¡v³o¶µ¹B§@¡A¦]¦¹³o­Óø¹Ï¨ç¼Æ¤S¬O
¤@ºØµêÀÀ¨ç¼Æ¡C°w¹ï©ó«eªÌªº±¡§Î¡A¥²¶·§â¸Ó¨ç¼Æ³]¬°¡u¯Â¨ç¼Æ¡v(pure
function)¡A¼gªk¬Ovirtual  ABC (void)=0¡F¦Ó¨ã¦³¦Ü¤Ö¦³¤@­Ó³oºâ«¬¯Â¨ç¼Æªº
Ãþ§O«K¬O©â¶HÃþ§O¡C¦ý«áªÌ¨ººØ±¡ªpªºÃþ§O«K¤£ºâ¬O©â¶HÃþ§O¡A¦]¬°©â¶HÃþ§OµL
ªk²£¥Í®×¨Ò(instance)¡A¥u¯à¥Î¨Ó¿ò¶Ç¥X¤lÃþ§O¡C

8.4  ¼ÒªO(Template)

¡@¡@¼ÒªO(template)¬OAT&T C++ 2.1·s©w¸qªº¥\¯à¡C¥¦©Mª«¥ó¾É¦Vªº²z½×­Ë¬O¨S
¦h¤jÃö«Y¡A¤£¹L¦b´î¤Ö­«½Æ½s½X¤W«o¬Ù¥h³]­p®v¤£¤Ö¤O®ð¡C

¡@¡@½Ð¬Ý³o­Ó¨Ò¤l¡G°ïÅ|(Stack)¬O¤@ºØ¥ý¶i«á¥X(FILO)ªº¸ê®Æµ²ºc¡C²z·Q¤¤ªº
°ïÅ|¨S¦³®e¶q­­¨î¡A¥t¥~¡A¥¦¤£­­©w³Q±À¤J°ïÅ|ªº¸ê®Æ¤§«¬ºA¡A¬O¾ã¼Æ¡A¯BÂI¼Æ
©Î¨ä¥¦¡C¦ý¦b¹ê»Úª¬ªp¤U¤S¬O¤@¦^¨Æ¡C¦b2.0¥H«eªºC++¤¤¡A§A¥i¥H¦h­«¸ü¤Jpush
¡]±À¤J¡^³o­Ó¹B§@¡A¦ý¼g°_¨Ó«ÜÅo¶Û¡A¦]¬°±À¤Jªº¤è¦¡³£¤@¼Ë¡A¦ý¥u¦]°Ñ¼Æ«¬ºA
¤£¦P¡A´N­n­«Âмg«Ü¦h·¥Ãþ¦üªº¦h­«¸ü¤J¨ç¼Æ¡C¦Ó²{¦b¥Îtemplate¡A´N¥i¥H¥Ñ½s
;¹¦Û°Ê²£¥ÍÃþ¦üªº¨ç¼Æ¡A¦pªí8.1©Ò¥Ü¡C¦]¦¹¡A¨Æ¹ê¤W¤]¦p¦¹¡A½s;¹¥u¬O§â
³o­Ó¼ÒªO©R¥Oµø¬°¤@­Ó®i¶}¥¨¶°(MACRO)ªº«ü¥O¦Ó¤w¡C

8.5  ¹w³]°Ñ¼Æ­È

¡@¡@¹w³]°Ñ¼Æ­È¬OC++ ·s¼W¥[ªº¥\¯à¡C«e­±´¿´£¹L³æ¦â»P±m¦âø¹Ï¨t²Î¤¤µeÂI¹B
§@ªº¤@­P¤Æ®É©Ò§@ªº§ïÅÜ¡C¨Ò¦p»¡¡Gpoint(int x, int y, int color=1)³o­Óø
¹Ï¨ç¼ÆªºÃ±¦W¡C°²¦pµ{¦¡®³©I¥s³æ¦âøÂIªº¤èªk¨Ó©I¥s³o­Ó¨ç¼Æ¡A¥¦¥i¯à¥u¶Ç¤J
®y¼Ð­È¦Ó¤w¡A¦ý¥¦¥i¯à¤£ª¾¹D¨t²Î¥¿³B©ó±m¦â¼Ò¥Ü¤U¡A¦¹®ÉÃC¦âcolor°Ñ¼Æªº¹w
³]­È«K¬£¤W¥Î³õ¤F¡C¦¹¥~¡A¦³¹w³]­Èªº°Ñ¼Æ³Ì¦n³Q©ñ¦b°Ñ¼Æ¦Cªº³Ì«áÀY¡A³o¼Ë¹w
³]°Ñ¼Æ­È¤~¯àµo´§¥¿½Tªº®Ä¥Î¡C

8.6  Âø­n

¡@¡@Ãö©óC++»Pª«¥ó¾É¦V³]­p¸û¦³Ãöªº­«ÂI¡A´N¤¶²Ð¨ì³oÃä¡C§{¶¡Ãö©óC++ªº®Ñ¤£
¤Ö¡A½ÐŪªÌ¦Û¦æ°Ñ¦Ò¡C

¡@¡@¤£¹L¡AÁÙ¬O¦³¨ÇÃö«YC++ªº¦³½ì°ÝÃD·Q´£¥X¨Ó¦P½Ñ§g°Q½×°Q½×¡C¦b¤@¯ë±¡ªp
¤U¡A«ü¬£(assign)ÅܼƭȬO«Ü²³æªº¨Æ¡A¨Ò¦pX=3µ¥µ¥¡A¦ýÃþ§Oªº«ü¬£©O¡H¤@­Ó
«D±`°ò¥»ªº§@ªk¬O¡G­«Âиü¤J¡¨¡×¡¨³o­Ó¹Bºâ¤l¡A·íA=B®É«K±NB®×¨Ò¤¤©Ò¦³ªº¦¨
­û¤@­Ó¤@­Ó·h¨ìA®×¨Ò¤¤¡C½s;¹¤S¬O«ç»ò§@©O¡H¦bC++ 1.2¤¤¡A¹q¸£¬O¥H¤@­Ó¤@
­Óbyte«þ¨©¹L¥h¡A¦ÓC++  2.0«h¬O±Ä«e­±©Ò´£¡A¹E¦¸«þ¨©¦¨­ûªº¤è¦¡¡C´«¥y¸Ü»¡
¡A½s;¹¡u°½°½¦a¡v´À§Ú­Ì¦h­«¸ü¤J¤F¡¨¡×¡¨³o­Ó¹Bºâ¤l¡C1.2¤Î2.0ªº§@ªk¦U¦³
¤£¦P¡A¬°¤°»ò2.0­n§ï©O¡H³o­Ó°ÝÃD¯dµ¹ÅªªÌ¦Û¦æ°Q½×¡C

¡@¡@¥t¤@­Ó¦³½ìªº°ÝÃD¬OÃö©ó½s;¹¥»¨­¡CC++³Ì¦­¨S¦³¿W¥ß½s;¹¡C­n½sĶC++
¥²¶·¥ý¥Î¤@­Ó¡u«eºÝ³B²z¾¹¡v±NC++ªºµ{¦¡½XÂà´«¦¨¢Ñªº­ì©l½X¡A¦A¥æ¥Ñ¢Ñªº½s
;¹¶i¦æ½sĶªº¤u§@¡C³y¦¨³o­Ó¦³½ì²{¶Hªº­ì¦]¬O¦]¬°C++¥»¨­¥i³Qµø¬°¢Ñ»y¨¥
ªº¥¨¶°«ü¥O(MACRO)¼W±jª©¡C¨Ò¦p«e­±©Ò´£¨ìªºtemplate´N¬O¤@­Ó©úÅ㪺¨Ò¤l¡C
¤S¥HÂàĶclass¨ÓÁ¿¡A«eºÝ³B²z¾¹¤]¥u¬O±N¦UÃþ§Oªº®×¨ÒÂন¡u°ß¤@¦WºÙ¡vªºµ²
ºc(struct)¦Ó¤w¡C¦³¿³½ìªºÅªªÌ¥i¥H¦Û¤v³]­p¤@­ÓÂà;¹¡AÀ³¸Ó¤£·|¤ÓÃø¡C

²Ä¤E³¹  µ{¦¡¼g§@ªº­·®æ

¡@¡@¤@²Õ¦nªºµ{¦¡½s½X­·®æ¡A¹ïµ{¦¡®Ä²vªº¼vÅTÁöµM«Ü¤p¡A¦ý¬O¦b©¹«á°£¿ù¡A¥H
¤ÎºûÅ@¶¥¬q¨Ó»¡«o«Ü­«­n¡C¦]¬°µ{¦¡½X¤£¶È¶È¥u¬O­nµ¹¹q¸£°õ¦æ¦Ó¤w¡A¦P¬O¤]¥²
»Ý¬O¥iŪªº¡B©ö©ó¤F¸Ñªº¡C¨Ò¦p»¡µù¸ÑÀ³¸Ó¼g©ú¥Õ¡Aµ{¦¡½XÁY®æ¡BÅܼƩR¦Wµ¥µ¥
¡C³o¨Ç­ì«h¬Û«H¤£½×¬O¥ô¦ó±Ð¬ì®Ñ©Î¬Oµ§ªÌ¥H«eªº¤å³¹¤¤³£´¿¤£¥u¤@¦¸ªº±j½Õ¹L
¡C¦b¥»³¹¤¤µ§ªÌ¤£­n­«¼u³o¨Ç°ª½Õ¡Aµ§ªÌ·Q¤¶²Ð¤@­Ó¨}¦nªº½d¨Ò¡C³o­Ó½d¨Òªº¨Ó
·½¬OBorland¤½¥qªþ¥[¦bTURBO C++/BORLAND C++¤¤ªºCLASSLIB¡AÃþ§Oµ{¦¡®w¡C¬°
¤°»ò­n¥HCLASSLIB¬°¨Ò©O¡Hµ§ªÌ¨Ã¨S¦³°Ó·~·N¹Ï¡A²z¥Ñ¬O¦]¬°¥¦¦³©ú½Tªºª`¸Ñ¡B
¥¿½T¦Ó¨}¦nªº¹B¥Î¿ò¶Çµ¥µ¥¯S½è¡C³o®Mµ{¦¡®wªº¥\¯à¬O´£¨Ñ¤@®M¼Ð·Ç¤Æªº¸ê®Æµ²
ºcÃþ§Oµ¹¤©³]­p®v¡A¨ä¤¤¥]§tSTACK°ïÅ|¡BQUEUE¦î¦C¡BARRAY°}¦C¡BHASHTABLEÂø
´êªí¡BSTRING¦r¦ê......µ¥µ¥Ãþ§O¡C¥H¤UÁ|¨ä¤¤ªº¦r¦êÃþ§O¨Ó°µ§Ú­Ìªº½d¨Ò¡A§Æ±æ
¦U¦ì¯à¥Ñ¥H¤Uªº»¡©ú¤¤¡A¾Ç²ß¤@®M¦nªºª«¥ó³]­pªº­·®æ¡C

9.1  String Ãþ§Oªºµ²ºc

¡@¡@ÁöµMString¦r¦êÃþ§O¤£¬O¤@­Ó¸ê®Æµ²ºc¹ê§@ªºÃþ§O¡A¦Ó¥u¬O¤@­Ó¸É±jªº¸ê®Æ
«¬ºA¡]¦]¬°C++ ¨Ã¤£¤º«Ø¦r¦êªº«¬§O¡^¡A¦ý¤ñ°_¨ä¥¦Ãþ§O¦nÁ¿©öÀ´¡A©Ò¥Hµ§ªÌ¬D
¥¦¥X¨Ó°Q½×¡CStringÃþ§O¥»¨­¥ÑSortableÃþ§O¿ò¶Ç¦Ó¨Ó¡ASortable©Ò¨ãªº¯S©Ê¥B
Áפ£°Q½×¡]¦]¬°Sortable¤]¦³¥¦¦Û¤vªº¥\¥Î¡^¡CStringªº³nÅé¬É­±«Ü²Å¦X­n¨D¡A
¯÷¤À­z¦p¤U¡G

class String:  public Sortable
{
    public: // ¤½¦@°Ï¡A¤]´N¬OStringÃþ§Oªº¬É­±³¡¥÷
                String( const char * );
                String( const String& );
                // ¦h­«¸ü¤J«ØºcªÌ

        virtual ~String();

        virtual int             isEqual( const Object& ) const;
        virtual int             isLessThan( const Object& ) const;
        // ¥H¤W³o¨â­Ó¨ç¼Æ¬O¥Î¨Ó¤ñ¸û¨â¦r¦ê¤j¤p©Î¬Û¦P

        virtual classType       isA() const;
        virtual char            *nameOf() const;
        virtual hashValueType   hashValue() const;
        virtual void            printOn( ostream& ) const;

                String&         operator =( const String& );
                                operator const char *() const;
    private: // ¨p¦³°Ï¡AStringÃþ§O¤¤¨ü«OÅ@¡B¤£³z©úªº¤º³¡¸ê®Æ
                sizeType        len;
                // ¬ö¿ý¦r¦êªºªø«×
                char           *theString;
                // ¦r¦êªº¤º®e³Q¦s¦b³o­Ó¦r¤¸«ü¼Ð¤¤
};
                ªí9.1 StringÃþ§Oªº«Å§i¤º®e¦Cªí


9.1.1  «Øºc»P¯}Ãa¦¨­û (Constructor and Destructor)

¡@¡@Stringªº«Øºc¦¨­û¬O¦h­«¸ü¤Jªº¡A¦]¬°¦bStringªº®×¨Ò²£¥Í®É¡A¤]´N¬O¤@­Ó
¦r¦êÅܼƶ}©l¨ä¥Í©R¶g´Á®É¡AÀ³¸Ó­n«ü©w¤@­Ó¤å¼Æ¦r¦êµ¹³o­Ó®×¨Ò¡C¦U¦ì¥i¥Ñ¦¹
ÁA¸Ñ¤@ÂI¡A´N¬O»¡¤£»Ý­n¯S§O¼g¤@­Ó±Mªù¥Î¨Ó°_©lª«¥óªº¦¨­û¨ç¼Æ¡C¨Ò¦p¦b¦¹³B
StringÃþ§Oªº¥¿½T¥Îªk¬O¡G
String NewString ( "Hello C++" );
¦Ó¤£¥²­n¥Î¨â¶¥¬qªº±Ò©l¤Æ¡C³o¼Ë´N¥¢¥h«ØºcªÌªº·N¸q¤F¡A´N¹³¡G
String NewString ;
NewString.init ( "Hello C++" );   // String.init ¬Oµ§ªÌ°²³]ªº¦¨­û¨ç¼Æ
¨º»ò¡A¬°¤°»ò«ØºcªÌ¬O¨â­Ó¦h­«¸ü¤J¨ç¼Æ©O¡H¦b¤W­±ªº»¡©ú¤¤¡AString®×¨Òªº±Ò
©l³£¬Oª½±µ«ü¬£¤@­Ó¦r¦êµ¹NewStringª«¥ó¡A³o¬O³Ìª½Æ[ªº¥Îªk¡A¦ý¦b¥t¥~¤@ºØ
±¡ªp¤¤§Ú­Ì¤]·|«ü¬£¤@­Ó¤w¸g¦s¦bªºString®×¨Òµ¹¥¦¡A³o«K»Ý­n¥Î¥t¤@­Ó«ØºcªÌ
¤F¡C¨º°£ºcªÌ¦³¤°»ò¥Î©O¡H¸Ü»¡«ØºcªÌ·|¦V¨t²Î­n¨D¤@¶ôªÅ¶¡¨Ó©ñ¸m¦r¦ê¡A¦Ó¦b
³o­Óª«¥ó¦º±¼ªº®É«á¡A«K±o­nÁÙ¦^µ¹¨t²Î¡A·íµM¦pªG§A¦Û¤v³]­p¤@­Ó¬Û¹ï©ó­è¤~
°²©wªºinit¨ç¼Æ¤]¥i¥H¡A¦ýÅýª«¥ó¦Û°Ê¦¬¬B¤£¬O§ó¦n¶Ü¡H±q³o¤@¤p¸`§Ú­Ì¥i¥HÁA
¸Ñ¨ì·í§A³]­p¤@­Óª«¥ó®É¡AÀ³¸Óµ½¥Î«ØºcªÌ»P°£ºcªÌ¡C

9.1.2  «Ê³¬ªº¤º³¡µ²ºc»P¶}©ñªº¬É­±

¡@¡@String¤º³¡¨ì©³¬O«ç¼Ë¤lªº©O¡H¦b¨p¦³°Ï¸Ì­±Àx¦s¤F¨â­ÓÅܼơA¤@­Ó¾ã¼ÆÅÜ
¼Æ´y­z¦r¦ê¸ê®Æªºªø«×¡A¥t¤@­Ó¦r¤¸«ü¼Ð«h«ü¦V«ØºcªÌ©Ò¤À°t¨ÓÀx¦s¦r¦ê¤º®eªº
°O¾ÐªÅ¶¡¡C©Î³\§Aı±o©_©Ç¤F¡A¦pªG§â¦r¦ê¸ê®Æ©ñ¦b¨p¦³°Ï¤º¡A¨º§Ú­Ì¤£´NµLªk
¦s¨ú¦r¦ê¤º®e¤F¶Ü¡H¬Oªº¡Aªº½T¦p¦¹¡A¦ý½Ð¬ÝStringªº¤½¦@°Ï¡A¤]´N¬O¥¦¬É­±ªº
³¡¥÷¡A¦³¨â­Ó¥D­nªº¦¨­û¡A¤@­Ó¬O¦h­«¸ü¤J¹Bºâ¤l"="¡A¥t¤@­Ó¬O¦¨­û¨ç¼Æ
printON()¡A¦h­«¸ü¤J¹Bºâ¤l"="¤¹³\§Ú­Ì«ü¬£¥t¤@­Ó¦r¦ê®×¨Òªº­È¡A´N¹³¬OA=B
³oºØ¤è¦¡¡A³o¼Ë«K±o¥H§ó§ï¦r¦êªº¤º®e¡FprintON()¦¨­û¨ç¼Æ«h¥i¥H±N¦r¦êªº¤º
®e¿é¥X¨ì«ü©wªº¸ê®Æ¬y(stream)¤W¡AÂǦ¹´N¥i¥H¨ú±o¦r¦êªº¤º®e¡C¨º¬°¤°»ò¤£§â
¦r¤¸«ü¼Ðª½±µ©ñ¦b¤½¦@°Ï©O¡H³o´N¬O¥»¤p¸`°Q½×ªº­«ÂI¡C¦b¤T³¹¤§«e´¿´£¨ì¹L¸ê
°TÁôÂ꺰ÝÃD¡A¦b¦¹¦³¤F¤@­Ó«Ü¦nªº½d¨Ò¨Ó¸àÄÀ¡C¦]¬°§Ú­Ì§Æ±æª«¥ó¤w¥~ªºªº¨ç
¼Æ©Î¬Oµ{§Ç¤£¯à°÷ÀH·Nªº§ïÅܪ«¥óªºÄݩʡA¦]¬°ÄݩʭY¨S¦³§@¨â¦nªº«OÅ@¡A¬O«Ü
®e©ö­×§ïªº¡C¦bString¤¤¦³­ÓÅܼƬO¬ö¿ý¦r¦êªø«×¥Îªº¡A¸Õ·Q¥u¬O§ï«K¦r¦ê¤º®e
¡A¦Óªø«×¸ê°T¨S¦³ÀHµÛ§ó·sªº¸Ü¡A¬O¤£¬O·|³y¦¨·N¥~©O¡H¦Ó¥B«Ü©úÅ㪺¡A¦¨­û¨ç
¼Æ¤£®e©ö³Q¯}Ãa¡A¦Ó¥B³z¹L¨ç¼Æ¹B§@¨Ó¦s¨ú¨ç¼Æ¤]¥i¥H¦P®Éºã¨î¸ê®Æ½d³ò¡C¦ýÁÙ
¦³­Ó¦h­«¸ü¤JªºÅ±«¬(cast)¹Bºâ¤l¬O¥Î¨Ó·F¹Àªº©O¡H³o¬O¥Î¨Ó±NStringªºª«¥ó«ü
¼ÐÂà´«¦¨¦r¤¸«ü¼Ð¡A¦Ó¨ä¹ê¥¦©ÒÂà´«¥Xªº¦r¤¸«ü¼Ð¹ê»Ú¤W¬O«ü¦VStringÃþ§O¤¤¦s
©ñ¦r¤¸¸ê®ÆªºÀx¦sªÅ¶¡¡A©Î³\§A·|»¡¡G¦n°Ú¡A¨º§Ú´N¥i¥H¦Û¤vª½±µ­×§ï¦r¦ê¤º®e
¤F¡A¬Oªº§A¥i¥H¡A¤£¹L¥¦¦bµù¸Ñ¤¤«oÁn©ú»¡³Ì¦n¤£­nÂǦ¹­×§ï¦r¦ê¤º®e¡A¦]¦¹³o
¶µ¥\¯àªº¥»·N¶È¥u¨Ñ´£¨ú¸ê®Æ¥Îªº¡C·íµM¡AStringªº¤¶­±¥i¯àÁÙ¤£¬O«Ü»ô¥þ¡A¦ý
³o¤]´£¨Ñ¤F³]­p®v¤@­Ó«Ü¤jªºµo®iªÅ¶¡¡C


9.2  µù¸Ñªº¨Ï¥Î

¡@¡@CLASSLIBµù¸Ñªº¨Ï¥Î¬O§Ú¨£¹L³Ì¶g©µªº¤@ºØ¡C¥¦Âǥѵù¸Ñ±Nµ{¦¡«Ü©úÅ㪺°Ï
¹j¶}¨Ó¡C¥¦¨Ï¥Îµù¸Ñªº³W®æ¦p¤U©Ò¥Ü¡A«Ü­È±oŪªÌ°Ñ¦Ò¡G

¼ÐÀYÀɳ¡¥÷(header files)

// Content ---------------------------------------------
//      ¦b³o­Ó³¡¥÷´y­z³o­Ó¼Ò²Õ¤º§t¦³¨º¨Ç¨ç¼Æ¡BÃþ§O¡BÅܼơBµ²ºcµ¥µ¥
// Description
//      ³o­Ó¼Ò²Õªº¥D­n¥\¯à·§­z
// End --------------------------------------------------

// Interface Dependencies ------------------------------
//      ¤Þ¶i(#include)¨ä¥¦¼Ò²Õªº­ì©l½X
// End Interface Dependencies ---------------------------

// Implementation Dependencies -------------------------
//      ¤Þ¶i¥~¬É¼Ò²Õ©w¸qªº¨ç¼Æ­ì«¬¡A´N¹³#include <stdio.h>¤§Ãþ
// End Implementation Dependencies ----------------------

// Class // ©w¸q¨Ï¥ÎªÌ¸ê®Æ«¬ºA¡A¦pclass¡Bstruct¡Bunion.....
// Description -----------------------------------------
//      ³o³¡¥÷ºò±µ¦b«¬ºA©w¸q§¹²¦«á¡A¸Ô²Ó»¡©ú³o­Ó«¬ºAªº¥Îªk¡A¥\¯à¡C
//      ¨Ã¥B§â¨C­Ó¦¨­û¨ç¼Æ¡B¦¨­ûÅܼƪº·N¸q¥Îªk»¡©ú¥Õ¡C
// End --------------------------------------------------

¦bµ{¦¡½Xªº³¡¥÷

// Function // ©Î¬O member function, constructorµ¥µ¥
// ¥H¤U©w¸q¨ç¼Æ­ì«¬
.......
// Summary ---------------------------------------------
//      ¨ç¼Æ¥\¯àªºÂ²¤¶
// Parameters
//      °Ñ¼Æªº·N¸q
// Return Value
//      ªð¦^­Èªº·N¸q
// Functional Description
//      ¨ç¼Æ¥\¯à¹B§@¸Ô­z
// Remarks
//      °l¥[ªºªþµù¡Aĵ§iµ¥µ¥¸ê°T
// End --------------------------------------------------
¥H¤U´N¬O¨ç¼Æ¥DÅé¤F¡A·íµM¤º®e¤]¸Ó­n¦³µù¸Ñ
..........
// End Function // ¨ç¼Æµ²§ô¡A¥H¤U±µÄò¨ä¥¦¨ç¼Æ¡A¤]¬O¦P¼Ëªº®æ¦¡

³o»ò¸ÔºÉªºµù¸Ñ¦³¤°»ò¥Î©O¡H¦bCLASSLIBªº»¡©ú¤å¥ó´N«Ü¤jÁxªº»¡¡AÃö©ó¦Uª«¥ó
ªº¥Îªk¬Ý­ì©l½X´N·|À´¤F¡C³o°÷©úÅã¤F§a¡A¤@­Ó©öŪªºµ{¦¡½X¥»¨­´N¬O¤@¥÷«Ü¦n
ªº»¡©ú¤å¥ó¡A¤×¨ä¦b³oºØ·¥ºÝ©ú¥Õªºµù¸Ñ¤U¡C

®i±æ»Pµ²»y

¡@¡@°²©w§A¬O¦ìµ{¦¡³]­p®v¡Aª«¥ó¾É¦Vªº³nÅé³]­p¥i¥H´À§A¬Ù¥h¤£¤Ö¤u¤Ò¡A±a¨Ó
§ó¦h«K§Q¡CClipper    5.0¤¤¤]¼W¥[¤Fª«¥ó¾É¦Vªº¥\¯à¡C°O±o¦b¥¦ªº¼s§i¤¤»¡¡G
Clipper¾A¦X§Aªº¥k¸£¡C¦]¬°¦³¤H»{¬°¤Hªº¥ª¸£´xºÞ²z©Êªº«ä¦Ò¡A°¾­«©óÅÞ¿è¡A
¦Ó¥k¸£¥D´x¤Hªº³Ð³y¤O¡A¦]¦¹ÃÀ³N®aªº¥k¸£©¹©¹¨Ó±oµo¹F¡A¶Ç²Îªº³]­p¤è¦¡³Q¨º
¨Ç¤ä«ùª«¥ó¾É¦V½×ªº¤H©áÀ»¬°§Nºz¦Ó¤£ªñ¤H±¡¡C¦ý´N¥Hµ§ªÌ¦Ó¨¥¡A¥Î¶Ç²Î¤èªk¼g
µ{¦¡¦n´X¦~¤F¡A¤¤¬r¤]«Ü²`¤F¡A­Ë¬OµL©Ò¿×¡C¦ý¬O¨Ï¥ÎªÌ©O¡H³]­p®v¦b¦Û¤vÀò±o
¤è«K¤§¾l¬O§_¤]´¿·Q¹L«Ø¥ß¤@­Óª«¥ó¾É¦V¤Æªº¨Ï¥Î¤èªk©Î¨Ï¥ÎªÌ¤¶­±©O¡H

¡@¡@ª«¥ó¾É¦Vµ{¦¡»y¨¥¤]¨Ã¥¼µo®i§¹³Æ¡C°õ¦æ®É´Áªº°ÊºAôµ²¡B¦Û°Ê­l¥Íª«¥óµ¥
µ¥¥\¯à³£¥i¯à³°Äò¥X²{¡Cµ{¦¡½Xªº³Ì¨Î¤Æ¤]¬O§V¤Oªº¥Ø¼Ð¡A¦]¬°»P¶Ç²Î»y¨¥¤ñ¸û
¡AOOPLªº®Ä²v©úÅ㪺°¾§C¡AÅãµM¦b³Ì¨Î¤Æ¤è­±ÁÙ¦³¬Û·í¤jªº§V¤OªÅ¶¡¡C¦¹¥~¡A§Ú
­Ì¤]»Ý­n CASE(Computer-Aided Software Engineering)¨Ó»²§U§Ú­Ì§@ª«¥ó¾É¦V
ªº³]­p¤u§@¡A«Ü©¯¹Bªº¡A³o¨Ç³£¥¿¦bµo®i¤¤¡C

¡@¡@¼¶¼g³o½g¤å³¹±aµ¹µ§ªÌ«Ü¤jªºÀ£¤O¡C¦]¬°²´¨£³\¦h¤H¹ïª«¥ó¾É¦Vªº¬Ýªk¦h¦³
©Ò°¾»á¡A¾ã­Ó¤jÀô¹Òªºµo®i¤]«Ü·î«¬¡A¤j³¡¥÷¤H³£³Qµ{¦¡»y¨¥²oµÛ»ó¤l¨«¡A¦ý«o
«Ü¤Ö°Q½×ª«¥ó¾É¦V³nÅé¤uµ{½×¡C±Ë¤èªk½×¦Ó´NOOPL¡A¯u¬O±Ë¥»¹E¥½ªº¦æ¬°¡A¥B¦¹
¹ú¤£¨£©ó¤µ¤é¡A¥²¬°©ú¤é¤§±w¡I´¼ªÌ«ç¯à¤£§ùº¥¨¾·L©O¡Hµ§ªÌ¹w´ú¥¼¨Ó¤­¨ì¤Q¦~
¶¡¡Aª«¥ó¾É¦V§Þ³N±N·|µo®i¦¨¼ô¡A¦Ó¥²±N¦b¤G¤Q¤@¥@¬ö¦¨¬°¥D¬y¡C

¡@¡@¦b¦¹·PÁ¾G®õ»Ê¥S¦b§Ú¨º¼ã¯óªº½Z¯È¤¤¬D¿ù¡CÁÙ¦³§õ·ç¦Ñ®v¤Î¸ê°TªÀ½ÑÁõ¤]
¦b¦¹¤@¨Ö­PÁ¡C

°Ñ¦Ò¸ê®Æ
1.  Rumbaugh,  Blaha,  Premerlani,  Eddy,  Lorensen. " Object-Oriented
    Modeling And Design ". N.J.: Prentice Hall, 1991
2.  Bjarne  Stroustrup.  " The C++ Programming Language 2nd Edition ".
    Reading, Mass.: Addison-Wesley, 1991
3.  ³nÅé¤uµ{ ²Ä¤Gª©, R.S. Pressman, ³¯¿A­·Ä¶, ªQ±^
4.  C++ µ{¦¡³]­p¤Jªù, ¶À¬ü¥ÉĶ, ®æ­P
5.  Turbo C++ V1.0 CLASSLIB.DOC, Borland International.

Borland C++¡BTurbo C++¡BQuattro Pro¬OBorland¤½¥qªºµù¥U°Ó¼Ð
dBASE III¡BdBASE IV¬O¦w«H¹F¤½¥qªºµù¥U°Ó¼Ð
Objective-C¬OStepstone¤½¥qªºµù¥U°Ó¼Ð
Smalltalk-80¬OParcPlace Systemªºµù¥U°Ó¼Ð

--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
¡Ý ¦ó­®©~ ¡Ý If Winter comes, can Spring be far behind?  - P.B. Shelley.
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --



--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]

--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]


--
* °ê¥ß¤¤¤s¤j¾Ç West BBS * From: 140.117.198.143 [¤w³q¹L»{ÃÒ]



¡ö¦^¦Cªí   ¡ô¤W¤@½g   ¡õ¤U¤@½g