Xem mẫu

  1. Lêi Giíi thiÖu Gií thiÖ Vµo thuë khëi ®Çu sö dông m¸y tÝnh, c¸ch lËp tr×nh lµ lËp tr×nh tuÇn tù. Kho¶ng nh÷ng n¨m 70-80 xu h­íng lËp tr×nh chñ yÕu lµ lËp tr×nh cã cÊu tróc. B­íc sang nh÷ng n¨m 90, ph­¬ng ph¸p lËp tr×nh h­íng ®èi t­îng trë nªn phæ biÕn, ®­îc nh÷ng ng­êi lµm tin häc quan t©m nghiªn cøu nhiÒu. LËp tr×nh h­íng ®èi t­îng trë thµnh ph­¬ng ph¸p lËp tr×nh hiÖn ®¹i v× nã cã nh÷ng ­u ®iÓm nh­: - Sù trõu t­îng ho¸: mçi ®èi t­îng trong ch­¬ng tr×nh lµ mét trõu xuÊt cña mét ®èi t­îng (vËt lý hay phi vËt lý) trong thùc tÕ cña bµi to¸n. §iÒu nµy lµm cho ch­¬ng tr×nh gÉn gòi h¬n víi ng­êi dïng vµ dÔ thiÕt kÕ h¬n ®èi víi ng­êi lËp tr×nh. - Sù ®ãng gãi: Mçi ®èi t­îng lµ mét sù ®ãng gãi c¶ ba mÆt: d÷ liÖu, tr¹ng th¸i vµ thao t¸c, lµm cho ®èi t­îng lµ mét ®¬n nguyªn bÒn v÷ng cho qu¸ tr×nh ph©n tÝch, thiÕt kÕ vµ lËp tr×nh. X©y dùng trªn nguyªn t¾c giÊu kÝn tèi ®a, c«ng khai tèi thiÓu, ®èi t­îng thÝch øng dÔ dµng víi viÖc söa lçi, b¶o tr× hay ph¸t triÓn. - ViÖc sö dông l¹i: §èi t­îng lµ mét ®¬n vÞ “l¾p lÉn”, cã thÓ sö dông l¹i cho bµi to¸n kh¸c. - Sù kÕ thõa ®­îc vËn dông cho c¸c ®èi t­îng lµm tiÕt kiÖm ®­îc m· nguån, ®ång thêi t¹o kh¶ n¨ng cho sù tiÕp nèi vµ më réng ch­¬ng tr×nh. Ngµy nay ®· cã nhiÒu ng«n ng÷ lËp tr×nh hç trî cho ®èi t­îng: - Cã nh÷ng ng«n ng÷ chØ míi dùa vµo ®èi t­îng (cã ®ãng gãi mµ kh«ng cã kÕ thõa), nh­ ADA (83). - Cã nh÷ng ng«n ng÷ h­íng ®èi t­îng thuÇn khiÕt, chØ ®­îc phÐp sö dông ®èi t­îng trong lËp tr×nh, nh­ SMALLTALK, JAVA... - Cã nh÷ng ng«n ng÷ lai, cã thÓ lËp tr×nh h­íng ®èi t­îng mét c¸ch ®Çy ®ñ, mµ còng cã thÓ lËp tr×nh dïng ®èi t­îng. Turbo PASCAL, C++ thuéc lo¹i nµy. Ng«n ng÷ C tõ khi ra ®êi ®· sím kh¼ng ®Þnh ®­îc vÞ thÕ lµ c«ng cô chñ yÕu trong c«ng nghÖ phÇn mÒm. C++ ph¸t triÓn C thµnh ng«n ng÷ h­íng ®èi t­îng ®· thõa kÕ ®­îc c¸c ®iÓm m¹nh cña C vµ thÝch øng víi xu h­íng lËp tr×nh hiÖn ®¹i. Chän C++ ®Ó gi¶ng d¹y còng nh­ lµm c«ng cô ph¸t triÓn phÇn mÒm lµ hîp lý, v× kh«ng nh÷ng nã m¹nh, mµ nã dÔ hiÓu cho nh÷ng ng­êi vèn quen víi lËp tr×nh truyÒn thèng, nay ®i vµo lËp tr×nh h­íng ®èi t­îng. Nh­ vËy chñ ®Ò cña cuèn s¸ch lµ hoµn toµn thÝch hîp víi nhu cÇu gi¶ng d¹y lËp tr×nh ë c¸c tr­êng ®¹i häc, còng nh­ víi nhu cÇu cña nh÷ng lËp tr×nh viªn ®ang hµnh nghÒ. Cuèn s¸ch gåm 6 ch­¬ng vµ 4 phô lôc - Ch­¬ng 1: LËp tr×nh h­íng ®èi t­îng-ph­¬ng ph¸p gi¶i quyÕt bµi to¸n míi - Ch­¬ng 2: Nh÷ng më réng cña C++ - Ch­¬ng 3: §èi t­îng vµ líp - Ch­¬ng 4: §Þnh nghÜa to¸n tö trªn líp - Ch­¬ng 5: Kü thuËt thõa kÕ - Ch­¬ng 6: Khu«n h×nh - Phô lôc 1: C¸c kªnh xuÊt nhËp - Phô lôc 2: Xö lý lçi - Phô lôc 3: Bµi to¸n quan hÖ gia ®×nh - Phô lôc 4: M· ch­¬ng tr×nh bµi to¸n quan hÖ gia ®×nh.
  2. Nh­ vËy cuèn s¸ch bao trïm ®ñ c¸c vÊn ®Ò cÇn ®Ò cËp vµ ®· ®­îc cÊu tróc kh¸ hîp lý. Mçi ch­¬ng ®Òu kÕt thóc bëi phÇn tãm t¾t vµ c¸c bµi tËp, thuËn tiÖn cho viÖc häc vµ thùc hµnh. Néi dung c¸c phÇn ®· ®­îc tr×nh bµy dÔ hiÓu, chuÈn x¸c, cã nhiÒu thÝ dô minh ho¹. Cuèn s¸ch cã thÓ dïng lµm: - Gi¸o tr×nh gi¶ng d¹y vÒ lËp tr×nh h­íng ®èi t­îng ë c¸c tr­êng §¹i häc. - S¸ch tham kh¶o vÒ C++ cho nh÷ng ng­êi lËp tr×nh chuyªn nghiÖp. T«i cho r»ng quyÓn s¸ch lµ rÊt cã Ých vµ hy väng sÏ sím ®­îc xuÊt b¶n ®Ó phôc vô b¹n ®äc. Xin tr©n träng giíi thiÖu víi b¹n ®äc cuèn s¸ch “LËp tr×nh h­íng ®èi t­îng víi C++”, mét sx¶n phÈm lao ®éng khoa häc nghiªm tóc cña tËp thÓ c¸n bé gi¶ng d¹y khona C«ng nghÖ Th«ng tin, §¹i häc B¸ch khoa Hµ néi. Hµ néi, ngµy 4 th¸ng 5 n¨m 1999 GS. NguyÔn V¨n Ba NguyÔ Khoa CNTT, §HBK Hµ néi
  3. Tr­êng §¹i häc B¸ch khoa Hµ néi Khoa C«ng nghÖ Th«ng tin --0-- Lª §¨ng H­ng, T¹ TuÊn Anh, NguyÔn H÷u §øc NguyÔn Thanh Thuû LËp tr×nh h­íng ®èi t­îng tr× ­íng ®èi ­îng víi C++ Hµ néi 1999
  4. LËp tr×nh h­íng ®èi t­îng víi C++ T¸c gi¶: Lª §¨ng H­ng, T¹ TuÊn Anh, NguyÔn H÷u §øc, NguyÔn Thanh Thuû Chñ biªn: NguyÔn Thanh Thuû Biªn tËp: ChÞu tr¸ch nhiÖm xuÊt b¶n: GiÊy phÐp xuÊt b¶n sè:
  5. Tµi liÖu tham kh¶o liÖ kh¶ [1]. Claude Delannoy, Programmer en langage C++, EYROLLES. [2]. Scott Robert Ladd, Turbo C++ Techniques and Applications, M&T Books. [3]. H.M. Deitel & P.J. Deitel, C How to program.
  6. Lêi nãi ®Çu ®Çu Ng«n ng÷ C ®­îc xem lµ mét ng«n ng÷ lËp tr×nh v¹n n¨ng vµ ®­îc sö dông réng r·i ®Ó gi¶i quyÕt c¸c bµi to¸n khoa häc kü thuËt: xö lý ¶nh, ®å ho¹, ghÐp nèi m¸y tÝnh. Ng«n ng÷ C còng lµ mét c«ng cô m¹nh cho phÐp x©y dùng c¸c ch­¬ng tr×nh hÖ thèng nh­ hÖ ®iÒu hµnh UNIX, c¸c ch­¬ng tr×nh dÞch vµ c¸c c«ng cô tiÖn Ých kh¸c. §iÓm m¹nh ®¸ng chó ý cña ng«n ng÷ C chÝnh lµ sù mÒm dÎo vµ kh¶ n¨ng trao chuyÓn cao gi÷a c¸c hÖ thèng tÝnh to¸n. Trªn c¬ së ng«n ng÷ C ng­êi ta ®· tiÕn hµnh x©y dùng mét phiªn b¶n h­íng ®èi t­îng gäi lµ C++ nh»m thõa kÕ c¸c ®iÓm m¹nh vèn cã cña C. ViÖc t×m hiÓu ng«n ng÷ C++ ®ang lµ mét xu thÕ ®­îc quan t©m bëi c¸c nhµ lËp tr×nh nh»m ph¸t triÓn c¸c phÇn mÒm øng dông ë ViÖt nam. HiÖn nay, trªn thÞ tr­êng ®· cã mét sè tµi liÖu tham kh¶o giíi thiÖu vÒ C++. Tuy nhiªn, c¸c tµi liÖu nµy chØ míi dõng l¹i ë møc giíi thiÖu vµ m« t¶ c¸c khÝa c¹nh có ph¸p cña ng«n ng÷. Trong cuèn s¸ch nµy, nh÷ng tr×nh bµy vÒ c¸c khÝa c¹nh lËp tr×nh h­íng ®èi t­îng cã tÝnh s­ ph¹m cao, ®i tõ møc ®é dÔ ®Õn khã nh»m gióp ng­êi ®äc cã thÓ lÜnh héi c¸c kiÕn thøc c¬ b¶n kh«ng chØ lÖ thuéc vµo mét ng«n ng÷ lËp tr×nh cô thÓ nh­ C++ ®· ®­îc quan t©m thÝch ®¸ng. Trong ch­¬ng tr×nh gi¶ng d¹y cö nh©n, kü s­ chuyªn ngµnh C«ng nghÖ Th«ng tin, ng«n ng÷ lËp tr×nh C++ ®­îc chän ®Ó minh ho¹ cho lËp tr×nh h­íng ®èi t­îng nhê c¸c ­u ®iÓm trong kh¶ n¨ng biÓu diÔn d÷ liÖu vµ thÓ hiÖn c¸c khÝa c¹nh lËp tr×nh. ViÖc n¾m b¾t c¸c khÝa c¹nh ®éc ®¸o cña ng«n ng÷ vµ lµm chñ c¸c yÕu tè c¬ b¶n khi lËp tr×nh trong ng«n ng÷ C++ sÏ lµ c¬ së ®Ó n©ng cao hiÓu biÕt vµ kü n¨ng lËp tr×nh b»ng ng«n ng÷ JAVA, mét c«ng cô kh«ng thÓ thiÕu ®­îc trong viÖc ph¸t triÓn c¸c øng dông trªn m¹ng. Chóng t«i biªn so¹n tµi liÖu nµy víi hy väng r»ng nã sÏ rÊt bæ Ých vµ cÇn thiÕt ®èi víi c¸c sinh viªn cao ®¼ng vµ ®¹i häc kh«ng chØ trong chuyªn ngµnh C«ng nghÖ Th«ng tin mµ c¶ c¸c ngµnh kü thuËt, c«ng nghÖ kh¸c nh­ §iÖn tö ViÔn Th«ng, Tù ®éng ho¸ ®iÒu khiÓn v.v... Khi biªn so¹n, chóng t«i ®· cè g¾ng ®­a ra mét bè côc cña cuèn s¸ch sao cho b¸m s¸t ®­îc c¸c néi dung c¬ b¶n xung quanh c¸c khÝa c¹nh có ph¸p cña ng«n ng÷ vµ nh÷ng kü n¨ng lËp tr×nh trªn ®ã. C¸c kiÕn thøc ®­îc tr×nh bµy c« ®äng nh»m gióp ng­êi häc vµ tù häc dÔ tiÕp thu c¸c kiÕn thøc ®­îc truyÒn thô. Trong qu¸ tr×nh biªn so¹n cuèn s¸ch, chóng t«i ®· nhËn ®­îc nhiÒu ý kiÕn ®ãng gãp quÝ b¸u cña GS. NguyÔn V¨n Ba, GS. Vò Lôc, GS §ç Xu©n L«i, Ths. §ç V¨n Uy vµ c¸c thÇy c« trong khoa C«ng nghÖ Th«ng tin, tr­êng §¹i häc B¸ch khoa Hµ néi. Chóng t«i xin ch©n thµnh c¸m ¬n sù gióp ®ì quÝ gi¸ ®ã. Nh©n dÞp nµy chóng t«i còng xin bµy tá sù biÕt ¬n tíi GS NguyÔn Thóc H¶i vµ Ban chñ nhiÖm khoa C«ng nghÖ Th«ng tin vµ Nhµ xuÊt b¶n Gi¸o dôc ®· t¹o ®iÒu kiÖn vËt chÊt vµ tinh thÇn ®Ó cuèn s¸ch sím ra m¾t b¹n ®äc. Tuy ®· hÕt søc cè g¾ng nh­ng chóng t«i nghÜ r»ng sÏ kh«ng tr¸nh khái nh÷ng thiÕu sãt, rÊt mong nhËn ®­îc c¸c ý kiÕn ®ãng gãp ®Ó n©ng cao chÊt l­îng trong c¸c lÇn t¸i b¶n sau. Hµ néi, ngµy 1 th¸ng 5 n¨m 1999 C¸c t¸c gi¶ gi¶