1 / 19

Lập trình hướng đối tượng Object Oriented Programming

Lập trình hướng đối tượng Object Oriented Programming. Tổng Quan. Lập trình hướng đối tượng là gì ? Sự phát triển của phương pháp lập trình hướng đối tượng . Lớp (class) – Đối tượng (Object). Các tính chất trong lập trình hướng đối tượng. Lập trình hướng đối tượng là gì ?.

Download Presentation

Lập trình hướng đối tượng Object Oriented Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LậptrìnhhướngđốitượngObject Oriented Programming

  2. TổngQuan • Lậptrìnhhướngđốitượnglàgì? • Sựpháttriểncủaphươngpháplậptrìnhhướngđốitượng. • Lớp (class) – Đốitượng (Object). • Cáctínhchấttronglậptrìnhhướngđốitượng.

  3. Lậptrìnhhướngđốitượnglàgì? • Lậptrìnhhướngđốitượng (gọitắtlà OOP – Object Oriented Programming) • Đểhiểurõhơn, taphảixétcácphươngpháplậptrìnhtrướcđểthấyđượcưuđiểmcủaphươngpháplậptrìnhhướngđốitượng.

  4. SựpháttriểncủaphươngpháplậptrìnhhướngđốitượngSựpháttriểncủaphươngpháplậptrìnhhướngđốitượng • Lậptrìnhkhôngcấutrúc (Unstructured Programming) • Lậptrìnhthủtục (Procedural Programming) • Lậptrìnhhướngđốitượng (OOP) • …

  5. Lậptrìnhkhôngcấutrúc (Unstructured Programming) Tấtcảlệnhđượcviếttrongchươngtrìnhchínhtheo 1 cáchtuầntựtừđầutớicuối, từlệnhnàytớilệnhkiatớikhikếtthúcchươngtrình.  Chỉnênápdụngchochươngtrìnhlàm 1 việcduynhất (chươngtrìnhnhỏ)

  6. Lậptrìnhthủtục (Procedural Programming) • Chươngtrìnhđượcchiathànhnhiềuchươngtrình con, chươngtrìnhchínhsẽtùyvàogiảithuậtvàgọitừngchươngtrình con khicần. • Chươngtrìnhcócấutrúc, dễkiểmlỗi, giảithuậtrõràng. Tuynhiên: Chươngtrình = Cấutrúcdữliệu + Giảithuật - Cấutrúcdữliệu: Cáchtổchứcdữliệu, cáccấutrúcbàitoántheongônngữlậptrình • Giảithuật: Mộtquytrìnhđểthựchiệnbàitoán ( Trongchươngtrình, giảithuậtphụthuộcvàocấutrúcdữliệu, cấutrúcdữliệuchỉphụthuộcvào 1 sốgiảithuậtnhấtđịnh, nếucấutrúcdữliệubịthayđổigiảithuậtphảithayđổitheochophùhợp, mộtgiảithuậtthườngđikèmvới 1 sốkiểudữliệunhấtđịnh)

  7. Lậptrìnhhướngđốitượng (OOP) • Đâylà 1 gócnhìnthựctếtớilậptrình. • Đốitượnglànềntảngxâydựngthuậtgiải. • Dữliệuvàchứcnăngthaotáctrêndữliệuđượcgomlạithànhđốitượng. Chươngtrìnhdựatấtcảtrênđốitượng. • Lậptrìnhhướngđốitượngliênkếtcấutrúcdữliệuvớicácthaotáctheocáchchúngtanghĩvềthếgiớihiệntại, chúngtacóthểgắnmộtsốcáchoạtđộngcụthểvới 1 loạihoạtđộngnàođóvàđặtgiảthiếtlêncácquanhệđóđểgiảiquyếtvấnđề. • Vídụ: Ta cóthểnhậnbiếtmọithứtrongđờisốngnhưlàcácđốitượng, như 1 ngôinhà, 1 ngườibạn, 1 cáicây… chúnggồmcácthuộctính (attributes) vànhữnghành vi (actions) xungquanhchúng. • Hướngđốitượnglà 1 quátrìnhđờisốnghóaquátrìnhpháttriểnphầnmềm, phầnmềmlúcnàykhôngphảilà 1 tậplệnh hay tậpcác module đượcgọikhicóyêucầu. Phầnmềmlúcnàylà 1 tậpcácđốitượng, cácđốitượngnàythựcthicáccôngviệchoặcmangtrongmìnhnhữngnguyênliệu (data) màchươngtrìnhcần. Mộtđốitượngcóthểgồmcácđốitượng con nhỏhơnvàđốitượng con cóthểchứanhìuđốitượng con khác. Mỗiđốitươngcóthểlàthuộctính (attributes) củađốitượnglớnhơnchứanó.

  8. Lậptrìnhhướngđốitượng (OOP) • Môhìnhhóadữliệu (data) vàhành vi (action) đượcgọilàphươngpháplậptrìnhhướngđốitượng OOP. • Vídụ: Ngườilà 1 đốitượng, ngườicóđầu, tay, chân…vàđầu, tay, chân…cũnglànhữngđốitượng. Đốitượngcóthuộctính (attributes) làmắt, tóc, tai….cóhành vi (actions) làsuynghĩ, nghe, nhìn…mắtnhìn, tai nghe…tậphợpthông tin chonãoxửlý, xửlýxongnếulàđồănngonthìchỉthịchochântayhànhđộnglàlấytiềnmuavềăn :D tấtcảnhữnghành vi nàytạonên 1 hành vi lớnlàhành vi củađốitượngngười • ĐốitươngThuộctính • + Dữliệucủađốitượng • + Xácđịnhđặctrưngcủađốitượngđượcmiêutả • Vídụ: Con chómàutrắng, hoặc con chóthuộcgiốngNhật… • Phươngthức • + Thànhphầnxửlýcủa 1 đốitượng • + Xácđịnhhành vi củađốitượng • Vídụ: Con chónằmngủ, con chóăn, con chósủa…

  9. Lớp (class) – Đốitượng (Object) • Những quy chuẩn chung nhất về thuộc tính và hành vi cho tập đối tượng được gọi là lớp.Một lớp là một xác định ở cấp chủng loại của một tập thực thể có những đặc tính và hành vi giống nhau.Lớp là một mô hình khái niệm. Nó mang tính tổng quát, quy chuẩn chứ không mang tính đặc thù, cụ thể.Lớp giống như một nguyên mẫu cho tập đối tượng có cùng tập thuộc liệu (attributes) và tập hành vi (actions).Trong lập trình hướng đối tượng, lớp nhóm hóa, đóng gói dữ liệu, điều biến chức năng thực thi (module hóa các xử lý, hành vi), ... rồi từ đó cấu trúc hóa thành một hệ thống trong cài đặt hướng đối tượng.

  10. Lớp (class) – Đốitượng (Object) • Vídụ: • Chúng ta có nhiều đối tượng người. Mỗi đối tượng này có màu da khác nhau nhưng tất cả đều có da.Tóc cóthểdài ngắn, thẳng xoăn khác nhau nhưng tất cả đối tượng người đều có tóc (trừ những người đã cạo hoặc bị rụng).Như vậy, nhắc đến đối tượng người, chúng ta nghĩ ngay đến người phải có tóc, có chân, có đầu, có mắt,... mặc dù đầu có thể to, có thể nhỏ; chân có thể ngắn, có thể dài; màu tóc có thể xanh, đỏ, tím, vàng,... Người được gọi là lớp - LỚP NGƯỜI.Cây, ví dụ một cây bằng lăng và một cây xà cừ. Cả hai đều có thân, có lá, có cành, có rễ, có hoa mặc dù hoa có thể khác nhau, hình dạng lá khác nhau. Chúng ta có LỚP CÂY. Khi nhắc đến từ CÂY, chúng ta sẽ hình dung ra ngay chúng có cành, lá, rễ, hoa,... mặc dù cụ thể như thế nào thì phải biết đích xác một cây (đối tượng cây) hiện hữu.Những quy chuẩn chung nhất về thuộc tính và hành vi cho tập đối tượng được gọi là lớp.

  11. Lớp (class) – Đốitượng (Object) Class DOG

  12. Cáctínhchấttronglậptrìnhhướngđốitượng • Trừutượng (Abtraction) • Đónggói(Encapsulation) – Chedấuthông tin(Information hiding) • Thừakế (Inheritance) • Đahình (Polymophism)

  13. Trừutượng (Abtraction) • TrừutượnghóadữliệuAbtraction • Phânnhómđốitượngtheothuộctínhvàhành vi (chỉquantâmđếnnhững chi tiếtquantrọng, bỏ qua những chi tiếtkhôngliênquan) • Vídụ: 1 kháchhàngtớiđặtphòng 1 kháchsạn ĐốitượngkháchgồmcácthuộctínhnhưHọtên, ngàysinh, địachỉ, số CMND, …. Vàhànhđộngthuêphòngchỉcầnlưucácthông tin cầnthiếtnhưhọtênkhách, số CMND, sốngườitốiđa, sốphòngthuê, giátiền… - 1 lớpđốitượnglà 1 nhómđốitượngcócùngtậphợplàthuộctínhvàhànhđộng

  14. Đónggói(Encapsulation) – Chedấuthông tin (Information hiding) • Đónggói:-1 đốitượngđónggóicảphươngthứcvàthuộctínhcủanó - 1 thuộctính/phươngthứcgắnliềnvới 1 đốitượng- Khiđềcậptới 1 thuộctính/phươngthứcphảichỉrõphươngthức/thuộctínhthuộcđốitượngnào Khitacó 1 đốitượng, cũngcóluôncácthànhphầndữliệuvàhành vi củanó • Chedấuthông tin: - 1 đốitượngcóthểchedấucác chi tiếtbêntrongcủanóvàchỉthểhiện 1 số chi tiếtbênngoàiđểgiaotiếp ngườisửdụngsẽđơngiản.

  15. Thừakế (inheritane) • Các đối tượngcó chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lạitừlớpcơsở (base)/ cha(super) củalớp con(sub) • Thừakếhìnhthànhlênsựphâncấpcáclớp • Chiasẻcácphươngthức, thuộctínhmàkocầnviếtlại Vídụ: 1 lớp A1 thừakếlớp A nghĩalàlớp A1 thừakếtấtcảcácphươngthức, thuộctínhlà protected hoặc public của A

  16. Thừakế (Inheritance) • public class A {   public int a;   protected int b;   private int c;// constructor – Hàmkhởitạo - củalớp A.      public A() {       a = 0;       b = 1;       c = 2;   }   public intgetNextA() {       return a+1;   }   public intgetNextB() {       return b+1;   }   public intgetNextC() {       return c+1;   }}

  17. Thừakế (Inheristance) • public class A1: A {   public void setA (int a) {this.a = a;   }   public void setB (int b) {this.b = b;   }/* HàmsetCnàylỗinè:D   public void setC (int c) {this.c = c;   }   /**    * hàm main sausẽ in rakếtquả: a = 1; b = 2; c = 3;    */   static void main() {       A1 a1 = new A1();Console.WriteLine("a = " + a1.getNextA()                          + "; b = " + a1.getNextB()                          + "; c = " + a1.getNextC() + ";");  }}

  18. Thừakế (inheritane)

  19. Đahình (Polymorphism) • Tínhđahìnhchophépmôtảnhữngphươngthứccótêngiốngnhautrongcáclớpkhácnhau • Vídụ : Objects KháchHàng và NhânViên đều có Property Name. Nếu ta có thể lập trình để dùng Name mà không cần nói rõ nó thuộc về Object KháchHàng hay NhânViên thì đó là Polymorphism :D • 1. Overloading: trong 1 class cóthểcó 1 method nhưngcáchdùngthìkhácnhau, cóthểthamsốkhácnhau, hoặckiểudữliệucủathamsốkhácnhau • Vídụ: Class Math có method là add() • - Ta gọi: Math.add(1,1) kếtquả 2 • - HoặcMath.add(1,1,1) kếtquảlà 3 • - HoặcMath.add(“a”,”b”)  kếtquảlàab Lưu ý làtrong class Math mìnhphảicó 3 method này, cùngtên, nhưngkháckiểudữliệuhoặcsốthamsố 2. Overriding: class A kếthừatừlớp B, class B có 1 method là add cộng 2 số. Vậy A kếthừa B thì A cũngcó method add(), Ở A khi overriding thì add() của A cóthểlàm 1 việckháclàtrừ, nhân, chia….

More Related