Chương 3
Lập trình Hướng đối tượng với Java – P1
TRẦN MINH THÁI
Email:
Website: www.minhthai.edu.vn
Cập nhật: 02 tháng 03 năm 2017
Nội dung
#2
1.
2.
3.
Khai báo lớp và đối tượng trong Java
Phương thức khởi tạo
Các phạm vi trong Java, cách sử dụng
#3
Các khái niệm về hướng đối tượng
Lập trình hướng đối tượng (OOP)
#4
•
Mô hình hóa các đối tượng trong thế giới thực thành đối tượng phần mềm
Chương trình = Đối tượng + Thông điệp
•
Một đối tượng gồm có
•
•
Thuộc tính: các đặc điểm, trạng thái của đối tượng
Hành vi: các hành vi/ chức năng của đối tượng
Lớp đối tượng là gì?
#5
•
Lớp đối tượng (class): định nghĩa danh sách các thuộc tính (dữ liệu) và các phương thức chung
của một nhóm đối tượng nào đó
•
Lớp là khái niệm trung tâm của OOP, là sự mở rộng của khái niệm cấu trúc (struct)
Lớp = thuộc tính + phương thức
Lớp đối tượng là gì?
#6
•
•
•
Lớp được xem như một kiểu dữ liệu (kiểu đối tượng)
Lớp giúp lập trình viên:
•
•
•
Trừu tượng hóa dữ liệu
Đóng gói
và ẩn thông tin
Lớp là mô hình hóa rút gọn của thực thể trên thực tế, chỉ mô tả những thuộc tính, phương thức
quan tâm
Đối tượng là gì?
#7
•
•
Đối tượng (Object): là một thể hiện cụ thể của lớp, các thuộc tính có giá trị xác định
Đối tượng được xem như là một biến có kiểu dữ liệu là lớp
Lớp đối tượng vs Đối tượng?
#8
Thể hiện
#9
Các nguyên lý cơ bản
của hướng đối tượng
Nguyên lý cơ bản của OOP
#10
Trừu tượng hoá
#11
•
•
•
Loại bỏ đi các thông tin cụ thể, giữ lại các thông tin chung
Tập trung vào các đặc điểm chính của thực thể, làm cho nó khác biệt với những thực thể khác
Phụ thuộc vào góc nhìn
Trừu tượng hoá
#12
1
5 7
Khái
Số nguyên
-3
8 ....
quát
( int )
hóa
int, NGUOI, PERSON
Danh từ chung trong
là các ADT
ngôn ngữ tự nhiên
Người
( PERSON )
Khái
quát
date_of_birth,
hóa
attributes
Address, e-mail
.......>
Đóng gói – Module hoá
#13
•
•
Chia nhỏ hệ thống phức tạp thành các đối tượng nhỏ hơn
Đóng gói: Che giấu, ẩn chi tiết thực hiện bên trong
•
•
•
Hành vi riêng/ nội (private, internal): hành vi xử lý dữ liệu bên trong của đối tượng
Cung cấp cho các đối tượng khác (client) một hành vi giao tiếp (public/ interface methods)
Tính trong suốt: Thay đổi việc thực thi bên trong không làm ảnh hưởng tới các đối tượng khác
Phân cấp
#14
•
Một nhóm đối tượng mang những đặc điểm khác biệt với những đối tượng khác có thể tách
thành nhóm con
•
Lặp lại bước trên ta có cây phân cấp
#15
Cách xây dựng lớp đối tượng
Xây dựng lớp đối tượng
#16
•
Lớp đóng gói các thành viên và chỉ định điều khiển truy cập tới các thành viên:
•
•
•
Thuộc tính
Phương thức
Tập hợp các lớp được nhóm lại thành gói (package). Mỗi lớp trong gói cũng được chỉ định điều
khiển truy cập
Xây dựng lớp đối tượng
#17
Các từ khóa chỉ định điều khiển truy cập trong Java:
•
•
•
•
public: có thể truy cập từ mọi nơi
protected: có thể truy cập từ trong gói hoặc từ các lớp con
private: chỉ có thể truy cập từ chính lớp đó
Không chỉ định: có thể truy cập từ trong gói
Các bước xây dựng lớp đối tượng
#18
Bước 1: Mô hình hóa lớp đối tượng
Phát hiện các thuộc tính và hành vi
Bước 2: Mô tả phần tiêu đề của lớp
Bước 3: Định nghĩa thuộc tính
Bước 4: Định nghĩa phương thức getter, setter
Bước 5: Định nghĩa phương thức constructor
Bước 6: Định nghĩa phương thức
Bước 1: Mô hình hoá lớp đối tượng
#19
•
•
•
Ta cần biết/ quan tâm những thông tin gì về một đối tượng thuộc lớp này thuộc tính
Ta thực sự cần xử lý (tác động) gì từ bên ngoài lên đối tượng hành vi giao tiếp
Để có được hành vi giao tiếp, có cần thêm những xử lý mà bên ngoài không cần biết? hành
vi nội
Bước 1: Mô hình hoá lớp trừu tượng
#20
Một lớp cần có:
•
•
•
•
•
Tên lớp
Danh sách các thuộc tính (fields)
Phương thức getter, setter
Phương thức constructor
Các phương thức: khởi tạo, cập nhật, kiểm tra ràng buộc, xử lý tính toán, cung cấp thông tin
#21
Xác định thành phần thuộc tính (field)
Xác định thuộc tính
#22
•
Đối với mỗi đối tượng, xác định các thông tin cần lưu trữ. Sau đó lập bảng mô tả thuộc tính như
sau:
St
•
Thuộc tính
Kiểu/ lớp
Ràng buộc
Diễn giải
Nếu có ràng buộc liên thuộc tính thì lập thêm bảng sau:
St
Mô tả ràng buộc
Thuộc tính
liên quan
Ghi chú
Xác định thuộc tính
#23
Ràng buộc là các quy định, quy tắc áp đặt trên các giá trị thuộc tính của đối tượng trong lớp, sao cho
đối tượng này thể hiện đúng với thực tế
•
•
Ràng buộc tĩnh: ràng buộc trên giá trị thuộc tính
Ràng buộc động: ràng buộc trên biến đổi giá trị thuộc tính
Ví dụ:
•
•
“Lương của nhân viên ít nhất là 1.500.000 đồng” Tĩnh
“Lương của nhân viên chỉ có thể tăng” Động
23
Ví dụ 1 xét lớp PhanSo
#24
St
Thuộc
tính
Kiểu/ lớp
1
tuSo
Số nguyên
2
mauSo
Số nguyên
Ràng buộc
Diễn giải
Tử số
mauSo ≠ 0
Mẫu số
Ví dụ 2 xét lớp MyDate
#25
St
Thuộc
Tính
Kiểu/ lớp
Ràng buộc
Diễn giải
1
day
Số nguyên
1≤day≤31
Ngày
2
month
Số nguyên
1≤month≤12
Tháng
3
year
Số nguyên
Năm