Bài giảng Lập trình hướng đối tượng - Chương 1: Giới thiệu - Trần Minh Thái

pptx 40 trang ngocly 1170
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 1: Giới thiệu - Trần Minh Thái", để 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:

  • pptxbai_giang_lap_trinh_huong_doi_tuong_chuong_1_gioi_thieu_tran.pptx

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 1: Giới thiệu - Trần Minh Thái

  1. Lập trình Hướng đối tượng (Object Oriented Programming) Chương 1. Giới thiệu TRẦN MINH THÁI Email: minhthai@itc.edu.vn Website: www.minhthai.edu.vn Cập nhật: 05 tháng 01 năm 2015
  2. Tài liệu tham khảo #2 Trần Minh Thái, Bài giảng & bài tập Lập trình hướng đối tượng trên Web site: www.minhthai.edu.vn Scott Robert Ladd, C++ kỹ thuật và ứng dụng (Nguyễn Hùng biên dịch) Trần Văn Lăng, Lập trình hướng đối tượng với C++ Stroustrup, Bjarne, The C++ Programming Language, Reading, MA: Addison-Wesley (1993) Bruce Eckel, Thinking in C++ 2nd edition, Vol.1&2 Dietel & Dietel. C++ How to Program, 3rd edition
  3. Nội dung học phần #3 Chương 1. Giới thiệu lập trình hướng đối tượng (3 tiết) Chương 2. Giới thiệu ngôn ngữ C++ (6 tiết) Chương 3. Lớp và đối tượng (9 tiết) Chương 4. Đa năng hoá toán tử (6 tiết) Chương 5. Kế thừa đơn và đa kế thừa (9 tiết) Chương 6. Đa hình (6 tiết) Chương 7. Phân tích, thiết kế và hiện thực chương trình theo hướng đối tượng (6 tiết)
  4. Chương 1. Giới thiệu OOP #4 Nội dung 1. Khái niệm về phương pháp lập trình 2. Tổng quan các phương pháp lập trình 3. Giới thiệu những đặc điểm và những vấn đề mới trong phương pháp lập trình hướng đối tượng
  5. Phương pháp lập trình (PPLT)? #5 Xây dựng phần mềm bao gồm rất nhiều công đoạn: phân tích & thiết kế, cài đặt, kiểm tra/thử nghiệm và bảo trì Cài đặt (programming/coding) chỉ là 1 phần trong quá trình trên
  6. Phương pháp lập trình? #6 C++/C#/Java/v.v là NNLT để viết chương trình PPLT là hệ thống hướng dẫn các giai đoạn cần thiết, cấu trúc của một chương trình PPLT là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơn
  7. Các yêu cầu chính của phần mềm #7 Tính tái sử dụng (reusability) Tính mở rộng (extensibility) Tính mềm dẻo (flexibility)
  8. Các phương pháp lập trình #8 Lập trình tuyến tính Thời gian đầu Lập trình có cấu trúc 1960 – 1970 Lập trình hướng đối tượng 1980
  9. (1) Lập trình tuyến tính #9 Chương trình là một dãy các lệnh Lập trình là viết các lệnh trong dãy lệnh Không mang tính thiết kế Tiêu biểu là ngôn ngữ Basic, Fortran
  10. (1) Lập trình tuyến tính: Đặc điểm #10 Chương trình đơn giản, số dòng lệnh ít Thực hiện trình tự từ đầu đến cuối Không có cấu trúc Dùng các lệnh “goto/ gosub” để nhảy đến một vị trí nào đó trong chương trình.
  11. (2) Lập trình có cấu trúc #11 Chương trình là một hệ thống các thủ tục/ hàm. Mỗi thủ tục/ hàm là một dãy các lệnh Lập trình là xây dựng các thủ tục/ hàm Kết quả là hệ thống cấu trúc và mối quan hệ giữa các hàm/ thủ tục Tiêu biểu là ngôn ngữ Pascal, C
  12. (2) Lập trình có cấu trúc #12 Khái niệm trừu tượng hóa (abstraction) theo chức năng: Làm được gì, không quan tâm chi tiết bên trong Phân chia công việc thành các chức năng đơn giản hơn gọi là lập trình đơn thể (module)
  13. (2) Lập trình có cấu trúc: Đặc điểm #13 Ưu điểm Đơn giản hóa quá trình thiết kế và cài đặt Dễ đọc chương trình, hiểu chi tiết bài toán Các chương trình con tương đối độc lập, dễ phân công cho từng nhóm
  14. (2) Lập trình có cấu trúc: Đặc điểm #14 Khuyết điểm Khi thay đổi dữ liệu thì phải thực hiện các thay đổi ở mọi đơn thể có tác động trên chúng Hàm và dữ liệu không có quan hệ với nhau Hàm không hạn chế truy nhập tới các biến toàn cục
  15. (2) Lập trình có cấu trúc: Đặc điểm #15 Khuyết điểm Sai sót trong việc trao đổi thông tin giữa các thành viên trong nhóm có thể mất nhiều thời gian để sửa chữa chương trình Phần xử lý nằm rải rác và phải hiểu rõ cấu trúc dữ liệu Khó bảo trì chương trình
  16. (3) Lập trình Hướng đối tượng (Object-oriented Programming) #16 Tư duy mới, tiếp cận theo hướng đối tượng để giải các bài toán trên máy tính Thiết kế và phát triển phần mềm dựa trên kiến trúc lớp và đối tượng
  17. (3) Lập trình Hướng đối tượng (Object-oriented Programming) #17 Mục tiêu Loại bỏ những thiếu sót của tiếp cận theo thủ tục Tiếp cận theo hướng trừu tượng hoá (abstraction) Dữ liệu được xem là phần trung tâm và được bảo vệ Hàm gắn kết với dữ liệu
  18. (3) Lập trình Hướng đối tượng (Object-oriented Programming) #18 Mục tiêu Phân tách bài toán thành nhiều đối tượng và yêu cầu chúng thực hiện hành động của mình Tăng cường khả năng sử dụng lại Tiếp cận bottom-up
  19. (3) Lập trình Hướng đối tượng (Object-oriented Programming) #19 Ưu điểm Cung cấp một cấu trúc module rõ ràng: Giao diện định nghĩa rõ ràng và chi tiết cài đặt ẩn Duy trì và sửa đổi mã nguồn dễ dàng Cung cấp framework tốt với các thư viện mã nguồn 6.19
  20. Sự trừu tượng hóa (Abstraction)? #20 Trừu tượng hóa ▪ Giao diện – Cài đặt ▪ Cái gì – Thế nào ▪ Phân tích – Thiết kế Các kỹ thuật trừu tượng ▪ Đóng gói (encapsulation) ▪ Ẩn thông tin (information hiding) ▪ Thừa kế (inheritance) ▪ Đa hình (polymorphism) 6.20
  21. Sự trừu tượng hoá #21 Thế giới thực Trừu tượng hóa Phần mềm Thuộc tính Thuộc tính Thực thể Hành động Phương thức
  22. Sự trừu tượng hoá #22 Thế giới thực PPLT Ngôn ngữ lập trình Đối tượng trong thế giới thực Đối tượng Biến có kiểu cấu trúc Khái niệm chung về đối Lớp đối tượng Kiểu dữ liệu cấu trúc tượng Các thông tin được quan tâm Thuộc tính Thành phần thuộc về 1 đối tượng tính của kiểu cấu trúc Các khả năng của đối tượng Phương thức Các phương thức Phân công giữa các đối tượng Yêu cầu Gọi thực hiện phương thức
  23. Đối tượng (Object)? #23
  24. Đối tượng trong thế giới thực (Real Object) #24 Thực thể cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận được Có trạng thái (state) và hành động (behaviour) Một đối tượng có tên gọi và chu trình sống: sinh ra, hoạt động và mất đi
  25. Đối tượng Phần mềm (Software Object) #25 Dùng để biểu diễn các đối tượng thế giới thực Trạng thái: thuộc tính (attribute/ property) Hành động: phương thức (method) 6.25
  26. Đối tượng Phần mềm #26 Đối tượng phần mềm Đối tượng phần mềm Xe Đạp Đối tượng (object) là một Thuộc tính được xác định thực thể phần mềm bao bởi giá trị cụ thể gọi là bọc các thuộc tính và thuộc tính thể hiện. các phương thức liên Một đối tượng cụ thể quan. được gọi là một thể hiện.
  27. Lớp (class)? #27 Nhiều đối tượng cùng loại → lớp Nhiều đối tượng cùng loại chia sẻ những đặc điểm chung
  28. Lớp (class)? #28 Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểu ▪ VD: lớp XeDap là một thiết kế chung cho nhiều đối tượng xe đạp được tạo ra Lớp định nghĩa các thuộc tính và các phương thức chung cho tất cả các đối tượng của cùng một loại nào đó
  29. Lớp (class)? #29 Một đối tượng là một thể hiện cụ thể của một lớp ▪ VD: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap Mỗi thể hiện có thể có những thuộc tính thể hiện khác nhau ▪ VD: một xe đạp có thể đang ở bánh răng thứ 5/ một xe khác có thể là đang ở bánh răng thứ 3
  30. Ví dụ #30 Khai báo cho lớp XeDap Đối tượng của lớp XeDap 6.30
  31. Thuộc tính & Phương thức của lớp #31 Thuộc tính (attribute) là dữ liệu trình bày các đặc điểm về một đối tượng Phương thức (method) có liên quan tới những việc mà đối tượng có thể làm. Một phương thức đáp ứng một chức năng tác động lên dữ liệu của đối tượng (thuộc tính)
  32. Thông điệp & Truyền thông điệp #32 Thông điệp (message) là một yêu cầu một hoạt động ▪ Đối tượng nhận thông điệp ▪ Tên của phương thức thực hiện ▪ Các tham số mà phương thức cần Truyền thông điệp: một đối tượng gọi một hay nhiều phương thức của đối tượng khác để yêu cầu thông tin
  33. Tính đóng gói (Encapsulation) #33 Che giấu việc thực thi chi tiết của một đối tượng
  34. Ẩn thông tin (Information Hiding) #34 Thuộc tính được lưu trữ hay phương thức được cài đặt như thế nào → được che giấu khỏi các đối tượng khác
  35. Tính thừa kế (Inheritance) #35 Animals
  36. Tính thừa kế (Inheritance) #36 Cho phép các lớp được định nghĩa kế thừa từ các lớp khác ▪ VD: lớp xe đạp leo núi và xe đạp đua là những lớp con (subclass) của lớp xe đạp Thừa kế nghĩa là các phương thức và các thuộc tính được định nghĩa trong một lớp có thể được thừa kế hoặc được sử dụng lại bởi lớp khác 6.36
  37. Tính Đa Hình (Polymorphism) #37 Một hành động cùng tên có thể được thực hiện khác nhau bởi các đối tượng/các lớp khác nhau. Ngữ cảnh khác → kết quả khác Điểm Đường Thẳng Hình Tròn Hình Vuông Vẽ
  38. Một số ngôn ngữ lập trình HĐT #38 C++ C#, VB.Net, J#, VC++ Java JavaScript PHP
  39. Các bước thiết kế đối tượng #39 Bước 1: Xây dựng sơ đồ đối tượng ▪ Xác định các lớp đối tượng ▪ Xác định các quan hệ giữa các lớp Bước 2: Thiết kế các lớp Thiết kế thuộc tính, các hành động Bước 3: Cài đặt các lớp Bước 4: Sử dụng các lớp để tạo ra các đối tượng
  40. Q&A #40