You are on page 1of 69

Nhập môn KTLT

(tiếp)

Nguyễn Diệu Hương


huongnd@it-hut.edu.vn
huongnd-fit@mail.hut.edu.vn
4. Giới thiệu về lập trình
hướng đối tượng
(Deitel, Chương 3, 9 - 11)
4.1. Thế nào là OOP?
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 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.
4.2. Class và Object
Ví dụ
Ví dụ
Hàm const
double getWidth() const;
double getLength() const;
double getArea() const;
Định nghĩa hàm thành viên

int Rectangle::setWidth(double w)
{
width = w;
}
Con trỏ tới đối tượng
• Có thể định nghĩa con trỏ tới một đối tượng:
Rectangle *rPtr;

rPtr = &otherRectangle;
rPtr->setLength(12.5);
cout << rPtr->getLength() << endl;
Cấp phát động một đối tượng
Lớp Rectangle với các hàm inline
4.3. Hàm tạo và hàm hủy
Hà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
Truyề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;
}
Hàm hủy
• Hàm thành viên được tự động gọi khi giải phóng
một đối tượng
• Tên hàm hủy là ~ClassName, ví dụ:
~Rectangle
InventoryItem.h (Version 2)
InventoryItem.h (Version 2)
InventoryItem.h (Version 2)
Mảng đối tượng
InventoryItem inventory[3] =
{ InventoryItem(“Hammer”, 6.95, 12),
InventoryItem(“Wrench”, 8.75, 20),
InventoryItem(“Plier”, 3.75, 10) };
Ngô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
Sơ đồ 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


Ví dụ: Lớp Rectangle
Kí 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 (+)
Ký 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
Ký 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)
Kí 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


Lớp Rectangle
Thể hiện hàm tạo và hàm hủy
4.4. Class và Object (tiếp)
Biến thành phần static
3 thực thể của lớp Tree, nhưng chỉ
một biến objectCount
• Hàm có thể được gọi như sau:
4.5. Hàm tạo copy
Hà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.
Hàm tạo copy
Hàm tạo copy
Hàm tạo do người lập trình định
nghĩa
SomeClass::SomeClass(const SomeClass
&obj)
{
value = new int;
*value = *obj.value;
}
Hàm tạo do người lập trình định
nghĩa
Hàm tạo do người lập trình định
nghĩa
• thêm từ khóa const
SomeClass::SomeClass(const SomeClass
&obj)
4.6. Chồng toán tử
Chồng toán tử
• Nguyên mẫu:

• Kích hoạt:
object1.operator=(object2);
object1 = object2;
Giá trị trả về
Con 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
Ví dụ
4.6. Một số mối quan hệ
giữa các lớp
Quan 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.
Ví dụ
Quan hệ giữa Instructor, Course,
TextBook
Quan hệ tổng hợp
(Composition)
• Đối tượng “bị sở hữu” là dành riêng/độc
quyền cho đối tượng chứa nó

Composition Aggregation

Name Person Address

You might also like