intTypePromotion=1
ADSENSE

Giáo trình Lập trình hướng đối tượng (156 trang)

Chia sẻ: BDBC BDBC | Ngày: | Loại File: PDF | Số trang:156

83
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giáo trình Lập trình hướng đối tượng gồm có 6 chương vơi những nội dung chính sau: Các khái niệm cơ sở của lập trình hướng đối tượng, các mở rộng của ngôn ngữ C++, lớp, toán tử tải bội, kế thừa, khuôn hình. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Lập trình hướng đối tượng (156 trang)

  1. CH−¬NG 1 C¸C KH¸I NIÖM C¬ Së cña LËP TR×NH H−íNG §èI T−îNG Ch−¬ng 1 tr×nh bµy nh÷ng vÊn ®Ò sau: ¾ Th¶o luËn vÒ c¸ch tiÕp cËn h−íng ®èi t−îng, nh÷ng nh−îc ®iÓm cña lËp tr×nh truyÒn thèng vµ c¸c ®Æc ®iÓm cña lËp tr×nh h−íng ®èi t−îng. ¾ C¸c kh¸i niÖm c¬ së cña ph−¬ng ph¸p h−íng ®èi t−îng: • §èi t−îng • Líp • Trõu t−îng hãa d÷ liÖu vµ bao gãi th«ng tin • KÕ thõa • T−¬ng øng béi • Liªn kÕt ®éng • TruyÒn th«ng b¸o ¾ C¸c b−íc cÇn thiÕt ®Ó thiÕt kÕ ch−¬ng tr×nh theo h−íng ®èi t−îng ¾ C¸c −u ®iÓm cña lËp tr×nh h−íng ®èi t−îng ¾ C¸c ng«n ng÷ h−íng ®èi t−îng ¾ Mét sè øng dông cña lËp tr×nh h−íng ®èi t−îng 1.1. Giíi thiÖu 1.1.1. TiÕp cËn h−íng ®èi t−îng Trong thÕ giíi thùc, chung quanh chóng ta lµ nh÷ng ®èi t−îng, ®ã lµ c¸c thùc thÓ cã mèi quan hÖ víi nhau. VÝ dô c¸c phßng trong mét c«ng ty kinh doanh ®−îc xem nh− nh÷ng ®èi t−îng. C¸c phßng ë ®©y cã thÓ lµ: phßng qu¶n lý, phßng b¸n hµng, phßng kÕ to¸n, phßng tiÕp thÞ,... Mçi phßng ngoµi nh÷ng c¸n bé ®¶m nhiÖm nh÷ng c«ng viÖc cô thÓ, cßn cã nh÷ng d÷ liÖu riªng nh− th«ng tin vÒ nh©n viªn, doanh sè b¸n hµng, hoÆc c¸c d÷ liÖu kh¸c cã liªn quan ®Õn bé phËn ®ã. ViÖc ph©n chia c¸c phßng chøc n¨ng trong c«ng ty sÏ t¹o ®iÒu kiÖn dÔ dµng cho viÖc qu¶n lý c¸c ho¹t ®éng. Mçi nh©n viªn trong phßng sÏ ®iÒu khiÓn vµ xö lý d÷ liÖu cña phßng ®ã. VÝ dô phßng kÕ to¸n phô tr¸ch vÒ l−¬ng bæng nh©n viªn trong c«ng ty. NÕu b¹n ®ang ë bé phËn tiÕp thÞ vµ cÇn t×m th«ng tin chi tiÕt vÒ l−¬ng cña ®¬n vÞ m×nh th× sÏ gëi yªu cÇu vÒ phßng kÕ to¸n. Víi c¸ch lµm nµy b¹n ®−îc ®¶m b¶o lµ chØ cã nh©n viªn cña bé phËn kÕ to¸n ®−îc quyÒn truy cËp 1
  2. d÷ liÖu vµ cung cÊp th«ng tin cho b¹n. §iÒu nµy còng cho thÊy r»ng, kh«ng cã ng−êi nµo thuéc bé phËn kh¸c cã thÓ truy cËp vµ thay ®æi d÷ liÖu cña bé phËn kÕ to¸n. Kh¸i niÖm nh− thÕ vÒ ®èi t−îng hÇu nh− cã thÓ ®−îc më réng ®èi víi mäi lÜnh vùc trong ®êi sèng x· héi vµ h¬n n÷a - ®èi víi viÖc tæ chøc ch−¬ng tr×nh. Mäi øng dông cã thÓ ®−îc ®Þnh nghÜa nh− mét tËp c¸c thùc thÓ - hoÆc c¸c ®èi t−îng, sao cho qu¸ tr×nh t¸i t¹o nh÷ng suy nghÜa cña chóng ta lµ gÇn s¸t nhÊt vÒ thÕ giíi thùc. Trong phÇn tiÕp theo chóng ta sÏ xem xÐt ph−¬ng ph¸p lËp tr×nh truyÒn thèng ®Ó tõ ®ã thÊy r»ng v× sao chóng ta cÇn chuyÓn sang ph−¬ng ph¸p lËp tr×nh h−íng ®èi t−îng. 1.1.2. Nh÷ng nh−îc ®iÓm cña lËp tr×nh h−íng thñ tôc C¸ch tiÕp cËn lËp tr×nh truyÒn thèng lµ lËp tr×nh h−íng thñ tôc (LTHTT). Theo c¸ch tiÕp cËn nµy th× mét hÖ thèng phÇn mÒm ®−îc xem nh− lµ d·y c¸c c«ng viÖc cÇn thùc hiÖn nh− ®äc d÷ liÖu, tÝnh to¸n, xö lý, lËp b¸o c¸o vµ in Ên kÕt qu¶ v.v... Mçi c«ng viÖc ®ã sÏ ®−îc thùc hiÖn bëi mét sè hµm nhÊt ®Þnh. Nh− vËy träng t©m cña c¸ch tiÕp cËn nµy lµ c¸c hµm chøc n¨ng. LTHTT sö dông kü thuËt ph©n r· hµm chøc n¨ng theo c¸ch tiÕp cËn trªn xuèng (top-down) ®Ó t¹o ra cÊu tróc ph©n cÊp. C¸c ng«n ng÷ lËp tr×nh bËc cao nh− COBOL, FORTRAN, PASCAL, C, v.v..., lµ nh÷ng ng«n ng÷ lËp tr×nh h−íng thñ tôc. Nh÷ng nh−îc ®iÓm chÝnh cña LTHTT lµ: ¾ Ch−¬ng tr×nh khã kiÓm so¸t vµ khã kh¨n trong viÖc bæ sung, n©ng cÊp ch−¬ng tr×nh. Ch−¬ng tr×nh ®−îc x©y dùng theo c¸ch TCHTT thùc chÊt lµ danh s¸ch c¸c c©u lÖnh mµ theo ®ã m¸y tÝnh cÇn thùc hiÖn. Danh s¸ch c¸c lÖnh ®ã ®−îc tæ chøc thµnh tõng nhãm theo ®¬n vÞ cÊu tróc cña ng«n ng÷ lËp tr×nh vµ ®−îc gäi lµ hµm/thñ tôc. Trong ch−¬ng tr×nh cã nhiÒu hµm/thñ tôc, th−êng th× cã nhiÒu thµnh phÇn d÷ liÖu quan träng sÏ ®−îc khai b¸o tæng thÓ (global) ®Ó c¸c hµm/thñ tôc cã thÓ truy nhËp, ®äc vµ lµm thay ®æi gi¸ trÞ cña biÕn tæng thÓ. §iÒu nµy sÏ lµm cho ch−¬ng tr×nh rÊt khã kiÓm so¸t, nhÊt lµ ®èi víi c¸c ch−¬ng tr×nh lín, phøc t¹p th× vÊn ®Ò cµng trë nªn khã kh¨n h¬n. Khi ta muèn thay ®æi, bæ sung cÊu tróc d÷ liÖu dïng chung cho mét sè hµm/thñ tôc th× ph¶i thay ®æi hÇu nh− tÊt c¶ c¸c hµm/thñ tôc liªn quan ®Õn d÷ liÖu ®ã. ¾ M« h×nh ®−îc x©y dùng theo c¸ch tiÕp cËn h−íng thñ tôc kh«ng m« t¶ ®−îc ®Çy ®ñ, trung thùc hÖ thèng trong thùc tÕ. ¾ Ph−¬ng ph¸p TCHTT ®Æt träng t©m vµo hµm lµ h−íng tíi ho¹t ®éng sÏ kh«ng thùc sù t−¬ng øng víi c¸c thùc thÓ trong hÖ thèng cña thÕ giíi thùc. 2
  3. 1.1.3. LËp tr×nh h−íng ®èi t−îng LËp tr×nh h−íng ®èi t−îng (Object Oriented Programming - LTH§T) lµ ph−¬ng ph¸p lËp tr×nh lÊy ®èi t−îng lµm nÒn t¶ng ®Ó x©y dùng thuËt gi¶i, x©y dùng ch−¬ng tr×nh. §èi t−îng ®−îc x©y dùng trªn c¬ së g¾n cÊu tróc d÷ liÖu víi c¸c ph−¬ng thøc (c¸c hµm/thñ tôc) sÏ thÓ hiÖn ®−îc ®óng c¸ch mµ chóng ta suy nghÜ, bao qu¸t vÒ thÕ giíi thùc. LTH§T cho phÐp ta kÕt hîp nh÷ng tri thøc bao qu¸t vÒ c¸c qu¸ tr×nh víi nh÷ng kh¸i niÖm trõu t−îng ®−îc sö dông trong m¸y tÝnh. §iÓm c¨n b¶n cña ph−¬ng ph¸p LTH§T lµ thiÕt kÕ ch−¬ng tr×nh xoay quanh d÷ liÖu cña hÖ thèng. NghÜa lµ c¸c thao t¸c xö lý cña hÖ thèng ®−îc g¾n liÒn víi d÷ liÖu vµ nh− vËy khi cã sù thay ®æi cña cÊu tróc d÷ liÖu th× chØ ¶nh h−ëng ®Õn mét sè Ýt c¸c ph−¬ng thøc xö lý liªn quan. LTH§T kh«ng cho phÐp d÷ liÖu chuyÓn ®éng tù do trong hÖ thèng. D÷ liÖu ®−îc g¾n chÆt víi tõng ph−¬ng thøc thµnh c¸c vïng riªng mµ c¸c ph−¬ng thøc ®ã t¸c ®éng lªn vµ nã ®−îc b¶o vÖ ®Ó cÊm viÖc truy nhËp tïy tiÖn tõ bªn ngoµi. LTH§T cho phÐp ph©n tÝch bµi to¸n thµnh tËp c¸c thùc thÓ ®−îc gäi lµ c¸c ®èi t−îng vµ sau ®ã x©y dùng c¸c d÷ liÖu cïng víi c¸c ph−¬ng thøc xung quanh c¸c ®èi t−îng ®ã. Tãm l¹i LTH§T cã nh÷ng ®Æc tÝnh chñ yÕu nh− sau: 1. TËp trung vµo d÷ liÖu thay cho c¸c ph−¬ng thøc. 2. Ch−¬ng tr×nh ®−îc chia thµnh c¸c líp ®èi t−îng. 3. C¸c cÊu tróc d÷ liÖu ®−îc thiÕt kÕ sao cho ®Æc t¶ ®−îc c¸c ®èi t−îng. 4. C¸c ph−¬ng thøc x¸c ®Þnh trªn c¸c vïng d÷ liÖu cña ®èi t−îng ®−îc g¾n víi nhau trªn cÊu tróc d÷ liÖu ®ã. 5. D÷ liÖu ®−îc bao bäc, che dÊu vµ kh«ng cho phÐp c¸c thµnh phÇn bªn ngoµi truy nhËp tù do. 6. C¸c ®èi t−îng trao ®æi víi nhau th«ng qua c¸c ph−¬ng thøc. 7. D÷ liÖu vµ c¸c ph−¬ng thøc míi cã thÓ dÔ dµng bæ sung vµo ®èi t−îng nµo ®ã khi cÇn thiÕt. 8. Ch−¬ng tr×nh ®−îc thiÕt kÕ theo kiÓu d−íi-lªn (bottom-up). 1.2. C¸c kh¸i niÖm c¬ b¶n cña lËp tr×nh h−íng ®èi t−îng Nh÷ng kh¸i niÖm c¬ b¶n trong LTH§T bao gåm: §èi t−îng; Líp; Trõu t−îng hãa d÷ liÖu, bao gãi th«ng tin; KÕ thõa; T−¬ng øng béi; Liªn kÕt ®éng; TruyÒn th«ng b¸o. 3
  4. 1.2.1. §èi t−îng Trong thÕ giíi thùc, kh¸i niÖm ®èi t−îng ®−îc hiÓu nh− lµ mét thùc thÓ, nã cã thÓ lµ ng−êi, vËt hoÆc mét b¶ng d÷ liÖu cÇn xö lý trong ch−¬ng tr×nh,... Trong LTH§T th× ®èi t−îng lµ biÕn thÓ hiÖn cña líp. 1.2.2. Líp Líp lµ mét kh¸i niÖm míi trong LTH§T so víi kü thuËt LTHTT. Nã lµ mét b¶n mÉu m« t¶ c¸c th«ng tin cÊu tróc d÷ liÖu vµ c¸c thao t¸c hîp lÖ cña c¸c phÇn tö d÷ liÖu. Khi mét phÇn tö d÷ liÖu ®−îc khai b¸o lµ phÇn tö cña mét líp th× nã ®−îc gäi lµ ®èi t−îng. C¸c hµm ®−îc ®Þnh nghÜa hîp lÖ trong mét líp ®−îc gäi lµ c¸c ph−¬ng thøc (method) vµ chóng lµ c¸c hµm duy nhÊt cã thÓ xö lý d÷ liÖu cña c¸c ®èi t−îng cña líp ®ã. Mçi ®èi t−îng cã riªng cho m×nh mét b¶n sao c¸c phÇn tö d÷ liÖu cña líp. Mçi líp bao gåm: danh s¸ch c¸c thuéc tÝnh (attribute) vµ danh s¸ch c¸c ph−¬ng thøc ®Ó xö lý c¸c thuéc tÝnh ®ã. C«ng thøc ph¶n ¸nh b¶n chÊt cña kü thuËt LTH§T lµ: §èi t−îng = D÷ liÖu + Ph−¬ng thøc Ch¼ng h¹n, chóng ta xÐt líp HINH_CN bao gåm c¸c thuéc tÝnh: (x1,y1) to¹ ®é gãc trªn bªn tr¸i, d,r lµ chiÒu dµi vµ chiÒu réng cña HINH_CN. C¸c ph−¬ng thøc nhËp sè liÖu cho HINH_CN, hµm tÝnh diÖn tÝch, chu vi vµ hµm hiÓn thÞ. Líp HINH_CN cã thÓ ®−îc m« t¶ nh− sau: HINH_CN Thuéc tÝnh : x1,y1 d,r Ph−¬ng thøc : NhËp_sl DiÖn tÝch Chu vi HiÓn thÞ H×nh 2.2 M« t¶ líp HINH_CN 4
  5. Chó ý: Trong LTH§T th× líp lµ kh¸i niÖm tÜnh, cã thÓ nhËn biÕt ngay tõ v¨n b¶n ch−¬ng tr×nh, ng−îc l¹i ®èi t−îng lµ kh¸i niÖm ®éng, nã ®−îc x¸c ®Þnh trong bé nhí cña m¸y tÝnh, n¬i ®èi t−îng chiÕm mét vïng bé nhí lóc thùc hiÖn ch−¬ng tr×nh. §èi t−îng ®−îc t¹o ra ®Ó xö lý th«ng tin, thùc hiÖn nhiÖm vô ®−îc thiÕt kÕ, sau ®ã bÞ hñy bá khi ®èi t−îng ®ã hÕt vai trß. 1.2.3. Trõu t−îng hãa d÷ liÖu vµ bao gãi th«ng tin Trõu t−îng hãa lµ c¸ch biÓu diÔn nh÷ng ®Æc tÝnh chÝnh vµ bá qua nh÷ng chi tiÕt vôn vÆt hoÆc nh÷ng gi¶i thÝch. Khi x©y dùng c¸c líp, ta ph¶i sö dông kh¸i niÖm trõu t−îng hãa. VÝ dô ta cã thÓ ®Þnh nghÜa mét líp ®Ó m« t¶ c¸c ®èi t−îng trong kh«ng gian h×nh häc bao gåm c¸c thuéc tÝnh trõu t−îng nh− lµ kÝch th−íc, h×nh d¸ng, mµu s¾c vµ c¸c ph−¬ng thøc x¸c ®Þnh trªn c¸c thuéc tÝnh nµy. ViÖc ®ãng gãi d÷ liÖu vµ c¸c ph−¬ng thøc vµo mét ®¬n vÞ cÊu tróc líp ®−îc xem nh− mét nguyªn t¾c bao gãi th«ng tin. D÷ liÖu ®−îc tæ chøc sao cho thÕ giíi bªn ngoµi (c¸c ®èi t−îng ë líp kh¸c) kh«ng truy nhËp vµo, mµ chØ cho phÐp c¸c ph−¬ng thøc trong cïng líp hoÆc trong nh÷ng líp cã quan hÖ kÕ thõa víi nhau míi ®−îc quyÒn truy nhËp. ChÝnh c¸c ph−¬ng thøc cña líp sÏ ®ãng vai trß nh− lµ giao diÖn gi÷a d÷ liÖu cña ®èi t−îng vµ phÇn cßn l¹i cña ch−¬ng tr×nh. Nguyªn t¾c bao gãi d÷ liÖu ®Ó ng¨n cÊm sù truy nhËp trùc tiÕp trong lËp tr×nh ®−îc gäi lµ sù che giÊu th«ng tin. 1.2.4. KÕ thõa KÕ thõa lµ qu¸ tr×nh mµ c¸c ®èi t−îng cña líp nµy ®−îc quyÒn sö dông mét sè tÝnh chÊt cña c¸c ®èi t−îng cña líp kh¸c. Sù kÕ thõa cho phÐp ta ®Þnh nghÜa mét líp míi trªn c¬ së c¸c líp ®· tån t¹i. Líp míi nµy, ngoµi nh÷ng thµnh phÇn ®−îc kÕ thõa, sÏ cã thªm nh÷ng thuéc tÝnh vµ c¸c hµm míi. Nguyªn lý kÕ thõa hç trî cho viÖc t¹o ra cÊu tróc ph©n cÊp c¸c líp. 1.2.5. T−¬ng øng béi T−¬ng øng béi lµ kh¶ n¨ng cña mét kh¸i niÖm (ch¼ng h¹n c¸c phÐp to¸n) cã thÓ sö dông víi nhiÒu chøc n¨ng kh¸c nhau. VÝ dô, phÐp + cã thÓ biÓu diÔn cho phÐp “céng” c¸c sè nguyªn (int), sè thùc (float), sè phøc (complex) hoÆc x©u ký tù (string) v.v... Hµnh vi cña phÐp to¸n t−¬ng øng béi phô thuéc vµo kiÓu d÷ liÖu mµ nã sö dông ®Ó xö lý. T−¬ng øng béi ®ãng vai quan träng trong viÖc t¹o ra c¸c ®èi t−îng cã cÊu tróc bªn trong kh¸c nhau nh−ng cïng dïng chung mét giao diÖn bªn ngoµi (ch¼ng h¹n tªn gäi). 5
  6. 1.2.6. Liªn kÕt ®éng Liªn kÕt ®éng lµ d¹ng liªn kÕt c¸c thñ tôc vµ hµm khi ch−¬ng tr×nh thùc hiÖn lêi gäi tíi c¸c hµm, thñ tôc ®ã. Nh− vËy trong liªn kÕt ®éng, néi dung cña ®o¹n ch−¬ng tr×nh øng víi thñ tôc, hµm sÏ kh«ng ®−îc biÕt cho ®Õn khi thùc hiÖn lêi gäi tíi thñ tôc, hµm ®ã. 1.2.7. TruyÒn th«ng b¸o C¸c ®èi t−îng göi vµ nhËn th«ng tin víi nhau gièng nh− con ng−êi trao ®æi víi nhau. ChÝnh nguyªn lý trao ®æi th«ng tin b»ng c¸ch truyÒn th«ng b¸o cho phÐp ta dÔ dµng x©y dùng ®−îc hÖ thèng m« pháng gÇn h¬n nh÷ng hÖ thèng trong thÕ giíi thùc. TruyÒn th«ng b¸o cho mét ®èi t−îng lµ yªu cÇu ®èi t−îng thùc hiÖn mét viÖc g× ®ã. C¸ch øng xö cña ®èi t−îng ®−îc m« t¶ bªn trong líp th«ng qua c¸c ph−¬ng thøc. Trong ch−¬ng tr×nh, th«ng b¸o göi ®Õn cho mét ®èi t−îng chÝnh lµ yªu cÇu thùc hiÖn mét c«ng viÖc cô thÓ, nghÜa lµ sö dông nh÷ng hµm t−¬ng øng ®Ó xö lý d÷ liÖu ®· ®−îc khai b¸o trong ®èi t−îng ®ã. V× vËy, trong th«ng b¸o ph¶i chØ ra ®−îc hµm cÇn thùc hiÖn trong ®èi t−îng nhËn th«ng b¸o. Th«ng b¸o truyÒn ®i còng ph¶i x¸c ®Þnh tªn ®èi t−îng vµ th«ng tin truyÒn ®i. VÝ dô, líp CONGNHAN cã thÓ hiÖn lµ ®èi t−îng cô thÓ ®−îc ®¹i diÖn bëi Hoten nhËn ®−îc th«ng b¸o cÇn tÝnh l−¬ng th«ng qua hµm TINHLUONG ®· ®−îc x¸c ®Þnh trong líp CONGNHAN. Th«ng b¸o ®ã sÏ ®−îc xö lý nh− sau: CONGNHAN.TINHLUONG (Hoten) §èi t−îng Th«ng b¸o Th«ng tin Trong ch−¬ng tr×nh h−íng ®èi t−îng, mçi ®èi t−îng chØ tån t¹i trong thêi gian nhÊt ®Þnh. §èi t−îng ®−îc t¹o ra khi nã ®−îc khai b¸o vµ sÏ bÞ hñy bá khi ch−¬ng tr×nh ra khái miÒn x¸c ®Þnh cña ®èi t−îng ®ã. Sù trao ®æi th«ng tin chØ cã thÓ thùc hiÖn trong thêi gian ®èi t−îng tån t¹i. 1.3. C¸c b−íc cÇn thiÕt ®Ó thiÕt kÕ ch−¬ng tr×nh theo h−íng ®èi t−îng Ch−¬ng tr×nh theo h−íng ®èi t−îng bao gåm mét tËp c¸c ®èi t−îng vµ mèi quan hÖ gi÷a c¸c ®èi t−îng víi nhau. V× vËy, lËp tr×nh trong ng«n ng÷ h−íng ®èi t−îng bao gåm c¸c b−íc sau: 1. X¸c ®Þnh c¸c d¹ng ®èi t−îng (líp) cña bµi tãan. 6
  7. 2. T×m kiÕm c¸c ®Æc tÝnh chung (d÷ liÖu chung) trong c¸c d¹ng ®èi t−îng nµy, nh÷ng g× chóng cïng nhau chia xÎ. 3. X¸c ®Þnh líp c¬ së dùa trªn c¸c ®Æc tÝnh chung cña c¸c d¹ng ®èi t−îng. 4. Tõ líp c¬ së, x©y dùng c¸c líp dÉn xuÊt chøa c¸c thµnh phÇn, nh÷ng ®Æc tÝnh kh«ng chung cßn l¹i cña c¸c d¹ng ®èi t−îng. Ngoµi ra, ta cßn ®−a ra c¸c líp cã quan hÖ víi c¸c líp c¬ së vµ líp dÉn xuÊt. 1.4. C¸c −u ®iÓm cña lËp tr×nh h−íng ®èi t−îng C¸ch tiÕp cËn h−íng ®èi t−îng gi¶i quyÕt ®−îc nhiÒu vÊn ®Ò tån t¹i trong qu¸ tr×nh ph¸t triÓn phÇn mÒm vµ t¹o ra ®−îc nh÷ng s¶n phÈm phÇn mÒm cã chÊt l−îng cao. Nh÷ng −u ®iÓm chÝnh cña LTH§T lµ: 1. Th«ng qua nguyªn lý kÕ thõa, cã thÓ lo¹i bá ®−îc nh÷ng ®o¹n ch−¬ng tr×nh lÆp l¹i trong qu¸ tr×nh m« t¶ c¸c líp vµ më réng kh¶ n¨ng sö dông c¸c líp ®· ®−îc x©y dùng. 2. Ch−¬ng tr×nh ®−îc x©y dùng tõ nh÷ng ®¬n thÓ (®èi t−îng) trao ®æi víi nhau nªn viÖc thiÕt kÕ vµ lËp tr×nh sÏ ®−îc thùc hiÖn theo quy tr×nh nhÊt ®Þnh chø kh«ng ph¶i dùa vµo kinh nghiÖm vµ kü thuËt nh− tr−íc. §iÒu nµy ®¶m b¶o rót ng¾n ®−îc thêi gian x©y dùng hÖ thèng vµ t¨ng n¨ng suÊt lao ®éng. 3. Nguyªn lý che giÊu th«ng tin gióp ng−êi lËp tr×nh t¹o ra ®−îc nh÷ng ch−¬ng tr×nh an toµn kh«ng bÞ thay bëi nh÷ng ®o¹n ch−¬ng tr×nh kh¸c. 4. Cã thÓ x©y dùng ®−îc ¸nh x¹ c¸c ®èi t−îng cña bµi to¸n vµo ®èi t−îng cña ch−¬ng tr×nh. 5. C¸ch tiÕp cËn thiÕt kÕ ®Æt träng t©m vµo ®èi t−îng, gióp chóng ta x©y dùng ®−îc m« h×nh chi tiÕt vµ gÇn víi d¹ng cµi ®Æt h¬n. 6. Nh÷ng hÖ thèng h−íng ®èi t−îng dÔ më réng, n©ng cÊp thµnh nh÷ng hÖ lín h¬n. 7. Kü thuËt truyÒn th«ng b¸o trong viÖc trao ®æi th«ng tin gi÷a c¸c ®èi t−îng gióp cho viÖc m« t¶ giao diÖn víi c¸c hÖ thèng bªn ngoµi trë nªn ®¬n gi¶n h¬n. 8. Cã thÓ qu¶n lý ®−îc ®é phøc t¹p cña nh÷ng s¶n phÈm phÇn mÒm. Kh«ng ph¶i trong hÖ thèng h−íng ®èi t−îng nµo còng cã tÊt c¶ c¸c tÝnh chÊt nªu trªn. Kh¶ n¨ng cã c¸c tÝnh chÊt ®ã cßn phô thuéc vµo lÜnh vùc øng dông cña dù ¸n tin häc vµ vµo ph−¬ng ph¸p thùc hiÖn cña ng−êi ph¸t triÓn phÇn mÒm. 7
  8. 1.5. C¸c ng«n ng÷ h−íng ®èi t−îng LËp tr×nh h−íng ®èi t−îng kh«ng lµ ®Æc quyÒn cña mét ng«n ng÷ nµo ®Æc biÖt. Còng gièng nh− lËp tr×nh cã cÊu tróc, nh÷ng kh¸i niÖm trong lËp tr×nh h−íng ®èi t−îng cã thÓ cµi ®Æt trong nh÷ng ng«n ng÷ lËp tr×nh nh− C hoÆc Pascal,... Tuy nhiªn, ®èi víi nh÷ng ch−¬ng tr×nh lín th× vÊn ®Ò lËp tr×nh sÏ trë nªn phøc t¹p. Nh÷ng ng«n ng÷ ®−îc thiÕt kÕ ®Æc biÖt, hç trî cho viÖc m« t¶, cµi ®Æt c¸c kh¸i niÖm cña ph−¬ng ph¸p h−íng ®èi t−îng ®−îc gäi chung lµ ng«n ng÷ ®èi t−îng. Dùa vµo kh¶ n¨ng ®¸p øng c¸c kh¸i niÖm vÒ h−íng ®èi t−îng, ta cã thÓ chia ra lµm hai lo¹i: 1. Ng«n ng÷ lËp tr×nh dùa trªn ®èi t−îng 2. Ng«n ng÷ lËp tr×nh h−íng ®èi t−îng LËp tr×nh dùa trªn ®èi t−îng lµ kiÓu lËp tr×nh hç trî chÝnh cho viÖc bao gãi, che giÊu th«ng tin vµ ®Þnh danh c¸c ®èi t−îng. LËp tr×nh dùa trªn ®èi t−îng cã nh÷ng ®Æc tÝnh sau: • Bao gãi d÷ liÖu • C¬ chÕ che giÊu vµ truy nhËp d÷ liÖu • Tù ®éng t¹o lËp vµ xãa bá c¸c ®èi t−îng • PhÐp to¸n t¶i béi Ng«n ng÷ hç trî cho kiÓu lËp tr×nh trªn ®−îc gäi lµ ng«n ng÷ lËp tr×nh dùa trªn ®èi t−îng. Ng«n ng÷ trong líp nµy kh«ng hç trî cho viÖc thùc hiÖn kÕ thõa vµ liªn kÕt ®éng, ch¼ng h¹n Ada lµ ng«n ng÷ lËp tr×nh dùa trªn ®èi t−îng. LËp tr×nh h−íng ®èi t−îng lµ kiÓu lËp tr×nh dùa trªn ®èi t−îng vµ bæ sung thªm nhiÒu cÊu tróc ®Ó cµi ®Æt nh÷ng quan hÖ vÒ kÕ thõa vµ liªn kÕt ®éng. V× vËy ®Æc tÝnh cña LTH§T cã thÓ viÕt mét c¸ch ng¾n gän nh− sau: C¸c ®Æc tÝnh dùa trªn ®èi t−îng + kÕ thõa + liªn kÕt ®éng. Ng«n ng÷ hç trî cho nh÷ng ®Æc tÝnh trªn ®−îc gäi lµ ng«n ng÷ LTH§T, vÝ dô nh− C++, Smalltalk, Object Pascal v.v... ViÖc chän mét ng«n ng÷ ®Ó cµi ®Æt phÇn mÒm phô thuéc nhiÒu vµo c¸c ®Æc tÝnh vµ yªu cÇu cña bµi to¸n øng dông, vµo kh¶ n¨ng sö dông l¹i cña nh÷ng ch−¬ng tr×nh ®· cã vµ vµo tæ chøc cña nhãm tham gia x©y dùng phÇn mÒm. 1.6. Mét sè øng dông cña LTH§T LTH§T ®ang ®−îc øng dông ®Ó ph¸t triÓn phÇn mÒm trong nhiÒu lÜnh vùc kh¸c nhau. Trong sè ®ã, cã øng dông quan träng vµ næi tiÕng nhÊt hiÖn nay lµ hÖ 8
  9. ®iÒu hµnh Windows cña h·ng Microsoft ®· ®−îc ph¸t triÓn dùa trªn kü thuËt LTH§T. Mét sè nh÷ng lÜnh vùc øng dông chÝnh cña kü thuËt LTH§T bao gåm: + Nh÷ng hÖ thèng lµm viÖc theo thêi gian thùc. + Trong lÜnh vùc m« h×nh hãa hoÆc m« pháng c¸c qu¸ tr×nh + C¸c c¬ së d÷ liÖu h−íng ®èi t−îng. + Nh÷ng hÖ siªu v¨n b¶n, multimedia + LÜnh vùc trÝ tuÖ nh©n t¹o vµ c¸c hÖ chuyªn gia. + LËp tr×nh song song vµ m¹ng n¬-ron. + Nh÷ng hÖ tù ®éng hãa v¨n phßng vµ trî gióp quyÕt ®Þnh. ... 9
  10. Ch−¬ng 2 c¸c më réng cña ng«n ng÷ C++ Ch−¬ng 2 tr×nh bµy nh÷ng vÊn ®Ò sau ®©y: ¾ Giíi thiÖu chung vÒ ng«n ng÷ C++ ¾ Mét sè më réng cña ng«n ng÷ C++ so víi ng«n ng÷ C ¾ C¸c ®Æc tÝnh cña C++ hç trî lËp tr×nh h−íng ®èi t−îng ¾ Vµo ra trong C++ ¾ CÊp ph¸t vµ gi¶i phãng bé nhí ¾ BiÕn tham chiÕu, h»ng tham chiÕu ¾ TruyÒn tham sè cho hµm theo tham chiÕu ¾ Hµm tr¶ vÒ gi¸ trÞ tham chiÕu ¾ Hµm víi ®èi sè cã gi¸ trÞ mÆc ®Þnh ¾ C¸c hµm néi tuyÕn (inline) ¾ Hµm t¶i béi 2.1. Giíi thiÖu chung vÒ C++ C++ lµ ng«n ng÷ lËp tr×nh h−íng ®èi t−îng vµ lµ sù më réng cña ng«n ng÷ C. V× vËy mäi kh¸i niÖm trong C ®Òu dïng ®−îc trong C++. PhÇn lín c¸c ch−¬ng tr×nh C ®Òu cã thÓ ch¹y ®−îc trong C++. Trong ch−¬ng nµy chØ tËp trung giíi thiÖu nh÷ng kh¸i niÖm, ®Æc tÝnh míi cña C++ hç trî cho lËp tr×nh h−íng ®èi t−îng. Mét sè kiÕn thøc cã trong C++ nh−ng ®· cã trong ng«n ng÷ C sÏ kh«ng ®−îc tr×nh bµy l¹i ë ®©y. 2.2. Mét sè më réng cña C++ so víi C 2.2.1. §Æt lêi chó thÝch Ngoµi kiÓu chó thÝch trong C b»ng /* ... */ , C++ ®−a thªm mét kiÓu chó thÝch thø hai, ®ã lµ chó thÝch b¾t ®Çu b»ng //. Nãi chung, kiÓu chó thÝch /*...*/ ®−îc dïng cho c¸c khèi chó thÝch lín gåm nhiÒu dßng, cßn kiÓu // ®−îc dïng cho c¸c chó thÝch trªn mét dßng. VÝ dô: /* §©y lµ chó thÝch trong C */ // §©y lµ chó thÝch trong C++ 10
  11. 2.2.2. Khai b¸o biÕn Trong C tÊt c¶ c¸c c©u lÖnh khai b¸o biÕn, m¶ng côc bé ph¶i ®Æt t¹i ®Çu khèi. V× vËy vÞ trÝ khai b¸o vµ vÞ trÝ sö dông cña biÕn cã thÓ ë c¸ch kh¸ xa nhau, ®iÒu nµy g©y khã kh¨n trong viÖc kiÓm so¸t ch−¬ng tr×nh. C++ ®· kh¾c phôc nh−îc ®iÓm nµy b»ng c¸ch cho phÐp c¸c lÖnh khai b¸o biÕn cã thÓ ®Æt bÊt kú chç nµo trong ch−¬ng tr×nh tr−íc khi c¸c biÕn ®−îc sö dông. Ph¹m vi ho¹t ®éng cña c¸c biÕn kiÓu nµy lµ khèi trong ®ã biÕn ®−îc khai b¸o. VÝ dô 2.1 Ch−¬ng tr×nh sau ®©y nhËp mét d·y sè thùc råi s¾p xÕp theo thø tù t¨ng dÇn: #include #include #include void main() { int n; printf("\n So phan tu cua day N="); scanf("%d",&n); float *x=(float*)malloc((n+1)*sizeof(float)); for (int i=0;i
  12. getch(); } 2.2.3. PhÐp chuyÓn kiÓu b¾t buéc Ngoµi phÐp chuyÓn kiÓu b¾t buéc ®−îc viÕt trong C theo có ph¸p: (kiÓu) biÓu thøc C++ cßn sö dông mét phÐp chuyÓn kiÓu míi nh− sau: KiÓu(biÓu thøc) PhÐp chuyÓn kiÓu nµy cã d¹ng nh− mét hµm sè chuyÓn kiÓu ®ang ®−îc gäi. C¸ch chuyÓn kiÓu nµy th−êng ®−îc sö dông trong thùc tÕ. 1 1 1 VÝ dô 2.2 Ch−¬ng tr×nh sau ®©y tÝnh sau tæng S = 1 + + + ... + 2 3 n Víi n lµ mét sè nguyªn d−¬ng nhËp tõ bµn phÝm. #include #include void main() { int n; printf("\n So phan tu cua day N="); scanf("%d",&n); float s=0.0; for (int i=1;i
  13. #include void main() { float a[20][20],smax; int m,n,i,j,imax,jmax; clrscr(); puts(" Cho biet so hang va so cot cua ma tran: "); scanf("%d%d",&m,&n); for (i=0;i
  14. printf("\n Co gia tri=%6.1f", smax); printf("\n\n Tai hang %d cot %d",imax,jmax); getch(); } 2.3. Vµo ra trong C++ §Ó xuÊt d÷ liÖu ra mµn h×nh vµ nhËp d÷ liÖu tõ bµn phÝm, trong C++ vÉn cã thÓ dïng hµm printf() vµ scanf(), ngoµi ra trong C++ ta cã thÓ dïng dßng xuÊt/nhËp chuÈn ®Ó nhËp/xuÊt d÷ liÖu th«ng qua hai biÕn ®èi t−îng cña dßng (stream object) lµ cout vµ cin. 2.3.1. XuÊt d÷ liÖu Có ph¸p: cout >biÕn N; To¸n tö cin ®−îc ®Þnh nghÜa tr−íc nh− mét ®èi t−îng biÓu diÔn cho thiÕt bÞ vµo chuÈn cña C++ lµ bµn phÝm, cin ®−îc sö dông kÕt hîp víi to¸n tö trÝch >> ®Ó nhËp d÷ liÖu tõ bµn phÝm cho c¸c biÕn 1, 2, ..., N. Chó ý: • §Ó nhËp mét chuçi kh«ng qu¸ n ký tù vµ l−u vµo m¶ng mét chiÒu a (kiÓu char) cã thÓ dïng hµm cin.get nh− sau: cin.get(a,n); • To¸n tö nhËp cin>> sÏ ®Ó l¹i ký tù chuyÓn dßng ’\n’ trong bé ®Öm. Ký tù nµy cã thÓ lµm tr«i ph−¬ng thøc cin.get. §Ó kh¾c phôc t×nh tr¹ng trªn cÇn dïng ph−¬ng thøc cin.ignore(1) ®Ó bá qua mét ký tù chuyÓn dßng. • §Ó sö dông c¸c lo¹i to¸n tö vµ ph−¬ng thøc nãi trªn cÇn khai b¸o tËp tin dÉn h−íng iostream.h 2.3.3. §Þnh d¹ng khi in ra mµn h×nh • §Ó quy ®Þnh sè thùc ®−îc hiÓn thÞ ra mµn h×nh víi p ch÷ sè sau dÊu chÊm thËp ph©n, ta sö dông ®ång thêi c¸c hµm sau: setiosflags(ios::showpoint); // BËt cê hiÖu showpoint(p) setprecision(p); C¸c hµm nµy cÇn ®Æt trong to¸n tö xuÊt nh− sau: 14
  15. cout
  16. cin>>ts[i].d1>>ts[i].d2>>ts[i].d3; ts[i].td=ts[i].d1+ts[i].d2+ts[i].d3; } for (i=0;i
  17. cout
  18. 2.4.1. To¸n tö new ®Ó cÊp ph¸t bé nhí To¸n tö new thay cho hµm malloc() vµ calloc() cña C cã có ph¸p nh− sau: new Tªn kiÓu ; hoÆc new (Tªn kiÓu); Trong ®ã Tªn kiÓu lµ kiÓu d÷ liÖu cña biÕn con trá, nã cã thÓ lµ: c¸c kiÓu d÷ liÖu chuÈn nh− int, float, double, char,... hoÆc c¸c kiÓu do ng−êi lËp tr×nh ®Þnh nghÜa nh− m¶ng, cÊu tróc, líp,... Chó ý: §Ó cÊp ph¸t bé nhí cho m¶ng mét chiÒu, dïng có ph¸p nh− sau: BiÕn con trá = new kiÓu[n]; Trong ®ã n lµ sè nguyªn d−¬ng x¸c ®Þnh sè phÇn tö cña m¶ng. VÝ dô: float *p = new float; //cÊp ph¸t bé nhí cho biÕn con trá p cã kiÓu int int *a = new int[100]; //cÊp ph¸t bé nhí ®Ó l−u tr÷ m¶ng mét chiÒu a // gåm 100 phÇn tö Khi sö dông to¸n tö new ®Ó cÊp ph¸t bé nhí, nÕu kh«ng ®ñ bé nhí ®Ó cÊp ph¸t, new sÏ tr¶ l¹i gi¸ trÞ NULL cho con trá. §o¹n ch−¬ng tr×nh sau minh häa c¸ch kiÓm tra lçi cÊp ph¸t bé nhí: double *p; int n; cout>n; p = new double[n] if (p == NULL) { cout
  19. cña tæng ®iÓm, in danh s¸ch thÝ sinh sau khi s¾p xÕp, gi¶i phãng bé nhí ®· cÊp ph¸t. #include #include #include #include #include struct TS { char ht[20]; long sobd; float td; }; void main(void) { TS *ts; int n; coutn; ts = new TS[n+1]; if (ts == NULL) { cout
  20. cout>ts[i].td; } for (i=0;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2