Một số khái niệm trong OOP• Lớp class: giống như một struct • Đối tượng object: là một thực thể của class • Thuộc tính attribute: các thành phần của một lớp • Phương thức method hay hành
Trang 24 Giới thiệu về lập trình
hướng đối tượng
(Deitel, Chương 3, 9 - 11)
Trang 34.1 Thế nào là OOP?
Trang 4Một số khái niệm trong OOP
• Lớp (class): giống như một struct
• Đối tượng (object): là một thực thể của class
• Thuộc tính (attribute): các thành phần của một lớp
• Phương thức (method) hay hành vi (behavior): các hàm thành phần của một lớp
• Che giấu dữ liệu: hạn chế quyền truy cập tới một vài thành phần của đối tượng
• Giao diện chung: các thành phần của một đối tượng cho phép truy cập từ bên ngoài.
Trang 54.2 Class và Object
Trang 6Ví dụ
Trang 8Hàm const
double getWidth() const;double getLength() const;double getArea() const;
Trang 9Định nghĩa hàm thành viên
int Rectangle::setWidth(double w) {
width = w;
}
Trang 14Con trỏ tới đối tượng
• Có thể định nghĩa con trỏ tới một đối tượng:
Trang 15Cấp phát động một đối tượng
Trang 17Lớp Rectangle với các hàm inline
Trang 184.3 Hàm tạo và hàm hủy
Trang 19Hàm tạo - Constructor
• Hàm thành viên được tự động gọi khi một đối tượng được tạo ra
Trang 24Truyền tham số vào hàm tạo
– Chỉ rõ các tham số trong nguyên mẫu hàm:
Rectangle(double, double);
– Sử dụng các tham số trong định nghĩa hàm:
Rectangle::Rectangle(double w, double len) {
width = w;
length = len;
}
Trang 30InventoryItem.h (Version 2)
Trang 31InventoryItem.h (Version 2)
Trang 32InventoryItem.h (Version 2)
Trang 33Mảng đối tượng
InventoryItem inventory[3] =
{ InventoryItem(“Hammer”, 6.95, 12), InventoryItem(“Wrench”, 8.75, 20), InventoryItem(“Plier”, 3.75, 10) };
Trang 36Ngôn ngữ mô hình hóa UML
• UML = Unified Modeling Languages
• UML cung cấp một tập các biểu đồ chuẩn
để miêu tả một cách hình ảnh các hệ
thống hướng đối tượng
Trang 37Sơ đồ lớp UML
• Một biểu đồ UML cho một lớp có 3 phần
Tên lớp Các biến thành phần
Các hàm thành phần
Trang 38Ví dụ: Lớp Rectangle
Trang 39Kí pháp chỉ định truy cập của UML
• Trong UML, chỉ định một thành phần
private bằng dấu trừ (-) và một thành phần public bằng dấu cộng (+)
Trang 40Ký pháp kiểu dữ liệu của UML
• Để chỉ định kiểu dữ liệu của một biến
thành phần, đặt dấu hai chấm trước tên kiểu dữ liệu và sau tên biến
- width : double
- length : double
Trang 41Ký pháp kiểu tham biến UML
• Để chỉ định kiểu dữ liệu của một tham biến của hàm: đặt dấu hai chấm trước tên kiểu
dữ liệu và sau tên biến
+ setWidth(w : double)
Trang 42Kí pháp kiểu dữ liệu trả về của hàm
• Để chỉ định kiểu dữ liệu trả về của hàm,
đặt dấu hai chấm trước tên của kiểu dữ
liệu và sau danh sách tham biến
+ setWidth(w : double) : void
Trang 43Lớp Rectangle
Trang 44Thể hiện hàm tạo và hàm hủy
Trang 454.4 Class và Object (tiếp)
Trang 46Biến thành phần static
Trang 483 thực thể của lớp Tree, nhưng chỉ
một biến objectCount
Trang 49• Hàm có thể được gọi như sau:
Trang 524.5 Hàm tạo copy
Trang 53Hàm tạo copy
• Là hàm tạo đặc biệt, được sử dụng khi tạo một đối tượng với giá trị giống như một
đối tượng khác cùng lớp
Trang 54Hàm tạo copy
Trang 57Hàm tạo do người lập trình định
nghĩa
Trang 604.6 Chồng toán tử
Trang 61Chồng toán tử
• Nguyên mẫu:
• Kích hoạt:
object1.operator=(object2);object1 = object2;
Trang 62Giá trị trả về
Trang 63Con trỏ this
• this: con trỏ được định nghĩa trước, có thể được sử dụng bởi mọi hàm trong lớp
• Luôn trỏ đến thực thể (đối tượng) của lớp
mà hàm của nó đang được gọi
Trang 64Ví dụ
Trang 654.6 Một số mối quan hệ
giữa các lớp
Trang 66Quan hệ phối hợp (Aggregation)
• Aggregation: một lớp là một thành phần
của một lớp khác
Trang 67Ví dụ
Trang 68Quan hệ giữa Instructor, Course,
TextBook