Bài giảng Lập trình hướng đối tượng - Bùi Trọng Hiếu

ppt 73 trang phuongnguyen 3340
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 - Bùi Trọng Hiếu", để 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:

  • pptbai_giang_lap_trinh_huong_doi_tuong_bui_trong_hieu.ppt

Nội dung text: Bài giảng Lập trình hướng đối tượng - Bùi Trọng Hiếu

  1. 1 Lập trình hướng đối tượng Giảng viên phụ trách: ThS. Bùi Trọng Hiếu Khoa Công Nghệ Thông Tin Văn phòng khoa: 402D Điện thoại VPK: 08 8980891 bhieu70@yahoo.com University of Transport in Ho Chi Minh City
  2. 2 Thông tin về môn học Thời lượng: 45 tiết lý thuyết + 30 tiết thực hành Mục đích: Nắm vững những vấn đề cơ bản của LTHĐT Sử dụng ngôn ngữ lập trình C++/Java để minh họa Thiết kế chương trình theo phương pháp hướng đối tượng Thi: Được sử dụng tài liệu Trắc nghiệm và lập trình Phát biểu/Thảo luận và làm các bài tập: 40% Thi kết thúc môn học/học phần: 60%
  3. 3 Nội dung chính Chương 0 GIỚI THIỆU VỀ LTHĐT Chương 1 LỚP VÀ ĐỐI TƯỢNG Chương 2 QUÁ TẢI TOÁN TỬ Chương 3 THỪA KẾ Chương 4 ĐA HÌNH Chương 5 NGOẠI LỆ Chương 6 TEMPLATE VÀ LẬP TRÌNH TỔNG QUÁT Chương 7 STANDARD TEMPLATE LIBRARY (STL)
  4. 4 Tài nguyên học tập http:://www.deitel.com/books/downloads.html (có slide *.ppt)
  5. 5 Tài nguyên học tập (tt) Ebook ở dạng pdf và html
  6. 6 Tài nguyên học tập (tt) Ebook ở dạng pdf và html
  7. 7 Tài nguyên học tập (tt) Ebook ở dạng pdf
  8. 8 Tài nguyên học tập (tt) Programming with Objects: A Comparative Presentation of Object- Oriented Programming with C++ and Java Ebook ở dạng html
  9. 9 Tài nguyên học tập (tt) Lập trình hướng đối tượng với C++ Nguyễn Thanh Thủy (doc) Chỉ dùng khi không đọc được sách tiếng Anh Vì nội dung cũ (không được cập nhật)
  10. 10 Tài nguyên học tập (tt) C++ Lập trình hướng đối tượng Phạm Văn Ất (Nhà sách) Chỉ dùng khi không đọc được sách tiếng Anh Vì nội dung cũ (không được cập nhật)
  11. 11 Tài nguyên học tập (tt) Lập trình hướng đối tượng sử dụng C++ Trần Văn Lăng (Nhà sách) Chỉ dùng khi không đọc được sách tiếng Anh Vì nội dung cũ (không được cập nhật)
  12. 12 Tài nguyên học tập (tt) C++ Annotations (pdf) Lập trình hướng đối tượng với Java – Đoàn Văn Ban (pdf) C++ Căn bản – Nguyễn Minh Thắng (dịch từ: Core Java 2 Volume I – Foundametals, Seventh Edition (html)
  13. 13 Tài nguyên học tập (tt) Elements of Object-Oriented Program Design (html) How to Design Class Hierarchies (html) Introduction to Object-Oriented Programming Using C++ (html) JDKTM 5.0 Documentation
  14. 14 Môi trường lập trình
  15. 15 Môi trường lập trình (tt)
  16. 16 Môi trường lập trình (tt)
  17. 17 Môi trường lập trình (tt)
  18. 18 Môi trường lập trình (tt)
  19. 19 Môi trường lập trình (tt)
  20. 20 Môi trường lập trình (tt)
  21. 21 Môi trường lập trình (tt)
  22. 22 Môi trường lập trình (tt)
  23. 23 Môi trường lập trình (tt)
  24. 24 Tại sao phải lập trình hướng đối tượng? Sự tiến hóa của các phương pháp lập trình Lập trình không cấu trúc (Unstructured programming) Lập trình thủ tục (Procedural programming) Lập trình đơn thể (Modular programming) Lập trình hướng đối tượng (Object oriented programming)
  25. 25 Lập trình không cấu trúc ➢Một dãy các lệnh đơn giản được viết Program trong chương trình chính (main program). ➢Các lệnh này cùng thao tác trên một dữ liệu (data) toàn cục. Main Program ➢Nhược điểm: Data ✓ Chỉ thích hợp cho các chương trình nhỏ (?) ➢Dẫn đến lập trình thủ tục
  26. 26 Lập trình thủ tục ➢Chương trình có cấu trúc hơn Program ➢Kiểm tra lỗi dễ hơn ➢Chương trình chính có nhiệm vụ Main Program truyền dữ liệu cho các thủ tục ➢Nhóm các thủ tục theo các chức Data năng: Lập trình đơn thể Procedure1 Procedure2 Procedure3
  27. 27 Lập trình đơn thể Main Program(Also a module) Data Module1 Module2 + + Data Data 1 Data Data2 Procedure1 Procedure2 Procedure3 Chương trình chính gọi phối hợp các thủ tục trong các module khác nhau và truyền dữ liệu như là các tham số
  28. 28 Lập trình đơn thể (tt) Main Program(Also a module) Data Module1 Module2 + + Data Data 1 Data Data2 Procedure1 Procedure2 Procedure3 Mỗi module có dữ liệu riêng và độc lập với các module khác
  29. 29 Lập trình hướng đối tượng Dữ liệu và chức Chương trình năng thao tác trên Object1 không dựa trên dữ liệu được gom chức năng mà dựa lại thành một đối Data +Procedures trên đối tượng tượng 1 1 Object2 Data2 + Procedures2 Object3 Data3 + Procedures3 Object4 Data4 + Procedures4
  30. 30 Lập trình hướng đối tượng (tt) Dựa trên ý tưởng Xem thế giới ta đang sống là tuyển tập các đối tượng, ví dụ như : bạn, những người bạn cùng lớp với bạn, con chó của bạn, ĐTDĐ của bạn và Có sự tương tác giữa các đối tượng này bên trong ứng dụng để thực hiện các yêu cầu, ví dụ như: bạn có một con chó, bạn gọi điện thoại bằng ĐTDĐ của bạn, bạn nói chuyện với bạn cùng lớp của bạn Xem dữ liệu (các thuộc tính) và các chức năng/xử lý (các phương thức) trên dữ liệu đó như một đối tượng riêng. Một đối tượng đóng bao cả dữ liệu và các phương thức
  31. 31 Lập trình hướng đối tượng (tt) A simple Sales Order Example Order Product Ship via
  32. 32 Lập trình hướng đối tượng (tt) Mr. A wishes to send some money to Mr. H’s account Mr. A lives in U.S.A Mr. H lives in Dhaka, Bangladesh
  33. 33 Hai phần của một đối tượng Đối tượng = Dữ liệu + Các phương thức = + Hoặc: Đối tượng = Trạng thái + Hành vi = +
  34. 34 Hai phần của một đối tượng (tt) UNIQUE OBJECT IDENTIFIER (OID) I am an object! ATTRIBUTES NAME MARK State DOB 14/02/1964 JOB LECTURER BEHAVIOUR Methods CHANGE JOB GET AGE
  35. 35 Thuộc tính và Phương thức Các thuộc tính Thành phần dữ liệu của một đối tượng Xác định các đặc trưng mô tả của một đối tượng Ví dụ: con chó của bạn có màu nâu, ĐTDĐ của bạn thuộc hãng Nokia Các phương thức Thành phần xử lý của một đối tượng Xác định các hành vi của một đối tượng Ví dụ: con chó đi, ĐTDĐ nhắn tin SMS
  36. 36 Lớp Một khung mẫu (template, blueprint, prototype) để tạo đối tượng Ví dụ: lớp “Chó” xác định các thuộc tính và các phương thức của một con chó, nhưng lớp “Chó” không phải là một đối tượng Một đối tượng được tạo từ một lớp Là một minh họa của một lớp Ví dụ: bạn là một minh họa của lớp “SinhViên”, con chó của bạn là một minh họa của lớp “Chó”
  37. 37 Lớp (tt)
  38. 38 Lớp và đối tượng Các đối tượng của cùng một lớp Có cùng một tập các thuộc tính và các phương thức Ví dụ: mỗi sinh viên có thuộc tính “MãSốSV”, mỗi con chó có thuộc tính “Màu sắc” Có thể có các giá trị thuộc tính khác nhau Ví dụ: các sinh viên khác nhau có thể có giá trị mã số sinh sinh viên khác nhau, các con chó khác nhau có thể có màu sắc khác nhau
  39. 39 Lớp và đối tượng (tt)
  40. 40 Lớp và đối tượng (tt)
  41. 41 Lớp và đối tượng (tt) object class girl Jodie Daria Jane Brittany
  42. 42 Lớp và đối tượng (tt) object class girl Jodie Daria Jane Brittany
  43. 43 Các đặc trưng cơ bản của LTHĐT Trừu tượng (Abstraction) Đóng gói (Encapsulation) Thừa kế (Inheritance) Đa hình (Polymophism) Đơn thể (Modularity) Phân cấp (Hierarchy)
  44. 44 Sự trừu tượng Trích những tính chất cần thiết của đối tượng và bỏ qua những tính chất không cần thiết Xác định một cách nhìn một đối tượng Giá ? Thay xăng? Ví dụ: xe hơi Người bán hàng quan tâm giá, thời gian bảo hành, màu sắc, Người bảo hành quan tâm đến: kích thước đầu bơm xăng, kiểu bugi,
  45. 45 Sự trừu tượng (tt)
  46. 46 Ví dụ thêm về sự trừu tượng Student Professor Course Offering (9:00 AM, Monday-Wednesday-Friday) Course (e.g. Algebra)
  47. 47 Ví dụ thêm về sự trừu tượng
  48. 48 Sự đóng gói Một đối tượng đóng gói cả các thuộc tính và các phương thức của nó Các gắn liền: Một thuộc tính/phương thức gắn liền với một đối tượng Khi đề cập đến một thuộc tính/phương thức, phải chỉ rõ thuộc tính/phương thức của đối tượng nào Tại sao đóng bao ? Khi có một đối tượng, cũng là có được các thành phần dữ liệu và hành vi của nó Rất tốt cho dùng lại
  49. 49 Sự đóng gói (tt)
  50. 50 Sự đóng gói (tt) OBJECT METHOD GET AGE GET AGE NAME: MARK DOB: 14/02/64 JOB: LECTURER CHANGE JOB METHOD CHANGE JOB
  51. 51 Sự đóng gói (tt)
  52. 52 Sự che giấu thông tin Một đối tượng có thể che giấu các chi tiết bên trong của nó Ta không thể biết cách làm việc bên trong của ĐTDĐ của mình ngoài các chức năng trên bàn phím Có thể hiện một vài chi tiết nào đó ra thế giới bên ngoài Hiển thị số điện thoại của mình khi gọi tới máy khác Xác định một giao tiếp (interface) để tương tác với thế giới bên ngoài ĐTDĐ tương tác với bạn thông qua bàn phím và màn hình
  53. 53 Tại sao che giấu thông tin? Một đối tượng có thể có bên trong nó phức tạp nhưng có giao tiếp đơn giản Làm cho giao tiếp với thế giới bên ngoài dễ hơn Không cần biết bên trong của đối tượng Chỉ có giao tiếp mới là quan Manufacture A Manufacture B Manufacture C trọng Nghĩa là làm thế nào để tương tác với nó Thuận tiện cho việc dùng lại code
  54. 54 Sự thừa kế •Sự thừa kế các thuộc tính, phương thức từ các lớp Cơ sở (base)/Cha (super) của các lớp Dẫn xuất (Derived)/ Con (sub) •Sự thừa kế xác định các mối quan hệ “is – a” hoặc “is – a- kind- of” giữa các lớp
  55. 55 Sự thừa kế (tt) •Sự thừa kế hình thành nên phân cấp các lớp •Sự thừa kế mang đến: • Chia sẻ các thuộc tính và phương thứa (tránh viết lại code) • Mô hình hóa sự tổng quát hóa và chuyên biệt hóa trong thế giới thực • Viết các thành phần phần mềm chung, tổng quát (lớp cha/ lớp cơ sở), sau đó mở rộng/ dẫn xuất ra các lớp con/ dẫn xuất cần thiết
  56. 56 Sự đa hình Cùng một phương thức được sử dụng ở lớp cha/cơ sở có thể được định nghĩa lại trong các lớp con/dẫn xuất để đáp ứng với các đối tượng thuộc các lớp khác
  57. 57 Sự đa hình (tt) Khả năng che giấu nhiều cài đặt khác nhau đằng sau một giao tiếp Manufacturer B Manufacturer A Manufacturer C
  58. 58 Ví dụ: Sự đa hình Get Current Value Cổ phiếu Trái phiếu Qũi chung
  59. 59 Đơn thể Phân chia nhỏ một vấn đề phức tạp thành nhiều phần nhỏ, đơn giản hơn quản lý được Đơn thể giúp con người hiểu được các hệ thống phức tạp
  60. 60 Ví dụ: Đơn thể Billing System ? Course Catalog System Course Registration System Student Management System
  61. 61 Sự phân cấp Tài sản Tăng mức độ trừu tượng Tài khoản Chứng khoán Bất động sản Tài khoản Tài khoản Cổ phiếu Trái phiếu tiết kiệm thanh toán Giảm mức độ Các phần tử trên cùng một mức phải có cùng trừu tượng mức độ trừu tượng.
  62. 62 Tóm lại LTHĐT mô hình thế giới như là các đối tượng Các lớp là các khung mẫu Các đối tượng là các minh họa của các lớp Chứa các thuộc tính (dữ liệu) và các phương thức (hàm) Các thuộc tính và các phương thức được đính kèm theo các lớp hoặc các đối tượng LTHĐT tập trung vào việc dùng lại mã lệnh
  63. 63 Các ngôn ngữ lập trình HĐT Là ngôn ngữ có hỗ trợ hướng đối tượng Smalltalk: 1972 – 1980, Alan Kay C++: 1986, Bjarne Stroustrup Java:1992 (Smalltalk + C++), James Gosling C#: Được phát triển tại công ty Microsoft, 2000 Ngôn ngữ lập trình hướng sự kiện, hướng đối tượng, trực quan (C++ và Java) Các ngôn ngữ lập trình khác: Effile, Objective-C, Ada,
  64. 64 C++ and Java Java là một ngôn ngữ lập trình hướng đối tượng đầy đủ, tất cả các mã lệnh đều viết dưới dạng các class C++ thì ngược lại: là một ngôn ngữ lai (hybrid), kết hợp cả lập trình hướng chức năng và hướng đối tượng Vậy: C++ mạnh hơn Java nhưng lại khó viết (diễn đạt) hơn Java. Google "Comparing C++ and Java”! (Bài tập về nhà)
  65. 65 Ngôn ngữ lập trình sử dụng trong môn học này Ngôn ngữ lập trình C++ là chủ đạo Phương pháp luận là thứ nhất Ngôn ngữ lập trình là thứ hai Bjarne Stroustrup
  66. 66 Vì sao chọn C++ ? C++ is a very successful object – oriented language It is required language for more and more students It takes great effort and practice for these students to learn how to program in C++ and how to make object – oriented programs The proposed teaching method is applicable Haibin Zhu, PhD to teaching other languages like Java and C# Department of Computer Science and Mathematics Methodology first and language Nipissing University, North Bay, Canada second: a Way to Teach Object email: haibinz@nipissingu.ca URL: – Oriented Programming nipissingu.ca/faculty/haibinz
  67. 67 5 lời khuyên để đạt kết quả tốt
  68. 68 Làm việc chăm chỉ
  69. 69 Làm bài tập và thực hành nhiều
  70. 70 Tự mình thực hiện các bài tập và thực hành
  71. 71 Kiên nhẫn với máy tính
  72. 72 Nếu cần thiết, nghỉ một tí
  73. 73 Hỏi và Đáp