Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng

pdf 53 trang Gia Huy 17/05/2022 3101
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 C++ - Chương 2: 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:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_c_chuong_2_lap_trinh_huo.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng

  1. Chương 2 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1
  2. Nội dung • Lập trình thông thường. • Lập trình hướng đối tượng. • Unified Modeling Language - UML. 2
  3. Lập trình thông thường • Lập trình tuyến tính – Tư duy theo lối tuần tự, đơn giản. – Đơn luồng và các công việc được thực hiện tuần tự trong luồng đó. – Tồn tại trong modul nhỏ của phương pháp lập trình khác. – Không giải quyết được các yêu cầu phức tạp. 3
  4. Lập trình thông thường (tt) • Lập trình cấu trúc Cấu trúc dữ liệu + Giải thuật = Chương trình – Cấu trúc dữ liệu: cách tổ chức dữ liệu, mô tả bài toán dưới dạng ngôn ngữ lập trình. – Giải thuật: một quy trình để thực hiện một công việc xác định. 4
  5. Lập trình thông thường (tt) • Lập trình cấu trúc (tt) – Phân chia chương trình chính thành các chương trình con cho phù hợp với yêu cầu, chức năng và mục đích của mỗi bài toán – Giải thuật luôn phụ thuộc chặt chẽ vào cấu trúc dữ liệu 5
  6. Lập trình hướng đối tượng • Một số khái niệm cơ bản • Lập trình hướng đối tượng Object Oriented Programming – OOP • Các đặc điểm của OOP 6
  7. Một số khái niệm cơ bản • Đối tượng (Object) – Trong thế giới thực: • đối tượng là một thực thể (entity) cụ thể mà thông thường ta có thể sờ, nhìn thấy hay cảm nhận được. – Trong lập trình: • Dùng để mô tả 1 người, sự vật hay khái niệm. • Đối tượng là cái mà ứng dụng muốn đề cập đến. • Trong hệ thống hướng đối tượng, mọi thứ đều là đối tượng. 7
  8. Một số khái niệm cơ bản (tt) • Đối tượng trong thế giới thực Trạng thái: • màu • hãng sản xuất • model • giá Hành động: xe hơi • • Dừng • Chạy • Tăng tốc •Thắng • 8
  9. Một số khái niệm cơ bản (tt) • Đối tượng trong thế giới thực (tt) – Mọi đối tượng đều có trạng thái (state) và hành động (behavior) 9
  10. Một số khái niệm cơ bản (tt) • Đối tượng trong lập trình – Thuộc tính, đặc tính, dữ liệu (attribute, property, data): • Trình bày, mô tả các đặc điểm của đối tượng. – Phương thức, ứng xử, hàm (method, behavior, function): • Liên quan đến những thứ đối tượng làm. • Tác động lên dữ liệu của đối tượng. 10
  11. Một số khái niệm cơ bản (tt) Thuộc tính: •tiêu đề •nội dung •kích thước •màu Phương thức: •vẽ •di chuyển •đổi kích thước •đóng, 11
  12. Một số khái niệm cơ bản (tt) Thuộc tính: •Màu lá •Màu thân •Chiều cao •Tọa độ Phương thức: •vẽ 13
  13. Một số khái niệm cơ bản (tt) • Thể hiện (instance) – Thuộc tính được xác định giá trị cụ thể. – Đối tượng cụ thể gọi là một thể hiện. Đối tượng (object) là một thực thể Đối tượng Xe đạp phần mềm bao bọc các thuộc tính (là 1 thể hiện) bởi các phương thức liên quan. 14
  14. Một số khái niệm cơ bản (tt) • Lớp (class) – Là mẫu (prototype) của các đối tượng cùng kiểu. – Là khuôn để đổ ra các đối tượng. – Định nghĩa các thuộc tính và phương thức chung cho các đối tượng có cùng loại. VD: Lớp XeDap là thiết kế chung cho các đối tượng xe mini, xe đòn, xe đầm, xe đua, xe leo núi, 15
  15. Một số khái niệm cơ bản (tt) • Lớp (class) – Lớp tạo ra đối tượng: bằng cách gán giá trị cụ thể cho các thuộc tính. • Lớp được tạo ra khi biên dịch • Đối tượng tạo ra khi thực thi chương trình. Đối tượng là một thể hiện (instance) của 1 lớp 16
  16. NhanVien – Mã nhân viên – Họ và tên – Năm sinh – Nghề nghiệp – Địa chỉ – Hệ số lương – Chức vụ + Làm việc () Ông Bà TTB Ông + Nghỉ phép () NVA LVC + Lãnh lương () 17
  17. Một số khái niệm cơ bản (tt) • Truyền thông báo – Thông báo (message): là 1 lời yêu cầu 1 hoạt động. – Thông báo bao gồm: • Đối tượng nhận thông điệp. • Hoạt động (tên của phương thức thực hiện). • Chi tiết thực hiện (giá trị các tham số). – Truyền thông báo: kích hoạt hàm cùng tên trên 1 đối tượng để yêu cầu thông tin. 18
  18. NhanVien NhanVien – Mã nhân – 8494 viên – NVA – Họ và tên – 1970 – Năm sinh – Ths Tin học – Nghề nghiệp – ĐH Tây Đô – Địa chỉ – 3.04 – Hệ số lương – Giảng viên – Chức vụ + Làm việc () Ông + Nghỉ phép () NVA NVA.nghỉ phép + Lãnh lương (22/9/2009) () 19
  19. Lập trình hướng đối tượng • Một số khái niệm cơ bản • Lập trình hướng đối tượng (Object Oriented Programming – OOP) • Các đặc điểm của OOP 20
  20. Lập trình hướng đối tượng (OOP) Thuộc tính + Hàm = Đối tượng Các thể hiện, đặc tính, Các hoạt động, trạng thái của đối thao tác của đối Mục tiêu chính tượng tượng ■ Phân tích bài toán thành nhiều đối tượng. ■ Quan tâm đến dữ liệu hơn thủ tục. ■ Dữ liệu được bảo vệ (che giấu) và không thể truy xuất từ bên ngoài đối tượng. 21
  21. Lập trình hướng đối tượng (tt) ✓ Dữ liệu và thủ tục được Dữ xử lý chặc chẽ với nhau. liệu ✓ Quan tâm đến mối liên Hàm Đối hệ giữa thủ tục và dữ tượng liệu. 1 Dữ ✓ Dễ chỉnh sửa, thêm mới Dữ liệu liệu dữ liệu và hàm trong 1 Hàm đối tượng. Hàm Đối Đối tượng ✓ Mục tiêu là tăng cường tượng 2 3 khả năng sử dụng lại. 22
  22. Lập trình hướng đối tượng (tt) • Sự trừu tượng hóa (abstraction) 23
  23. Lập trình hướng đối tượng (tt) • Sự trừu tượng hóa (abstraction) – Là bước tiến hóa tiếp theo từ lập trình cấu trúc. – Chỉ quan tâm đến những đặc điểm cần thiết (phớt lờ đi những chi tiết) tùy vào ngữ cảnh: VD: Phân tích thông tin của 1 người: - Trong ngữ cảnh làm việc trong trường. - Trong ngữ cảnh học tại trường? NhanVien – Mã nhân viên – Họ và tên – Năm sinh 24 –
  24. Các đặc điểm của OOP • Tính bao gói • Tính thừa kế • Ảo hóa • Đa hình 25
  25. Tính bao gói • Là đặc điểm chủ yếu của OOP. • Che giấu việc thực thi chi tiết của 1 đối tượng. • Ngăn sự tác động từ đối tượng khác đến dữ liệu. 26
  26. Ẩn thông tin là 1 tính chất của bao gói 27
  27. Tính bao gói (tt) – Thể hiện sự kết hợp chặc chẽ giữa thuộc tính và phương thức. – Định nghĩa lớp: là việc đóng gói nhiều thành phần lại với nhau. – Xác định và giới hạn các đường truy cập đến lớp. 28
  28. Tính bao gói (tt) – Các thuộc tính truy cập: – Dùng chung (public): có quyền được truy xuất từ bất kỳ vị trí nào. – Dùng riêng (private): chỉ truy xuất được từ bên trong lớp (trong các phương thức của lớp đó). – Được bảo vệ (protected): chỉ truy xuất được từ bên trong lớp và các lớp thừa kế từ nó. 29
  29. Các đặc điểm của OOP • Tính thừa kế (inheritance) – Nhóm các đặc tính chung lại với nhau. – Sử dụng lại (kế thừa) các đặc trưng chung (thuộc tính + phương thức) của 1 lớp cho trước. – Ích lợi: • Chia sẻ và sử dụng lại những lớp đã có: – Tận dụng lại các thuộc tính chung. – Tận dụng lại các thao tác tương tự. • Thiết kế lớp gọn nhẹ, đơn giản hơn. 30
  30. Các đặc điểm của OOP • Tính thừa kế (tt) – Chú ý: tránh thiết kế sai về mặt ý nghĩa. VD: Lớp XeHơi thừa kế từ lớp BánhXe là SAI. – Lớp con phải chính là lớp cha, ngoài ra còn phải có thêm những đặc trưng riêng của nó: • Thêm hàm hoặc thêm thuộc tính • Tái định nghĩa hàm của lớp cha, đổi kiểu thuộc tính • Dùng hàm ảo 31
  31. Con người – Tên – Giới tính Sinh viên Nhân viên – Lớp học – Nghề nghiệp – Điểm thi Toán – Hệ số lương + Tính điểm + Nghỉ phép() TB() 32
  32. Các đặc điểm của OOP • Tính thừa kế (tt) – Lớp con sẽ có tất cả các thành phần của lớp cha nhưng chỉ được quyền truy xuất thành phần mà lớp cha cho phép (public + protected). – Lớp cha không thể truy xuất được thành phần của lớp con. 33
  33. Các đặc điểm của OOP • Tính thừa kế (tt) – Các thành phần của lớp con sẽ che đi các thành phần trùng tên trong lớp cha. • Khi truy xuất thành phần trùng tên đó sẽ truy xuất thành phần của lớp con. • Muốn truy xuất thành phần của lớp cha, phải chỉ rõ. – Trong C++: :: – Trong Java: super. 34
  34. Các đặc điểm của OOP • Tính thừa kế – Thừa kế đơn: thừa kế từ 1 lớp – Thừa kế bội: thừa kế từ 2 lớp trở lên. • Tận dụng được nhiều thành phần có sẵn. • Dễ gây ra xung đột, cạnh tranh. 35
  35. Các đặc điểm của OOP • Tính thừa kế (tt) – Thừa kế bội 36
  36. Các đặc điểm của OOP • Ảo hóa (virtualization) – Kể tên trong lớp cha một ứng xử chung (hàm ảo – virtual, abstract) cho tập hợp các lớp con. – Khi nhận yêu cầu, tùy vào đối tượng thuộc lớp nào sẽ có ứng xử riêng (thực thi hàm tương ứng của lớp đó). 37
  37. Các đặc điểm của OOP • Ảo hóa Vd: 1. “Vẽ”: cho tập hợp các đối tượng hình học (điểm, đường thẳng, hình tròn, hình vuông, ) 2. “Kêu”: cho tập hợp các con vật (chó, mèo, gà, vịt, ) 3. “Về nhà”: cho tập hợp các học sinh (đi bộ, đi xe đạp, đi xe gắn máy, đi xe buýt, ) 38
  38. Các đặc điểm của OOP • Ảo hóa – Hàm ảo: • Không nhất thiết phải cần định nghĩa ở lớp cha. • Phải được định nghĩa lại trong lớp con. – Lớp ảo: • Chỉ dùng khai báo các hàm ảo bên trong. • Không được dùng để tạo ra đối tượng. 39
  39. Các đặc điểm của OOP • Tính đa hình (polymorphism) – Các đối tượng khác nhau khi nhận chung 1 yêu cầu vẫn có thể có những ứng xử khác nhau. – Kỹ thuật sử dụng: hàm ảo Điểm Đường Thẳng Hình Tròn Hình Vuông “Vẽ” 40
  40. Các đặc điểm của OOP • Tính đa hình – Các hành động cùng tên thực thi trên cùng 1 đối tượng vẫn có thể thực hiện khác nhau (có kết quả khác nhau) tùy thuộc vào ngữ cảnh. – Kỹ thuật sử dụng: tái định nghĩa hàm • Hàm trùng tên • Khác tham số (số lượng, thứ tự, kiểu) 41
  41. Tự tham khảo 42
  42. UML - Unified Modeling Language 43
  43. UML • Giới thiệu về UML • Các loại biểu đồ trong UML • Biểu đồ lớp 44
  44. Giới thiệu UML – Tạm dịch là ngôn ngữ mô hình hóa thống nhất. – Ra đời vào năm 1997 và hiện nay đang được sử dụng rất phổ biến. – Bao gồm một hệ thống các ký hiệu đồ họa, biểu đồ (sơ đồ) thống nhất dùng để thiết kế các hệ thống thông tin (IS) theo hướng đối tượng. – Được sử dụng cho các giai đoạn phân tích, thiết kế, triển khai và kiểm thử phần mềm. – Các CaseTool (Rational Rose, System Architect, Argo UML, Visual Paradigm for UML, Umbrello ) hỗ trợ UML trong việc phát sinh chương trình tự động cho các ngôn ngữ OOP. 45
  45. Các loại biểu đồ trong UML • UML Diagram – Use Cases Diagram (biểu đồ tình huống sử dụng) – Class Diagram (biểu đồ lớp) – Sequence Diagram (biểu đồ trình tự) – Collaboration Diagram (biểu đồ cộng tác) – State Diagram (biểu đồ trạng thái) – Component Diagram (biểu đồ thành phần) – Deployment Diagram (biểu đồ triển khai) 46
  46. Sơ đồ lớp (Class Diagram) • Lớp 47
  47. Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp (Association) 48
  48. Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp (Association) 49
  49. Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp 50
  50. Sơ đồ lớp (Class Diagram) • Quan hệ tập hợp (Aggregation) 51
  51. Sơ đồ lớp (Class Diagram) • Quan hệ tổng hợp (Composition) Composition là 1 dạng Aggregation đặc biệt trong đó cái tổng thể sẽ được cấu thành hoặc hủy bỏ từ những thành phần của nó. 52
  52. Sơ đồ lớp (Class Diagram) • Thừa kế (inheritance) 53