Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượng

pptx 55 trang vanle 1910
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượ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:

  • pptxlap_trinh_huong_doi_tuong_chuong_1_tong_quan_ve_lap_trinh_hu.pptx

Nội dung text: Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượng

  1. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Object Oriented Programming) Chương 1. Tổng quan về Lập trình hướng đối tượng TRẦN MINH THÁI Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 11 tháng 02 năm 2017
  2. Tài liệu tham khảo #2 1. Trần Minh Thái, Bài giảng & Bài tập Lập trình hướng đối tượng trên Website: www.minhthai.edu.vn 2. Liang, Y. Daniel, “Introduction to Java programming”, 6th edition, Pearson Prentice Hall, 2007 3. Richard L. Halterman, “Object Oriented Programming in Java”, 2008 4. Bruce Eckel, “Thinking in Java”, 4th edition, 2006 5. J. Barker, “Beginning Java Objects – From concept to code”, 2nd edition, 2005 6. C.S.Horsmann, G. Cornell, “Core Java 2”, 2002
  3. Nội dung học phần #3 Chương 1. Tổng quan về lập trình hướng đối tượng Chương 2. Ngôn ngữ lập trình Java Chương 3. Lập trình Hướng đối tượng với Java Chương 4. Vào ra trong Java Chương 5. Lập trình giao diện với Java Chương 6. Lập trình đa luồng
  4. Đánh giá môn học #4 Thực hiện đồ án và vấn đáp (1 – 2 sinh viên/ đồ án) ▪ Quyển báo cáo (file word): 3đ ▪ Chương trình: 4đ ▪ Vấn đáp: 3đ Điểm trừ: Vắng 01 buổi trừ 0.5đ Điểm cộng (Tối đa 2đ): Thảo luận, bài tập tại lớp (+0.25đ/lần) Thời gian nộp và vấn đáp: Sau khi kết thúc môn học 2 tuần
  5. Đăng ký nhóm và đề tài #5 Thời gian: Chậm nhất ngày 24/02/2017 Cách thức đăng ký: Điền thông tin theo mẫu trên web www.minhthai.edu.vn Các đề tài: ▪ Ứng dụng ▪ Game ▪ Các tiện ích
  6. Cấu trúc quyển báo cáo #6 Thứ tự nội dung (trình bày ở các trang khác nhau) 1. Trang bìa 2. Trang bìa lót 3. Phần mục lục 4. Danh mục các từ viết tắt 5. Danh mục các bảng biểu 6. Danh mục các hình vẽ 7. Nội dung của các chương 8. Kết luận 9. Tài liệu tham khảo
  7. Định dạng báo cáo #7 Dùng công cụ soạn thảo MS Word Khổ giấy: A4 Canh lề: Trái: 3 cm; Trên, dưới, phải: 2 cm Độ giãn dòng: 1.5 Font chữ: Times New Roman Kích thước font chữ: Tên chương: 15 (in đậm, canh center), tiêu đề: 13 (in đậm, canh left), nội dung: 13 (in thường, canh justify) Đánh số nội dung: Sử dụng số tự nhiên (tối đa 3 cấp). Ví dụ: Chương 1, mục 1: 1.1, cấp 2 của 1.1 là 1.1.1, cấp 3 là 1.1.1.1 Lưu ý: Các mục lục, danh mục các bảng, danh mục các hình, đánh tài liệu tham khảo phải dùng tool tự động của MS Word
  8. Nội dung các chương #8 Tối thiểu phải gồm các chương sau 1. Mở đầu 2. Phân tích 3. Thiết kế 4. Thử nghiệm kết quả
  9. Chương 1. Tổng quan về OOP #9 Nội dung 1. Vì sao học lập trình hướng đối tượng? 2. Lịch sử các phương pháp lập trình 3. Phương pháp lập trình hướng cấu trúc, thủ tục 4. Các đặc trưng cơ bản của lập trình hướng đối tượng 5. Một số ngôn ngữ lập trình hướng đối tượng
  10. Vì sao học lập trình hướng đối tượng? #10 • Object Oriented Programming (OOP) là phương pháp lập trình quan trọng • Tất cả ngôn ngữ hiện đại đều object oriented hay hỗ trợ object và class • Các framework, library, API hiện đại đều object oriented • .NET Framework Class Library (C#), Java API classes (Java), • Laravel (PHP), Rails (Ruby), • STL (C++), Django (Python), Android, • Bất kỳ ai bắt đầu công việc phát triển phần mềm nên làm quen với OOP và OO modeling
  11. CÁC PHƯƠNG PHÁP LẬP TRÌNH
  12. Phương pháp lập trình (PPLT) #12 • Các hướng dẫn, các bước để viết một chương trình trên máy tính • Có cách “nhìn” về việc xây dựng các chương trình máy tính • Các phương pháp lập trình: • Tuyến tính (Imperative) • Có cấu trúc (Structured) • Thủ tục (Procedural) • Hướng đối tượng (Object oriented) • Chức năng (Functional) • Khai báo (Declarative) •
  13. Lịch sử của PPLT #13 • 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
  14. Lịch sử của PPLT #14 • 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
  15. Các yêu cầu chính của phần mềm #15 • Tính tái sử dụng (reusability) • Tính mở rộng (extensibility) • Tính mềm dẻo (flexibility) • Tính an toàn (security)
  16. Các phương pháp lập trình chính #16 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
  17. Lập trình tuyến tính #17 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
  18. Lập trình tuyến tính: Đặc điểm #18 ▪ 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 ▪ Có những đoạn lệnh được viết lặp đi lặp lại nhiều lần
  19. Lập trình có cấu trúc #19 • Là dạng mở rộng của lập trình tuyến tính • Chương trình có tổ chức, cấu trúc lệnh logic hơn • Đặc điểm: • Các cấu trúc lệnh: lệnh điều kiện, lệnh lặp • 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 • Loại bỏ/ hạn chế lệnh goto
  20. Lập trình có cấu trúc #20 • Khuyết điểm: • Khó phân công cho nhiều người cùng viết • Dữ liệu được “thả tự do” • Có những đoạn lệnh được viết lặp đi lặp lại nhiều lần
  21. Lập trình thủ tục #21 ▪ 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
  22. Lập trình thủ tục #22 ▪ 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) ▪ Tiếp cận theo phương pháp top-down
  23. Lập trình thủ tục: Đặc điểm #23 Ư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
  24. Lập trình thủ tục: Đặc điểm #24 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
  25. Lập trình thủ tục: Đặc điểm #25 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
  26. Lập trình Hướng đối tượng (Object-oriented Programming) #26 ▪ 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 Inheritance Reusability Extensibility OOP Flexibility Security Polymorphism Encapsulation
  27. Lập trình Hướng đối tượng (Object-oriented Programming) #27 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
  28. Lập trình Hướng đối tượng (Object-oriented Programming) #28 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 tái sử dụng code ▪ Tiếp cận bottom-up
  29. Lập trình Hướng đối tượng (Object-oriented Programming) #29 Ư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
  30. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  31. Sự trừu tượng hóa (Abstraction)? #31 • 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)
  32. Sự trừu tượng hoá #32 Thế giới thực Trừu tượng hóa Phần mềm Thuộc tính Thuộc tính Đối tượng Hành vi Phương thức
  33. Sự trừu tượng hoá #33 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 Tương tác giữa các đối tượng Truyền thông Gọi thực hiện điệp phương thức
  34. Đối tượng (Object)? #34
  35. Đối tượng trong thế giới thực (Real Object) #35 • 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 vi (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
  36. Đối tượng Phần mềm (Software Object) #36 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.36
  37. Đối tượng Phần mềm #37 Đố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.
  38. KHÁI NIỆM LỚP (class) VÀ ĐỐI TƯỢNG (object)
  39. Lớp? #39 • 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
  40. Lớp? #40 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
  41. Đối tượng? #41 • Một đối tượng là một thể hiện (instance) 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 giá trị thuộc tính khác nhau • VD: một xe đạp có thể đang chạy ở vận tốc 15 mph/ một xe khác có thể là đang chạy ở vận tốc 10 mph
  42. Ví dụ #42 Khai báo cho lớp XeDap Đối tượng của lớp XeDap 6.42
  43. Các thành phần trong lớp #43 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)
  44. Tương tác giữa các đối tượng #44 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
  45. CÁC ĐẶC TÍNH CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  46. Các đặc tính của hướng đối tượng #46 1. Tính đóng gói (Encapsulation) • Ẩn thông tin (Information Hiding) • Giao tiếp (Interface) 2. Tính thừa kế (Inheritance) 3. Tính đa hình (Polymorphism)
  47. Tính đóng gói #47 Che giấu việc thực thi chi tiết của một đối tượng
  48. Tính đóng gói #48 Giao tiếp: Cung cấp các phương thức cần thiết để sử dụng đối tượng
  49. Ẩn thông tin #49 Cách thức 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
  50. Tính thừa kế #50 Animals
  51. Tính thừa kế #51 • 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.51
  52. Tính Đa Hình #52 Cùng một hành động 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ẽ
  53. Một số ngôn ngữ lập trình HĐT #53 • C++ • C#, VB.Net, J#, VC++ • Java • JavaScript • PHP •
  54. Các bước thiết kế đối tượng #54 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
  55. Q&A #55