VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ12²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡up¡¡to¡¡you¡¡and¡¡your¡¡team¡¡members¡£¡¡But¡¡you¡¡will¡¡need¡¡to¡¡organize¡¡your¡¡thoughts¡¡and¡¡have¡¡a¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡structured¡¡munication¡¡technique¡£¡¡If¡¡you¡¡don¡¯t£»¡¡your¡¡software¡¡will¡¡be¡¡late£»¡¡buggy£»¡¡too¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡expensive£»¡¡or¡¡inplete¡£¡¡It¡¡is¡¡not¡¡an¡¡understatement¡¡to¡¡say¡¡that¡¡organization¡¡is¡¡half¡¡the¡¡battle¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡this¡¡chapter£»¡¡I¡¡am¡¡going¡¡to¡¡give¡¡you¡¡a¡¡taste¡¡of¡¡a¡¡simplified¡¡structured¡¡development¡¡tech
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡nique£»¡¡so¡¡that¡¡you¡¡at¡¡least¡¡have¡¡an¡¡idea¡¡of¡¡how¡¡structured¡¡development¡¡works¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Organizing¡¡the¡¡Calculator¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡begin¡¡this¡¡chapter¡¯s¡¡example£»¡¡get¡¡a¡¡piece¡¡of¡¡paper¡¡and¡¡a¡¡pen¡¡or¡¡pencil£»¡¡or¡¡you¡¡can¡¡use¡¡a¡¡tablet¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PC¡¡for¡¡writing£»¡¡if¡¡you¡¡have¡¡one¡£¡¡Next£»¡¡in¡¡the¡¡center¡¡of¡¡the¡¡paper¡¡£¨or¡¡virtual¡¡paper£©£»¡¡draw¡¡a¡¡circle¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡in¡¡it¡¡write¡¡the¡¡word¡¡¡¡Calculator¡£¡¡Now¡¡stop¡¡and¡¡think¡¡about¡¡what¡¡a¡¡calculator¡¡means¡¡with¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡respect¡¡to¡¡the¡¡software¡¡that¡¡you¡¡will¡¡be¡¡writing¡£¡¡Write¡¡those¡¡ideas¡¡on¡¡the¡¡paper¡¡surrounding¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡circle¡£¡¡My¡¡thoughts¡¡are¡¡shown¡¡in¡¡Figure¡¡2¡1¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Your¡¡thoughts¡¡and¡¡my¡¡thoughts¡¡may¡¡or¡¡may¡¡not¡¡be¡¡the¡¡same£»¡¡but¡¡what¡¡our¡¡results¡¡will¡¡have¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡in¡¡mon¡¡is¡¡a¡¡hodgepodge¡¡of¡¡ideas¡¡everywhere¡£¡¡Figure¡¡2¡1¡¡illustrates¡¡that¡¡one¡¡of¡¡the¡¡biggest¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡problems¡¡software¡¡developers¡¡face¡¡is¡¡lack¡¡of¡¡focus¡¡and¡¡organization¡£¡¡It¡¡is¡¡not¡¡that¡¡developers¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡can¡¯t¡¡focus¡¡or¡¡organize£»¡¡but¡¡that¡¡developers¡¡are¡¡bombarded¡¡by¡¡information£»¡¡and¡¡it¡¡is¡¡a¡¡Herculean¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡task¡¡to¡¡keep¡¡track¡¡of£»¡¡let¡¡alone¡¡organize£»¡¡all¡¡of¡¡that¡¡information¡£¡¡But¡¡software¡¡projects¡¡that¡¡are¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡successful¡¡must¡¡remain¡¡focused¡¡and¡¡organized¡£¡¡Therefore£»¡¡the¡¡next¡¡step¡¡is¡¡to¡¡focus¡¡and¡¡organize¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡your¡¡thoughts£»¡¡which¡¡results¡¡in¡¡something¡¡like¡¡Figure¡¡2¡2¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡Figure¡¡2¡2£»¡¡the¡¡ideas¡¡are¡¡organized¡¡by¡¡classification¡£¡¡As¡¡this¡¡is¡¡book¡¡is¡¡about¡¡a¡¡program
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ming¡¡language£»¡¡the¡¡only¡¡relevant¡¡ideas¡¡are¡¡those¡¡related¡¡to¡¡source¡¡code¡¡functionality¡£¡¡Roughly¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡speaking£»¡¡in¡¡the¡¡source¡¡code¡¡category£»¡¡each¡¡thought¡¡corresponds¡¡to¡¡a¡¡feature¡¡to¡¡implement¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡49¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡2¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡¡£¡¡N¡¡E¡¡T¡¡¡¡N¡¡U¡¡M¡¡B¡¡E¡¡R¡¡¡¡¡¡AN¡¡D¡¡¡¡¡¡V¡¡A¡¡L¡¡U¡¡E¡¡¡¡¡¡T¡¡Y¡¡P¡¡E¡¡S¡¡¡¡27¡¡
Figure¡¡2¡1¡£¡¡Brainstorming¡¡what¡¡the¡¡calculator¡¡application¡¡represents¡¡
Figure¡¡2¡2¡£¡¡Focused¡¡and¡¡organized¡¡brainstorming¡¡
Focusing¡¡the¡¡Calculator¡¡
To¡¡implement¡¡a¡¡feature£»¡¡you¡¡need¡¡source¡¡code£»¡¡which¡¡means¡¡a¡¡file£»¡¡project£»¡¡and¡¡other¡¡program
ming¡¡techniques¡£¡¡The¡¡following¡¡two¡¡levels¡¡of¡¡organization¡¡are¡¡defined¡¡in¡¡Visual¡¡Basic£º¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡File¡¡level£º¡¡At¡¡the¡¡file¡¡level£»¡¡you¡¡are¡¡organizing¡¡what¡¡kinds¡¡of¡¡projects¡¡and¡¡solutions¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡will¡¡be¡¡creating¡£¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Source¡¡code¡¡level£º¡¡At¡¡the¡¡source¡¡code¡¡level£»¡¡you¡¡are¡¡organizing¡¡the¡¡namespaces£»¡¡modules£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡class¡¡names£»¡¡and¡¡other¡¡identifiers¡¡that¡¡are¡¡referenced¡¡throughout¡¡the¡¡source¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡50¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
28¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡2¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡¡£¡¡N¡¡E¡¡T¡¡¡¡N¡¡U¡¡M¡¡B¡¡E¡¡R¡¡¡¡¡¡A¡¡N¡¡D¡¡¡¡¡¡V¡¡A¡¡L¡¡U¡¡E¡¡¡¡¡¡T¡¡Y¡¡P¡¡E¡¡S¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡the¡¡most¡¡part£»¡¡Visual¡¡Basic¡¡developers¡¡do¡¡not¡¡concern¡¡themselves¡¡too¡¡much¡¡with¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡file¡¡organization¡£¡¡A¡¡mon¡¡practice¡¡is¡¡to¡¡consider¡¡a¡¡class¡¡or¡¡module¡¡as¡¡a¡¡single¡¡file¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡implementing¡¡an¡¡application£»¡¡you¡¡will¡¡begin¡¡by¡¡deciding¡¡whether¡¡you¡¡will¡¡use¡¡a¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡console¡¡application£»¡¡a¡¡Windows¡¡application£»¡¡or¡¡a¡¡class¡¡library¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡the¡¡calculator¡¡were¡¡a¡¡Windows¡¡application£»¡¡it¡¡could¡¡look¡¡like¡¡Figure¡¡2¡3¡£¡¡A¡¡calculator¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡implemented¡¡as¡¡a¡¡Windows¡¡application¡¡allows¡¡users¡¡to¡¡perform¡¡calculations¡¡by¡¡clicking¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡appropriate¡¡buttons¡£¡¡For¡¡example£»¡¡to¡¡add¡¡two¡¡numbers£»¡¡the¡¡user¡¡clicks¡¡the¡¡appropriate¡¡buttons¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡key¡¡in¡¡the¡¡first¡¡number£»¡¡then¡¡an¡¡operation£»¡¡then¡¡the¡¡second¡¡number£»¡¡and¡¡finally£»¡¡the¡¡equal¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡sign¡¡to¡¡perform¡¡the¡¡calculation¡£¡¡The¡¡equal¡¡sign¡¡is¡¡a¡¡signal¡¡to¡¡the¡¡calculator¡¡application¡¡to¡¡process¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡data¡¡that¡¡has¡¡been¡¡entered¡¡and¡¡generate¡¡a¡¡result¡£¡¡The¡¡text¡¡box¡¡would¡¡display¡¡the¡¡results¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡2¡3¡£¡¡A¡¡calculator¡¡implemented¡¡as¡¡a¡¡Windows¡¡application¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡second¡¡choice¡¡is¡¡to¡¡implement¡¡a¡¡calculator¡¡using¡¡a¡¡console¡¡application£»¡¡where¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡numbers¡¡are¡¡entered¡¡as¡¡text£»¡¡as¡¡illustrated¡¡in¡¡Figure¡¡2¡4¡£¡¡The¡¡calculator¡¡does¡¡not¡¡expect¡¡users¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡click¡¡buttons£»¡¡rather£»¡¡they¡¡press¡¡the¡¡appropriate¡¡keyboard¡¡keys¡¡to¡¡enter¡¡the¡¡appropriate¡¡number¡¡at¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡appropriate¡¡time¡¡with¡¡the¡¡appropriate¡¡operation¡£¡¡Typically£»¡¡an¡¡Enter¡¡key¡¡will¡¡serve¡¡as¡¡an¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡equal¡¡sign¡¡button¡¡and¡¡perform¡¡a¡¡calculation£»¡¡which¡¡is¡¡output¡¡to¡¡the¡¡console¡£¡¡Once¡¡one¡¡calcula
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tion¡¡has¡¡pleted£»¡¡the¡¡cycle¡¡starts¡¡again¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡you¡¡had¡¡to¡¡choose¡¡between¡¡a¡¡Windows¡¡or¡¡console¡¡application¡¡for¡¡the¡¡calculator£»¡¡you¡¡would¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡choose¡¡the¡¡Windows¡¡application¡¡because¡¡it¡¡looks¡¡better¡¡and¡¡is¡¡easier¡¡to¡¡use¡£¡¡In¡¡the¡¡focused¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡thoughts¡¡of¡¡Figure¡¡2¡2£»¡¡ease¡¡of¡¡use¡¡was¡¡not¡¡defined¡¡as¡¡a¡¡feature¡£¡¡Should¡¡the¡¡user¡¡interface¡¡type¡¡have¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡been¡¡a¡¡feature£¿¡¡Normally£»¡¡yes¡¡it¡¡should¡¡be¡¡a¡¡feature£»¡¡but¡¡for¡¡the¡¡scope¡¡of¡¡this¡¡chapter£»¡¡it¡¡is¡¡not¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡user¡¡interaction¡¡between¡¡the¡¡two¡¡types¡¡of¡¡applications¡¡is¡¡dramatically¡¡different£»¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡implies¡¡two¡¡different¡¡programs£»¡¡even¡¡though¡¡they¡¡implement¡¡the¡¡same¡¡features¡£¡¡The¡¡focus¡¡is¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡not¡¡on¡¡creating¡¡a¡¡particular¡¡program¡¡type£»¡¡but¡¡on¡¡the¡¡overall¡¡programming¡¡structure¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡51¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡2¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡¡£¡¡N¡¡E¡¡T¡¡¡¡N¡¡U¡¡M¡¡B¡¡E¡¡R¡¡¡¡¡¡AN¡¡D¡¡¡¡¡¡V¡¡A¡¡L¡¡U¡¡E¡¡¡¡¡¡T¡¡Y¡¡P¡¡E¡¡S¡¡¡¡29¡¡
Figure¡¡2¡4¡£¡¡A¡¡calculator¡¡implemented¡¡as¡¡a¡¡console¡¡application¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡step¡¡back¡¡and¡¡think¡¡about¡¡this¡¡abstractly¡£¡¡You¡¡are¡¡a¡¡programmer¡¡and¡¡have¡¡been¡¡¡¡
charged¡¡with¡¡the¡¡task¡¡of¡¡implementing¡¡the¡¡calculator¡¡for¡¡both¡¡user¡¡interfaces¡£¡¡Again£»¡¡thinking¡¡¡¡
abstractly£»¡¡would¡¡you¡¡implement¡¡all¡¡the¡¡functionality¡¡twice£»¡¡or¡¡would¡¡you¡¡try¡¡to¡¡think¡¡about¡¡¡¡
which¡¡parts¡¡of¡¡the¡¡calculator¡¡could¡¡be¡¡reused¡¡for¡¡both¡¡user¡¡interfaces£¿¡¡Most¡¡likely£»¡¡your¡¡answer¡¡¡¡
will¡¡be¡¡that¡¡you¡¡want¡¡to¡¡reuse¡¡parts¡¡of¡¡the¡¡calculator¡¡so¡¡that¡¡you¡¡have¡¡less¡¡work¡£¡¡But¡¡you¡¡also¡¡want¡¡¡¡
to¡¡reuse¡¡parts¡¡so¡¡that¡¡you¡¡can¡¡avoid¡¡additional¡¡maintenance¡¡and¡¡program¡¡extension¡¡problems¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡So£»¡¡for¡¡software¡¡development£»¡¡you¡¡need¡¡to¡¡think¡¡of¡¡the¡¡software¡¡as¡¡pieces¡¡that¡¡are¡¡assem
bled¡¡into¡¡a¡¡program¡£¡¡Some¡¡pieces¡¡can¡¡be¡¡reused£»¡¡and¡¡other¡¡pieces¡¡cannot¡¡be¡¡reused¡£¡¡Therefore£»¡¡¡¡
think¡¡of¡¡the¡¡calculator¡¡application¡¡as¡¡two¡¡pieces£º¡¡the¡¡user¡¡interface¡¡and¡¡the¡¡piece¡¡that¡¡performs¡¡¡¡
calculations¡¡based¡¡on¡¡data¡¡delivered¡¡by¡¡the¡¡user¡¡interface¡£¡¡From¡¡an¡¡organizational¡¡perspective£»¡¡¡¡
or¡¡in¡¡developer¡¡lingo£»¡¡from¡¡an¡¡architectural¡¡perspective£»¡¡the¡¡calculator¡¡pieces¡¡would¡¡be¡¡arranged¡¡as¡¡¡¡
shown¡¡in¡¡Figure¡¡2¡5¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡The¡¡individual¡¡pieces¡¡in¡¡Figure¡¡2¡5¡¡are¡¡called¡¡¡¡ponents¡£¡¡£¨Some¡¡individuals¡¡might¡¡even¡¡¡¡
call¡¡the¡¡pieces¡¡modules£»¡¡but¡¡I¡¡personally¡¡prefer¡¡the¡¡term¡¡ponents£»¡¡and¡¡in¡¡a¡¡Visual¡¡Basic¡¡¡¡
book£»¡¡calling¡¡them¡¡modules¡¡could¡¡lead¡¡to¡¡confusion£©¡£¡¡The¡¡ponents¡¡are¡¡arranged¡¡from¡¡the¡¡¡¡
lower¡level¡¡functionality¡¡at¡¡the¡¡bottom¡¡of¡¡the¡¡picture¡¡to¡¡the¡¡higher¡level¡¡functionality¡¡near¡¡the¡¡¡¡
top¡¡of¡¡the¡¡picture¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Each¡¡ponent¡¡fulfills¡¡a¡¡particular¡¡task£»¡¡and¡¡the¡¡higher¡level¡¡ponents¡¡use¡¡those¡¡tasks¡¡¡¡
implemented¡¡at¡¡a¡¡lower¡¡level¡£¡¡The¡¡idea¡¡is¡¡that¡¡each¡¡level¡¡is¡¡responsible¡¡for¡¡certain¡¡functionality£»¡¡¡¡
and¡¡other¡¡levels¡¡do¡¡not¡¡duplicate¡¡efforts¡¡by¡¡reimplementing¡¡certain¡¡functionality¡£¡¡The¡¡higher
level¡¡functionality¡¡does¡¡have¡¡a¡¡lower¡level¡¡dependency£»¡¡but¡¡the¡¡lower¡¡level¡¡does¡¡not¡¡have¡¡a¡¡¡¡
higher¡level¡¡dependency¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡52¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
30¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡2¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡¡£¡¡N¡¡E¡¡T¡¡¡¡N¡¡U¡¡M¡¡B¡¡E¡¡R¡¡¡¡¡¡A¡¡N¡¡D¡¡¡¡¡¡V¡¡A¡¡L¡¡U¡¡E¡¡¡¡¡¡T¡¡Y¡¡P¡¡E¡¡S¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡2¡5¡£¡¡Arrangement¡¡of¡¡calculator¡¡pieces¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Applications¡¡are¡¡realized¡¡using¡¡either¡¡top¡down¡¡or¡¡bottom¡up¡¡architecture¡£¡¡A¡¡top¡down¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡methodology¡¡means¡¡creating¡¡the¡¡higher¡level¡¡ponents¡¡and¡¡then¡¡implementing¡¡the¡¡lower
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡level¡¡ponents¡¡when¡¡needed¡£¡¡In¡¡contrast£»¡¡a¡¡bottom¡up¡¡methodology¡¡means¡¡creating¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bottom¡¡ponents¡¡first¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A¡¡bottom¡up¡¡approach¡¡is¡¡useful¡¡when¡¡you¡¡know¡¡clearly¡¡which¡¡features¡¡need¡¡to¡¡be¡¡imple
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mented¡£¡¡A¡¡top¡down¡¡approach¡¡is¡¡better¡¡when¡¡you¡¡have¡¡a¡¡rough¡¡idea¡¡of¡¡what¡¡features¡¡need¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡be¡¡implemented£»¡¡but¡¡don¡¯t¡¡want¡¡to¡¡stray¡¡too¡¡far¡¡from¡¡the¡¡goal¡¡of¡¡the¡¡application¡£¡¡The¡¡focus¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this¡¡chapter¡¡is¡¡to¡¡develop¡¡the¡¡Calculator¡¡class¡¡library£»¡¡shown¡¡at¡¡the¡¡bottom¡¡of¡¡Figure¡¡2¡5£»¡¡so¡¡we¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡will¡¡take¡¡the¡¡bottom¡up¡¡approach¡¡in¡¡this¡¡chapter¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Implementing¡¡the¡¡Class¡¡Library¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡creation¡¡of¡¡a¡¡class¡¡library¡¡is¡¡a¡¡form¡¡of¡¡file¡¡organization¡£¡¡The¡¡next¡¡step¡¡is¡¡to¡¡create¡¡some¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡source¡¡code¡¡for¡¡the¡¡class¡¡library¡£¡¡The¡¡source¡¡code¡¡is¡¡implemented¡¡in¡¡two¡¡steps£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Define¡¡the¡¡class¡¡and¡¡methods¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Implement¡¡the¡¡methods¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡One¡¡of¡¡the¡¡biggest¡¡problems¡¡when¡¡learning¡¡a¡¡new¡¡language¡¡is¡¡understanding¡¡what¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡language¡¡can¡¡and¡¡cannot¡¡do¡£¡¡You¡¡can¡¯t¡¡write¡¡source¡¡code¡¡that¡¡the¡¡language¡¡does¡¡not¡¡under
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡stand¡£¡¡So¡¡it¡¡is¡¡extremely¡¡important¡¡to¡¡know¡¡the¡¡programming¡¡language£»¡¡because¡¡it¡¡determines¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡how¡¡your¡¡thoughts¡¡will¡¡be¡¡structured¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡53¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡2¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡¡£¡¡N¡¡E¡¡T¡¡¡¡N¡¡U¡¡M¡¡B¡¡E¡¡R¡¡¡¡¡¡AN¡¡D¡¡¡¡¡¡V¡¡A¡¡L¡¡U¡¡E¡¡¡¡¡¡T¡¡Y¡¡P¡¡E¡¡S¡¡¡¡31¡¡
¡¡¡¡¡¡¡¡¡¡You¡¡will¡¡write¡¡two¡¡types¡¡of¡¡source¡¡code£º¡¡source¡¡code¡¡that¡¡organizes¡¡and¡¡source¡¡code¡¡that¡¡¡¡
does¡¡something¡£¡¡Organizational¡¡source¡¡code¡¡is¡¡like¡¡a¡¡filing¡¡system¡¡with¡¡folders¡£¡¡Source¡¡code¡¡¡¡
that¡¡does¡¡something¡¡is¡¡like¡¡a¡¡folder¡¡with¡¡stuff¡¡in¡¡it¡£¡¡When¡¡you¡¡are¡¡creating¡¡the¡¡filing¡¡