ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
µÚÈýµç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ11²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 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¡¡system£»¡¡you¡¡¡¡

don¡¯t¡¡care¡¡about¡¡the¡¡contents¡¡of¡¡the¡¡folder¡£¡¡And¡¡when¡¡you¡¡fill¡¡the¡¡folder£»¡¡you¡¡generally¡¡don¡¯t¡¡¡¡

care¡¡about¡¡the¡¡filing¡¡system¡£¡¡

¡¡¡¡¡¡¡¡¡¡Modules£»¡¡classes£»¡¡namespaces£»¡¡and¡¡methods¡¡are¡¡all¡¡concepts¡¡used¡¡to¡¡organize¡¡source¡¡¡¡

code¡£¡¡A¡¡method¡¡is¡¡filled¡¡with¡¡source¡¡code¡¡and¡¡does¡¡something¡¡like¡¡add¡¡numbers¡¡or¡¡create¡¡a¡¡¡¡

textual¡¡string¡£¡¡

¡¡¡¡¡¡¡¡¡¡One¡¡of¡¡the¡¡most¡¡mon¡¡things¡¡that¡¡you¡¡will¡¡do¡¡when¡¡filling¡¡a¡¡method¡¡with¡¡source¡¡code¡¡is¡¡¡¡

reference¡¡other¡¡pieces¡¡of¡¡organized¡¡source¡¡code¡£¡¡Think¡¡of¡¡referencing¡¡as¡¡putting¡¡a¡¡sticky¡¡note¡¡¡¡

in¡¡a¡¡folder¡¡with¡¡the¡¡text£»¡¡¡°Please¡¡also¡¡look¡¡in¡¡folder¡¡B¡£¡±¡¡¡¡

¡¡¡¡¡¡¡¡¡¡Following¡¡is¡¡a¡¡piece¡¡of¡¡source¡¡code¡¡that¡¡is¡¡100£¥¡¡organizational¡¡and¡¡does¡¡nothing¡£¡¡



Namespace¡¡MyMainTypes¡¡¡¡

¡¡¡¡¡¡Public¡¡Class¡¡AType¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Shared¡¡Sub¡¡DoSomething£¨£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡

¡¡¡¡¡¡¡¡End¡¡Class¡¡

End¡¡Namespace¡¡



Module¡¡AnotherType¡¡¡¡

¡¡¡¡¡¡¡¡Public¡¡Function¡¡DoSomething£¨£©¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡End¡¡Function¡¡

End¡¡Module¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡source¡¡code¡¡has¡¡three¡¡levels
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡