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
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:
- bai_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
- Chương 2 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Lập trình hướng đối tượng (tt) • Sự trừu tượng hóa (abstraction) 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 –
- 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
- 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
- Ẩn thông tin là 1 tính chất của bao gói 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Các đặc điểm của OOP • Tính thừa kế (tt) – Thừa kế bội 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
- 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
- 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
- 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
- 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
- Tự tham khảo 42
- UML - Unified Modeling Language 43
- UML • Giới thiệu về UML • Các loại biểu đồ trong UML • Biểu đồ lớp 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
- 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
- Sơ đồ lớp (Class Diagram) • Lớp 47
- Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp (Association) 48
- Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp (Association) 49
- Sơ đồ lớp (Class Diagram) • Quan hệ kết hợp 50
- Sơ đồ lớp (Class Diagram) • Quan hệ tập hợp (Aggregation) 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
- Sơ đồ lớp (Class Diagram) • Thừa kế (inheritance) 53