intTypePromotion=1

Giáo trình: Lập trình hướng đối

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

0
44
lượt xem
12
download

Giáo trình: Lập trình hướng đối

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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...

Chủ đề:
Lưu

Nội dung Text: Giáo trình: Lập trình hướng đối

  1. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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 Lập trình HĐT 1 http://www.ebook.edu.vn
  2. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Lập trình HĐT 2 http://www.ebook.edu.vn
  3. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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 c¸ch tiÕp cËn bottom-up (d−íi -lªn). 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. Lập trình HĐT 3 http://www.ebook.edu.vn
  4. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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 HCN. C¸c ph−¬ng thøc nhËp sè liÖu cho HCN, 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 Lập trình HĐT 4 http://www.ebook.edu.vn
  5. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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 (nh− tªn gäi). Lập trình HĐT 5 http://www.ebook.edu.vn
  6. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Lập trình HĐT 6 http://www.ebook.edu.vn
  7. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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¬ së 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. Lập trình HĐT 7 http://www.ebook.edu.vn
  8. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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Ö Lập trình HĐT 8 http://www.ebook.edu.vn
  9. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ®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. ... Lập trình HĐT 9 http://www.ebook.edu.vn
  10. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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 tham 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 //. 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. Ch−¬ng tr×nh dÞch sÏ bá qua tÊt c¶ c¸c chó thÝch trong ch−¬ng tr×nh. VÝ dô: /* §©y lμ c©u chó thÝch trªn nhiÒu dßng */ // §©y lμ chó thÝch trªn mét dßng Lập trình HĐT 10 http://www.ebook.edu.vn
  11. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com #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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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: Lập trình HĐT 14 http://www.ebook.edu.vn
  15. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com cout
  16. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com cout
  18. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 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. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com cout>ts[i].td; } for (i=0;i
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản