Bài giảng Lập trình hướng đối tượng - Chương 2: Tổng quan về lập trình hướng đối tượng - Trần Anh Dũng

pdf 39 trang ngocly 3960
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 2: Tổng quan về lập trình hướng đối tượng - Trần Anh Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_2_tong_quan_ve_la.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 2: Tổng quan về lập trình hướng đối tượng - Trần Anh Dũng

  1. TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ThS. Trần Anh Dũng
  2. Nội dung 1 Giới thiệu 2 Các phương pháp lập trình 3 Một số khái niệm cơ bản 4 Các đặc điểm quan trọng của OOP 55 Một số thuật ngữ OOP 14/09/2014 Lập trình hướng đối tượng 2
  3. Giới thiệu Mục tiêu của kỹ sư lập trình: . Tạo ra sản phẩm tốt một cách cĩ hiệu quả . Nắm bắt được cơng nghệ 14/09/2014 Lập trình hướng đối tượng 3
  4. Giới thiệu Độ phức tạp và độ lớn ngày càng cao: . Một số hệ Unix chứa khoảng 4M dịng lệnh . MS Windows chứa hàng chục triệu dịng lệnh . Người dùng ngày càng địi hỏi nhiều chức năng, đặc biệt là chức năng thơng minh . Phần mềm luơn cần được sửa đổi . 14/09/2014 Lập trình hướng đối tượng 4
  5. Giải pháp Cần kiểm sốt chi phí: . Chi phí phát triển . Chi phí bảo trì Giải pháp chính là sử dụng lại (tái sử dụng): . Giảm chi phí và thời gian phát triển . Nâng cao chất lượng 14/09/2014 Lập trình hướng đối tượng 5
  6. Giải pháp Để sử dụng lại (mã nguồn): . Cần dễ hiểu . Được coi là chính xác . Cĩ giao diện rõ ràng . Tính module hĩa . Khơng yêu cầu thay đổi khi sử dụng trong chương trình mới 14/09/2014 Lập trình hướng đối tượng 6
  7. Mục tiêu của việc thiết kế một phần mềm Tính tái sử dụng (reusability): thiết kế các thành phần cĩ thể được sử dụng trong nhiều phần mềm khác nhau Tính mở rộng (extensibility) Tính mềm dẻo (flexibility): . Cĩ thể dễ dàng thay đổi khi thêm mới dữ liệu hay tính năng. . Các thay đổi khơng làm ảnh hưởng nhiều đến tồn bộ hệ thống 14/09/2014 Lập trình hướng đối tượng 7
  8. Các phương pháp lập trình Sự tiến hĩa của các phương pháp lập trình: . Lập trình khơng cĩ cấu trúc . Lập trình cĩ cấu trúc (lập trình thủ tục), hướng chức năng . Lập trình hướng đối tượng 14/09/2014 Lập trình hướng đối tượng 8
  9. Lập trình khơng cĩ cấu trúc Là phương pháp xuất hiện đầu tiên: . Các ngơn ngữ như Assembly, Basic . Sử dụng các biến tồn cục . Lạm dụng lệnh GOTO Nhược điểm? . Khĩ hiểu, khĩ bảo trì, hầu như khơng thể sử dụng lại . Chất lượng kém, Chi phí cao . Khơng thể phát triển các ứng dụng lớn 14/09/2014 Lập trình hướng đối tượng 9
  10. Lập trình khơng cĩ cấu trúc Ví dụ: 10 k =1 20 gosub 100 30 if y > 120 goto 60 40 k = k+1 50 goto 20 60 print k, y 70 stop 100 y = 3*k*k + 7*k-3 110 return 14/09/2014 Lập trình hướng đối tượng 10
  11. Lập trình cĩ cấu trúc Tổ chức thành các chương trình con (hay các module) Mỗi chương trình con đảm nhận xử lý một cơng việc nhỏ hay một nhĩm cơng việc trong tồn bộ hệ thống. Mỗi chương trình con này lại cĩ thể chia nhỏ thành các chương trình con nhỏ hơn. Chương trình = Cấu trúc dữ liệu + Giải thuật 14/09/2014 Lập trình hướng đối tượng 11
  12. Lập trình cĩ cấu trúc Sử dụng các lệnh cĩ cấu trúc: for, do, while, if then else Các ngơn ngữ: Pascal, C, Chương trình là tập các hàm/thủ tục Ưu điểm? . Chương trình được module hĩa, do đĩ dễ hiểu, dễ bảo trì hơn . Dễ dàng tạo ra các thư viện phần mềm 14/09/2014 Lập trình hướng đối tượng 12
  13. Lập trình cĩ cấu trúc Ví dụ: struct Date { int year, mon, day; }; // void print_date(Date d) { printf(“%d / %d / %d\n”, d.day, d.mon, d.year); } 14/09/2014 Lập trình hướng đối tượng 13
  14. Lập trình cĩ cấu trúc Nhược điểm? . Dữ liệu và mã xử lý là tách rời . Người lập trình phải biết cấu trúc dữ liệu . Khi thay đổi cấu trúc dữ liệu thuật tốn phải thay đổi theo . Khĩ đảm bảo tính đúng đắn của dữ liệu . Khơng tự động khởi tạo hay giải phĩng dữ liệu động . Khơng mơ tả được đầy đủ, trung thực hệ thống trong thực tế 14/09/2014 Lập trình hướng đối tượng 14
  15. Lập trình 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 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. 14/09/2014 Lập trình hướng đối tượng 15
  16. Lập trình Hướng đối tượng Lập trình hướng đối tượng là phương pháp lập trình dựa trên kiến trúc lớp (class) và đối tượng (object) 14/09/2014 Lập trình hướng đối tượng 16
  17. Một số khái niệm cơ bản Đối tượng (object) Lớp (class) 14/09/2014 Lập trình hướng đối tượng 17
  18. Một số khái niệm cơ bản Đối tượng (object): . Trong thế giới thực, đối tượng được hiểu như là một thực thể: người, vật hoặc một bảng dữ liệu . Mỗi đối tượng sẽ tồn tại trong một hệ thống và cĩ ý nghĩa nhất định trong hệ thống. . Đối tượng giúp biểu diễn tốt hơn thế giới thực trên máy tính . Mỗi đối tượng bao gồm 2 thành phần: thuộc tính và thao tác (hành động). 14/09/2014 Lập trình hướng đối tượng 18
  19. Một số khái niệm cơ bản Ví dụ đối tượng: một người . Một người cĩ các thuộc tính: tên, tuổi, địa chỉ, màu mắt . Các hành động: đi, nĩi, thở Một đối tượng là 1 thực thể bao gồm thuộc tính và hành động 14/09/2014 Lập trình hướng đối tượng 19
  20. Một số khái niệm cơ bản Lớp (class): . Các đối tượng cĩ các đặc tính tương tự nhau được gom chung thành lớp đối tượng. Một lớp đối tượng đặc trưng bằng các thuộc tính, và các hành động (hành vi, thao tác). . Thuộc tính (Attribute): Một thành phần của đối tượng, cĩ giá trị nhất định cho mỗi đối tượng tại mỗi thời điểm trong hệ thống. . Thao tác (Operation): Thể hiện hành vi của một đối tượng tác động qua lại với các đối tượng khác hoặc với chính nĩ. 14/09/2014 Lập trình hướng đối tượng 20
  21. Một số khái niệm cơ bản Mỗi thao tác trên một lớp đối tượng cụ thể tương ứng với một cài đặt cụ thể khác nhau. Một cài đặt như vậy được gọi là một phương thức (method). Cùng một phương thức cĩ thể được áp dụng cho nhiều lớp đối tượng khác nhau, một thao tác như vậy được gọi là cĩ tính đa hình (polymorphism). Một đối tượng cụ thể thuộc một lớp được gọi là một thể hiện (instance) của lớp đĩ. 14/09/2014 Lập trình hướng đối tượng 21
  22. Interacting Objects Class A Class B Private: Private: data members data members Member methods Member methods Public: Public: Constructor Constructor Message passing Destructor Destructor Other Other public methods public methods Private: Private: methods methods 14/09/2014 Lập trình hướng đối tượng 22
  23. Sơ đồ đối tượng Ta dùng sơ đồ đối tượng để mơ tả các lớp đối tượng. Sơ đồ đối tượng bao gồm sơ đồ lớp và sơ đồ thể hiện. Sơ đồ lớp mơ tả các lớp đối tượng trong hệ thống, một lớp đối tượng được diễn tả bằng một hình chữ nhật gồm 3 phần: . Phần đầu chỉ tên lớp . Phần 2 mơ tả các thuộc tính . Phần 3 mơ tả các thao tác của các đối tượng trong lớp 14/09/2014 Lập trình hướng đối tượng 23
  24. Sơ đồ lớp và sơ đồ thể hiện Tên lớp Sinh viên (Sinh viên) Họ tên Nguyễn Văn A Năm sinh 1984 Thuộc tính Mã số 0610234T Điểm TB 9.2 Đi học Thao tác Đi thi Phân loại Sơ đồ lớp Sơ đồ thể hiện Đối tượng = Dữ liệu + Phương thức 14/09/2014 Lập trình hướng đối tượng 24
  25. Thiết kế theo hướng đối tượng Trừu tượng hĩa dữ liệu và các hàm/thủ tục liên quan. Chia hệ thống ra thành các lớp/đối tượng. Mỗi lớp/đối tượng cĩ các tính năng và hành động chuyên biệt. Các lớp cĩ thể được sử dụng để tạo ra nhiều đối tượng cụ thể. 14/09/2014 Lập trình hướng đối tượng 25
  26. Các đặc điểm quan trọng của OOP Các lớp đối tượng - Classes Đĩng gĩi - Encapsulation Thừa kế - Inheritance Đa hình - Polymorphism 14/09/2014 Lập trình hướng đối tượng 26
  27. Trừu tượng hĩa Thế giới thực Trừu tượng hĩa Phần mềm Thuộc tính Dữ liệu Thực thể Hành động hàm 14/09/2014 Lập trình hướng đối tượng 27
  28. Trừu tượng hĩa Cách nhìn khái quát hĩa về một tập các đối tượng cĩ chung các đặc điểm được quan tâm (và bỏ qua những chi tiết khơng cần thiết). 14/09/2014 Lập trình hướng đối tượng 28
  29. Đĩng gĩi – Che dấu thơng tin Đĩng gĩi: Nhĩm những gì cĩ liên quan với nhau vào làm một, để sau này cĩ thể dùng một cái tên để gọi đến . Các hàm/ thủ tục đĩng gĩi các câu lệnh . Các đối tượng đĩng gĩi dữ liệu của chúng và các thủ tục cĩ liên quan 14/09/2014 Lập trình hướng đối tượng 29
  30. Đĩng gĩi – Che dấu thơng tin Che dấu thơng tin: đĩng gĩi để che một số thơng tin và chi tiết cài đặt nội bộ để bên ngồi khơng nhìn thấy . Che giấu những gì mà người dùng khơng cần. . Che giấu những gì mà mình cần giữ bí mật. 14/09/2014 Lập trình hướng đối tượng 30
  31. Thừa kế Là cơ chế cho phép một lớp D cĩ được các thuộc tính và thao tác của lớp C, như thể các thuộc tính và thao tác đĩ đã được định nghĩa tại lớp D. Cho phép cài đặt nhiều quan hệ giữa các đối tượng: . Đặc biệt hĩa (“là”) . Khái quát hĩa 14/09/2014 Lập trình hướng đối tượng 31
  32. Đa hình Là cơ chế cho phép một tên thao tác hoặc thuộc tính cĩ thể được định nghĩa tại nhiều lớp và cĩ thể cĩ nhiều cài đặt khác nhau tại mỗi lớp trong các lớp đĩ. 14/09/2014 Lập trình hướng đối tượng 32
  33. Các ưu điểm của OOP Nguyên lý kế thừa: tránh lặp, tái sử dụng. Nguyên lý đĩng gĩi – che dấu thơng tin: chương trình an tồn khơng bị thay đổi bới những đoạn chương trình khác Dễ mở rộng, nâng cấp Mơ phỏng thế giới thực tốt hơn. 14/09/2014 Lập trình hướng đối tượng 33
  34. Các đặc tính chính của OOP Chương trình được chia thành các đối tượng. Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng. Các hàm thao tác trên các vùng dữ liệu của đối tượng được gắn với cấu trúc dữ liệu đĩ. 14/09/2014 Lập trình hướng đối tượng 34
  35. Các đặc tính chính của OOP Dữ liệu được đĩng gĩi lại, được che giấu và khơng cho phép các hàm ngoại lai truy nhập tự do. Các đối tượng tác động và trao đổi thơng tin với nhau qua các hàm. Cĩ thể dễ dàng bổ sung dữ liệu và các hàm mới vào đối tượng nào đĩ khi cần thiết. Chương trình được thiết kế theo cách tiếp cận từ dưới lên (bottom-up). 14/09/2014 Lập trình hướng đối tượng 35
  36. Một số thuật ngữ OOP OOM (Object Oriented Methodology): Phương pháp luận hướng đối tượng OOA (Object Oriented Analysis): Phân tích hướng đối tượng. OOD: Object Oriented Design (Thiết kế hướng đối tượng). OOP: Object Oriented Programming (LTHĐT). Inheritance: Kế thừa Polymorphism: Đa hình Encapsulation: Tính đĩng gĩi. 14/09/2014 Lập trình hướng đối tượng 36
  37. Ngơn ngữ OOP Cung cấp được những khả năng lập trình hướng đối tượng. . Cung cấp khả năng kiểm sốt truy cập . Kế thừa . Đa hình 14/09/2014 Lập trình hướng đối tượng 37
  38. Bài kiểm tra 1 Viết chương trình cho phép nhập một dãy phân số. Cài đặt hàm tính tổng các phân số và tìm phân số lớn nhất. 14/09/2014 Lập trình hướng đối tượng 38