Giáo trình Lập trình hướng đối tượng (Phần 1)
Lập trình hướng đối tượng có hai đặc trưng cơ bản:
Đóng gói dữ liệu: dữ liệu luôn được tổ chức thành các thuộc tính của lớp
đối tượng. Việc truy nhập đến dữ liệu phải thông qua các phương thức của
đối tượng lớp.
Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn được thể hiện thông qua
cơ chế thừa kế. Cơ chế này cho phép các lớp đối tượng có thể thừa kế từ
các lớp đối tượng khác. Khi đó, trong các lớp dẫn xuất, có thể sử dụng các
phương thức (mã nguồn) của các lớp cơ sở mà không cần phải định nghĩa
lại.
Lập trình hướng đối tượng có một số ưu điểm nổi bật:
Không còn nguy cơ dữ liệu bị thay đổi tự do trong chương trình vì dữ liệu
đã được đóng gói vào các đối tượng. Nếu muốn truy nhập vào dữ liệu phải
thông qua các phương thức được cho phép của đối tượng.
Khi thay đổi cấu trúc dữ liệu của một đối tượng, không cần thay đổi mã
nguồn của các đối tượng khác, mà chỉ cần thay đổi một số thành phần của
đối tượng dẫn xuất. Điều này hạn chế sự ảnh hưởng xấu của việc thay đổi
dữ liệu đến các đối tượng khác trong chương trình.
Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên, chi phí thời gian vì
nguyên tắc thừa kế cho phép các lớp dẫn xuất sử dụng các phương thức từ
lớp cơ sở như những phương thức của chính nó, mà không cần thiết phải
định nghĩa lại.
Phù hợp với các dự án phần mềm lớn, phức tạp.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình hướng đối tượng (Phần 1)
¸ch thªm mét ph•¬ng thøc tÜnh trong líp counter. #include #include class counter { static int count; public : counter (); ~ counter (); static void counter_display(); }; int counter::count = 0; void counter::counter_display() { cout<<"Hien dang co "<<count<<" doi tuong \n"; } counter:: counter () { cout<<"++Tao : bay gio co "<<++count<<" doi tuong\n"; } counter:: ~counter () { cout<<"--Xoa : bay gio con "<<--count<<" doi tuong\n"; } void main() { clrscr(); void fct(); counter a; fct(); counter::counter_display(); Trang - 74 - LËp tr×nh h•íng ®èi t•îng counter b; } void fct() { counter u; counter::counter_display();//gäi qua tªn líp counter v; v.counter_display();//gäi qua ®èi t•îng } 2.6. Khëi g¸n m¶ng ®èi t•îng Sau khi khai b¸o líp, ta cã thÓ dïng tªn líp ®Ó khai b¸o m¶ng ®èi t•îng gièng nh• c¸ch khai b¸o m¶ng cã kiÓu d÷ liÖu chuÈn kh¸c theo mÉu có ph¸p: Tªn_líp Tªn_m¶ng[kÝch cì]; VÝ dô: cpoint P[100]; C©u lÖnh khai b¸o m¶ng sÏ gäi tíi hµm t¹o kh«ng ®èi ®Ó t¹o c¸c phÇn tö m¶ng. Trong vÝ dô trªn, hµm t¹o kh«ng ®èi cña líp cpoint ®•îc gäi 100 lÇn ®Ó t¹o 100 phÇn tö m¶ng ®èi t•îng. §Ó khai b¸o m¶ng vµ khëi g¸n gi¸ trÞ cho c¸c phÇn tö m¶ng ®èi t•îng, ta sö dông hµm t¹o cã ®èi theo mÉu có ph¸p: Tªn_líp Tªn_m¶ng[kÝch cì] = {tªn_líp(c¸c tham sè), tªn_líp(c¸c tham sè),..}; VÝ dô: cpoint P[5] = {cpoint(0,0), cpoint(10,0), cpoint(10,10)}; C©u lÖnh khai b¸o trªn sÏ yªu cÇu gäi hµm t¹o cã ®èi 3 lÇn vµ gäi hµm t¹o kh«ng ®èi 2 lÇn ®Ó sinh ra 5 ®èi t•îng cña líp cpoint. §Ó truy nhËp vµo c¸c thµnh phÇn cña phÇn tö m¶ng ®èi t•îng, ta sö dông có ph¸p : Tªn_m¶ng[chØ sè phÇn tö].Tªn_thuéc_tÝnh //truy nhËp vµo thuéc tÝnh //truy nhËp vµo ph•¬ng thøc Tªn_m¶ng[chØ sè phÇn tö].Tªn_ph•¬ng_thøc(danh s¸ch ®èi); Trang - 75 - LËp tr×nh h•íng ®èi t•îng 2.7. CÊp ph¸t bé nhí cho ®èi t•îng Cã thÓ dïng to¸n tö new ®Ó cÊp ph¸t bé nhí cho mét hoÆc mét d·y c¸c ®èi t•îng. Bé nhí ®•îc cÊp ph¸t ®•îc qu¶n lý bëi con trá kiÓu ®èi t•îng. VÝ dô, ta cã thÓ cÊp ph¸t bé nhí cho c¸c ®èi t•îng cña líp cpoint nh• sau : cpoint *p, *q ; p = new cpoint ; q = new cpoint[10] ; §Ó truy nhËp vµo c¸c thµnh phÇn cña ®èi t•îng th«ng qua con trá ®èi t•îng, ta sö dông có ph¸p : Tªn_con_trá->tªn_thuéc_tÝnh //truy nhËp vµo thuéc tÝnh Tªn_con_trá->tªn_ph•¬ng_thøc //gäi ph•¬ng thøc VÝ dô : p->x ; p->y ; p->input() ; §Ó biÓu thÞ ®èi t•îng th«ng qua con trá ®èi t•îng, ta viÕt *Tªn_con_trá VÝ dô : *p NÕu q lµ con trá ®èi t•îng trá tíi ®Þa chØ ®Çu vïng nhí cña mét d·y ®èi t•îng. Khi ®ã, ®Ó truy nhËp vµo c¸c thµnh phÇn cña ®èi t•îng thø i trong d·y, ta viÕt : q[i].tªn_thµnh_phÇn hoÆc (q+i)->tªn_thµnh_phÇn 2.8. §èi t•îng h»ng, ph•¬ng thøc h»ng a) §èi t•îng h»ng Còng nh• c¸c phÇn tö d÷ liÖu kh¸c, mét ®èi t•îng cã thÓ ®•îc khai b¸o lµ h»ng. C¸c ph•¬ng thøc duy cã thÓ sö dông cho c¸c ®èi t•îng h»ng lµ c¸c hµm t¹o vµ hµm huû. Bëi lÏ c¸c ®èi t•îng h»ng kh«ng thÓ thay ®æi, mµ chØ ®•îc t¹o ra hoÆc huû bá ®i. Tuy nhiªn, khi xö lý c¸c ®èi t•îng h»ng b»ng c¸c ph•¬ng thøc kh¸c th× ch•¬ng tr×nh dÞch sÏ c¶nh b¸o (warning): Non-const function called for const object nh•ng ch•¬ng tr×nh EXE vÉn ®•îc t¹o ra vµ khi thùc hiÖn ch•¬ng tr×nh, th× néi dung c¸c ®èi t•îng h»ng vÉn bÞ thay ®æi. VÝ dô 2.16: #include #include int uscln(int a, int b) Trang - 76 - LËp tr×nh h•íng ®èi t•îng { while(a!=b) if(a>b) a=a-b; else b=b-a; return a; } class phanso { private: int ts; int ms; public: phanso() { ts=0; ms=1; } phanso(int a, int b) { ts=a; ms=b; } ~phanso() { ts=0; ms=1; } void nhap() { cout>ts; cout>ms; } void hienthi(); Trang - 77 - LËp tr×nh h•íng ®èi t•îng void rutgon(); }; void phanso::rutgon() { int usc; usc=uscln(ts,ms); ts=ts/usc; ms=ms/usc; } void phanso::hienthi() { cout<<ts<<"/"<<ms; } void main() { const phanso ps = phanso(3,6);//khai b¸o ®èi t•îng h»ng cout<<"\nPhan so ban dau:"; ps.hienthi();//gäi ph•¬ng thøc xö lý ®èi t•îng h»ng cout<<"\nPhan so sau khi rut gon:"; ps.rutgon();//gäi ph•¬ng thøc xö lý ®èi t•îng h»ng ps.hienthi(); getch(); } Khi dÞch ch•¬ng tr×nh, ch•¬ng tr×nh dÞch sÏ ®•a ra c¸c c¶nh b¸o sau: Non-const function phanso::hienthi called for const object Non-const function phanso::rutgon called for const object Vµ khi ch¹y ch•¬ng tr×nh ta thu ®•îc kÕt qu¶: Phan so ban dau:3/6 Phan so sau khi rut gon:1/2 b) Ph•¬ng thøc h»ng Ph•¬ng thøc cña líp ®•îc khai b¸o víi tõ kho¸ const ®øng ngay sau danh s¸ch c¸c tham sè h×nh thøc ®•îc gäi lµ ph•¬ng thøc h»ng. Trang - 78 - LËp tr×nh h•íng ®èi t•îng Ph•¬ng thøc h»ng kh«ng thÓ thay ®æi néi dung mét ®èi t•îng. Mét ph•¬ng thøc h»ng ph¶i ®•îc m« t¶ c¶ trong khai b¸o vµ khi ®Þnh nghÜa. Ph•¬ng thøc h»ng cã thÓ ®•îc ®Þnh nghÜa chång b»ng mét ph•¬ng thøc kh«ng ph¶i ph•¬ng thøc h»ng. VÝ dô 2.17: #include #include int uscln(int a, int b) { while(a!=b) if(a>b) a=a-b; else b=b-a; return a; } class phanso { private: int ts; int ms; public: phanso() { ts=0; ms=1; } phanso(int a, int b) { ts=a; ms=b; } ~phanso() { ts=0; Trang - 79 - LËp tr×nh h•íng ®èi t•îng ms=1; } void nhap() { cout>ts; cout>ms; } void hienthi() ; void rutgon() const; }; void phanso::rutgon() const; { int usc; usc=uscln(ts,ms); ts=ts/usc; ms=ms/usc; } void phanso::hienthi() { cout<<ts<<"/"<<ms; } void main() { const phanso ps = phanso(3,6);//khai b¸o ®èi t•îng h»ng cout<<"\nPhan so ban dau:"; ps.hienthi();//gäi ph•¬ng thøc xö lý ®èi t•îng h»ng cout<<"\nPhan so sau khi rut gon:"; ps.rutgon();//gäi ph•¬ng thøc h»ng xö lý ®èi t•îng h»ng ps.hienthi(); getch(); } Khi ch¹y ch•¬ng tr×nh, ch•¬ng tr×nh dÞch sÏ b¸o lçi: Trang - 80 - LËp tr×nh h•íng ®èi t•îng Cannot modify const object t¹i dßng lÖnh ts=ts/usc; trong th©n cña ph•¬ng thøc rutgon. V× vËy, viÖc dïng ph•¬ng thøc h»ng cho c¸c ®èi t•îng h»ng sÏ ®¶m b¶o gi÷ nguyªn néi dung cña c¸c ®èi t•îng h»ng. 2.9. Hµm b¹n, líp b¹n C¸c thµnh phÇn private cña ®èi t•îng chØ cã thÓ truy nhËp bëi c¸c ph•¬ng thøc cña chÝnh líp ®ã. Ngoµi ra, ph•¬ng thøc cña líp cßn cã thÓ truy nhËp ®Õn tÊt c¶ thµnh phÇn private cña c¸c ®èi t•îng cïng líp ®•îc khai b¸o côc bé bªn trong ph•¬ng thøc ®ã hoÆc ®•îc truyÒn nh• lµ tham sè cña ph•¬ng thøc (cã thÓ b»ng tham trÞ , b»ng tham chiÕu hay b»ng con trá). Muèn mét hµm kh«ng ph¶i thµnh phÇn cña líp cã thÓ truy nhËp vµo c¸c thµnh phÇn cña líp ta sö dông “hµm b¹n”. Khi ®Þnh nghÜa mét líp, cã thÓ khai b¸o r»ng mét hay nhiÒu hµm b¹n; khai b¸o b¹n bÌ nh• thÕ cho phÐp c¸c hµm nµy truy xuÊt ®•îc tíi c¸c thµnh phÇn private cña líp gièng nh• c¸c ph•¬ng thøc cña líp ®ã. ¦u ®iÓm cña ph•¬ng ph¸p nµy lµ kiÓm so¸t c¸c truy nhËp ë cÊp ®é líp. Khi tÊt c¶ c¸c ph•¬ng thøc cña mét líp lµ hµm b¹n cña mét líp kh¸c, ta cã kh¸i niÖm líp b¹n. VÝ dô ®Ó thiÕt lËp tÊt c¶ c¸c ph•¬ng thøc cña líp B lµ b¹n cña líp A th× trong khai b¸o líp A, ta ®•a ra chØ thÞ: friend class B; Trang - 81 - LËp tr×nh h•íng ®èi t•îng C©u hái vµ bµi tËp 1. Trong c¸c khai b¸o líp sau, nh÷ng khai b¸o nµo lµ ®óng: a. class MyClass; b. Class MyClass; c. class MyClass{}; d. Class MyClass{}; 2. Gi¶ sö ta ®· ®Þnh nghÜa líp MyClass, b©y giê ta khai b¸o mét ®èi t•îng thuéc kiÓu líp nµy. Khai b¸o nµo lµ ®óng: a. class MyClass me; b. MyClass me; c. MyClass me(); d. MyClass me{}; 3. Trong c¸c khai b¸o thuéc tÝnh ngay trong ph¹m vi cña khai b¸o líp MyClass nh• sau, nh÷ng khai b¸o nµo lµ ®óng: a. int myAge; b. private int myAge; c. public int myAge; d. private: int myAge; 4. Trong c¸c khai b¸o ph•¬ng thøc ngay trong ph¹m vi cña khai b¸o líp MyClass nh• sau, nh÷ng khai b¸o nµo lµ ®óng: a. public: void show(); b. void show(); c. void show(){cout << “hello!”;}; d. void MyClass::show(){cout << “hello!”;} 5. XÐt ®o¹n ch•¬ng tr×nh sau: class MyClass { int age; public: int getAge(); }; MyClass me; Khi ®ã, trong c¸c lÖnh sau, lÖnh nµo cã thÓ thªm vµo cuèi ®o¹n ch•¬ng tr×nh trªn: Trang - 82 - LËp tr×nh h•íng ®èi t•îng a. cout << MyClass::age; b. cout << me.age; c. cout << me.getAge(); d. cin >> me.age; 6. Trong c¸c khai b¸o hµm khëi t¹o cho líp MyClass nh• sau, nh÷ng khai b¸o nµo lµ ®óng: a. myClass(); b. MyClass(); c. MyClass(MyClass); d. void MyClas(); e. MyClass MyClass(); 7. Trong c¸c khai b¸o hµm hñy cho líp MyClass nh• sau, nh÷ng khai b¸o nµo lµ ®óng: a. ~myClass(); b. ~MyClass(); c. ~MyClass(MyClass); d. void ~MyClas(); e. MyClass ~MyClass(); 8. Gi¶ sö ta khai b¸o líp MyClass cã mét thuéc tÝnh age vµ mét hµm khëi t¹o: class MyClass { int age; public: MyClass(MyClass me){ }; int getAge(){return age}; }; Trong c¸c dßng lÖnh sau, nh÷ng dßng nµo cã thÓ xuÊt hiÖn trong hµm khëi t¹o trªn: a. age = MyClass.age; b. age = me.age; c. age = MyClass.getAge(); Trang - 83 - LËp tr×nh h•íng ®èi t•îng d. age = me.getAge(); e. age = 10; 9. XÐt khai b¸o líp nh• sau: class MyClass { public: MyClass(MyClass); MyClass(int); }; Trong sè c¸c khai b¸o ®èi t•îng sau, nh÷ng khai b¸o nµo lµ ®óng: a. MyClass me; b. MyClass me(); c. MyClass me(10); d. MyClass me1(10), me2(me1); 10. XÐt khai b¸o líp nh• sau: class MyClass{ public: MyClass();}; Trong sè c¸c khai b¸o con trá ®èi t•îng sau, nh÷ng khai b¸o nµo lµ ®óng: a. MyClass *me; b. MyClass *me(); c. MyClass *me = new me(); d. MyClass *me = new MyClass(); 11. XÐt khai b¸o líp nh• sau: class MyClass { public: MyClass(int i=0, int j=0, float k=0); }; Trong sè c¸c khai b¸o con trá ®èi t•îng sau, nh÷ng khai b¸o nµo lµ ®óng: a. MyClass *me; b. MyClass *me = new MyClass(); c. MyClass *me = new MyClass(1, 20); Trang - 84 - LËp tr×nh h•íng ®èi t•îng d. MyClass *me = new MyClass(1, 20, 30); 12. Khai b¸o mét líp nh©n viªn, cã tªn lµ Employee, víi ba thuéc tÝnh cã tÝnh chÊt private: - Tªn nh©n viªn, cã d¹ng mét con trá kiÓu char - Tuæi nh©n viªn, cã kiÓu int - Lu¬ng nh©n viªn, cã kiÓu float. 13. Thªm vµo líp Employee trong bµi 12 c¸c ph•¬ng thøc cã tÝnh chÊt public: - set/get gi¸ trÞ thuéc tÝnh tªn nh©n viªn - set/get gi¸ trÞ thuéc tÝnh tuæi nh©n viªn - set/get gi¸ trÞ thuéc tÝnh lu¬ng nh©n viªn. 14. ViÕt mét hµm khëi t¹o kh«ng cã tham sè cho líp Employee trong bµi 13, c¸c thuéc tÝnh cña líp nhËn gi¸ trÞ mÆc ®Þnh: - gi¸ trÞ thuéc tÝnh tªn nh©n viªn, mÆc ®Þnh lµ chuçi kÝ tù rçng “” - gi¸ trÞ thuéc tÝnh tuæi nh©n viªn, mÆc ®Þnh lµ 18 - gi¸ trÞ thuéc tÝnh lu¬ng nh©n viªn, mÆc ®Þnh lµ $100. 15. ViÕt thªm mét hµm khëi t¹o víi ®Çy ®ñ ba tham sè t•¬ng øng víi ba thuéc tÝnh cña líp Employee trong bµi 14. 16. Thªm vµo líp Employee mét ph•¬ng thøc show() ®Ó giíi thiÖu vÒ tªn, tuæi vµ l•¬ng cña ®èi t•îng nh©n viªn. 17. ViÕt mét hµm hñy t•êng minh cho líp Employee nh»m gi¶i phãng vïng nhí cña con trá char, lµ kiÓu cña thuéc tÝnh tªn nh©n viªn. 18. ViÕt mét ch•¬ng tr×nh sö dông líp Employee ®•îc x©y dùng sau bµi 17 víi c¸c thao t¸c sau: - Khai b¸o mét ®èi t•îng kiÓu Employee, dïng hµm khëi t¹o kh«ng tham sè - Dïng hµm show() ®Ó giíi thiÖu vÒ ®èi t•îng ®ã 19. ViÕt mét ch•¬ng tr×nh sö dông líp Employee ®•îc x©y dùng sau bµi 17 víi c¸c thao t¸c sau: - Khai b¸o mét ®èi t•îng kiÓu Employee, dïng hµm khëi t¹o kh«ng tham sè - NhËp tõ bµn phÝm gi¸ trÞ c¸c thuéc tÝnh tªn, tuæi, l•¬ng nh©n viªn. - G¸n c¸c gi¸ trÞ nµy cho c¸c thuéc tÝnh cña ®èi t•îng ®· khai b¸o, dïng c¸c hµm set - Dïng hµm show() ®Ó giíi thiÖu vÒ ®èi t•îng ®ã Trang - 85 - LËp tr×nh h•íng ®èi t•îng 20. ViÕt mét ch•¬ng tr×nh sö dông líp Employee ®•îc x©y dùng sau bµi 17 víi c¸c thao t¸c sau: - Khai b¸o mét ®èi t•îng kiÓu Employee, dïng hµm khëi t¹o vëi ®ñ 3 tham sè - Dïng hµm show() ®Ó giíi thiÖu vÒ ®èi t•îng ®ã 21. ViÕt mét ch•¬ng tr×nh sö dông líp Employee ®•îc x©y dùng sau bµi 17 víi c¸c thao t¸c sau: - Khai b¸o mét con trá ®èi t•îng kiÓu Employee - CÊp ph¸t bé nhí, dïng hµm khëi t¹o vëi ®ñ 3 tham sè - Dïng hµm show() ®Ó giíi thiÖu vÒ ®èi t•îng mµ con trá nµy ®ang trá tíi 22. ViÕt mét ch•¬ng tr×nh nhËp d÷ liÖu cho mét m¶ng ®éng c¸c ®èi t•îng cña líp Employee trong bµi 17. ChiÒu dµi m¶ng ®éng còng ®•îc nhËp tõ bµn phÝm. 23. ViÕt mét ch•¬ng tr×nh t×m kiÕm trªn m¶ng ®éng ®· ®•îc x©y dùng trong bµi 22: t×m kiÕm vµ giíi thiÖu vÒ nh©n viªn trÎ nhÊt vµ nh©n viªn giµ nhÊt trong m¶ng ®ã. 24. ViÕt mét ch•¬ng tr×nh t×m kiÕm trªn m¶ng ®éng ®· ®•îc x©y dùng trong bµi 22: t×m kiÕm vµ giíi thiÖu vÒ nh©n viªn cã l•¬ng cao nhÊt vµ nh©n viªn cã l•¬ng thÊp nhÊt trong m¶ng ®ã. 25. ViÕt mét ch•¬ng tr×nh t×m kiÕm trªn m¶ng ®éng ®· ®•îc x©y dùng trong bµi 22: t×m kiÕm vµ giíi thiÖu vÒ nh©n viªn cã tªn x¸c ®Þnh, do ng•êi dïng nhËp tõ bµn phÝm. 26. ViÕt mét ch•¬ng tr×nh khai b¸o líp ph©n sè, x©y dùng c¸c ph•¬ng thøc vµ ph•¬ng thøc to¸n tö ®Ó: a. NhËp mét ph©n sè tõ bµn phÝm b. HiÓn thÞ mét ph©n sè ra mµn h×nh c. Rót gän mét ph©n sè ®Õn d¹ng ph©n sè tèi gi¶n d. TÝnh tæng hai ph©n sè e. TÝnh hiÖu hai ph©n sè f. TÝnh tÝch hai ph©n sè g. TÝnh th•¬ng hai ph©n sè 27. ViÕt mét ch•¬ng tr×nh khai b¸o líp sè phøc, x©y dùng c¸c ph•¬ng thøc vµ ph•¬ng thøc to¸n tö ®Ó: a. NhËp mét sè phøc tõ bµn phÝm b. HiÓn thÞ mét sè phøc ra mµn h×nh Trang - 86 - LËp tr×nh h•íng ®èi t•îng c. TÝnh tæng hai sè phøc d. TÝnh hiÖu hai sè phøc e. TÝnh tÝch hai sè phøc f. TÝnh th•¬ng hai sè phøc 28. ViÕt mét ch•¬ng tr×nh khai b¸o líp ®a thøc bËc n, x©y dùng c¸c ph•¬ng thøc vµ ph•¬ng thøc to¸n tö ®Ó: a. NhËp mét ®a thøc tõ bµn phÝm b. HiÓn thÞ mét ®a thøc ra mµn h×nh c. TÝnh tæng hai ®a thøc d. TÝnh hiÖu hai ®a thøc e. TÝnh tÝch hai ®a thøc 29. ViÕt mét ch•¬ng tr×nh khai b¸o líp Stack, x©y dùng hµm t¹o vµ c¸c ph•¬ng thøc ®Ó: a. Khëi t¹o Stack rçng b. KiÓm tra Stack ®Çy c. KiÓm tra Stack rçng d. Bæ sung mét phÇn tö vµo Stack e. Lo¹i bá phÇn tö ë ®Ønh Stack Sö dông Stack ®Ó kiÓm tra mét x©u ký tù cã ph¶i x©u ®èi xøng kh«ng? 30. ViÕt mét ch•¬ng tr×nh khai b¸o líp ma trËn vu«ng cÊp n, x©y dùng c¸c ph•¬ng thøc vµ ph•¬ng thøc to¸n tö ®Ó: a. NhËp mét ma trËn tõ bµn phÝm b. HiÓn thÞ mét ma trËn ra mµn h×nh c. TÝnh tæng hai ma trËn d. TÝnh hiÖu hai ma trËn e. TÝnh tÝch hai ma trËn f. T×m ma trËn chuyÓn vÞ Trang - 87 -
File đính kèm:
- giao_trinh_lap_trinh_huong_doi_tuong_phan_1.pdf