Tải bản đầy đủ (.pdf) (62 trang)

slide môn lý thuyết ngôn ngữ hđt bài 03 đóng gói và xây dựng lớp, tạo và sử dụng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.54 MB, 62 trang )

BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 03. Đóng gói và xây dựng lớp,
tạo và sử dụng đối tượng.
LÝ THUYẾT NGÔN NGỮ HĐT
Mục tiêu bài học
• Nêu được bản chất, vai trò của trừu tượng hóa
• Giải thích về đóng gói và che giấu thông tin
• Xây dựng lớp
▫ Định nghĩa lớp, thực hiện ẩn
▫ Tạo các phương thức, các trường/thuộc tính
• Tạo và sử dụng đối tượng
▫ Phương thức khởi tạo
▫ Khai báo và khởi tạo đối tượng
▫ Sử dụng đối tượng
2
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và xây dựng lớp
3. Tạo và sử dụng đối tượng
3
1.1. Trừu tượng hóa
• Giảm thiểu và tinh lọc các chi tiết nhằm tập trung
vào một số khái niệm/vấn đề quan tâm tại một
thời điểm.
▫ “abstraction – a concept or idea not associated
with any specific instance”.
▫ Ví dụ: Các định nghĩa toán học
• 2 loại trừu tượng hóa
▫ Trừu tượng hóa điều khiển (control abstraction)


▫ Trừu tượng hóa dữ liệu (data abstraction)
1.1. Trừu tượng hóa (2)
• Trừu tượng hóa điều khiển: Sử dụng các chương trình
con (subprogram) và các luồng điều khiển (control
flow)
▫ Ví dụ: a := (1 + 2) * 5
 Nếu không có trừu tượng hóa điều khiển, LTV phải chỉ ra
tất cả các thanh ghi, các bước tính toán mức nhị phân…
• Trừu tượng hóa dữ liệu: Xử lý dữ liệu theo các cách
khác nhau
▫ Ví dụ: Kiểu dữ liệu
 Sự tách biệt rõ ràng giữa các thuộc tính trừu tượng của kiểu
dữ liệu và các chi tiết thực thi cụ thể của kiểu dữ liệu đó.
1.2. Trừu tượng hóa dữ liệu trong OOP
• Đối tượng trong thực tế phức tạp
• Cần đơn giản hóa, bỏ qua những chi tiết không
cần thiết
• Chỉ “trích rút” lấy những thông tin liên quan,
thông tin quan tâm, quan trọng với bài toán
6
7
1.2. Trừu tượng hóa dữ liệu (3)
• Any model that includes the most important,
essential, or distinguishing aspects of something
while suppressing or ignoring less important,
immaterial, or diversionary details. The result of
removing distinctions so as to emphasize
commonalties (Dictionary of Object Technology,
Firesmith, Eykholt, 1995).
 Cho phép quản lý các bài toán phức tạp bằng cách tập

trung vào các đặc trưng quan trọng của một thực thể
nhằm phân biệt nó với các loại thực thể khác.
8
1.2. Trừu tượng hóa dữ liệu (2)
• Trừu tượng hóa là một
cách nhìn hoặc cách biểu
diễn một thực thể chỉ bao
gồm các thuộc tính liên
quan trong một ngữ cảnh
nào đó.
• Tập hợp các thể hiện của
các thực thể thành các
nhóm có chung các thuộc
tính gọi là Lớp (class).
9
unclassified
"things"
10
• organisms,
mammals,
humans
11
• organisms,
mammals,
dangerous
mammals
12
1.3. Lớp vs. Đối tượng
• Lớp là mô hình khái
niệm, mô tả các thực thể

• Lớp như một bản mẫu,
định nghĩa các thuộc
tính và phương thức
chung của các đối tượng
• Một lớp là sự trừu tượng
hóa của một tập các đối
tượng
13
 Đối tượng là sự vật thật,
là thực thể thực sự
 Đối tượng là một thể
hiện (instance) của một
lớp, dữ liệu của các đối
tượng khác nhau là khác
nhau
 Mỗi đối tượng có một lớp
xác định dữ liệu và hành
vi của nó.
Biểu diễn lớp trong UML
• Lớp (class) được biểu diễn
bằng 1 hình chữ nhật với 3
thành phần:
▫ Tên lớp
▫ Cấu trúc (thuộc tính)
▫ Hành vi (thao tác)
Professor
- name
- employeeID : UniqueId
- hireDate
- status

- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
Thuộc tính (attribute) là gì?
• Một thuộc tính là một đặc tính được đặt tên của
một lớp mô tả khoảng giá trị mà các thể hiện của
đặc tính đó có thể chứa.
▫ Một lớp có thể không có thuộc tính nào hoặc có số
lượng thuộc tính bất kỳ.
Attributes
Student
- name
- address
- studentID
- dateOfBirth
Lớp và đối tượng trong UML
Class
Objects
Student
- name
- address
- studentID
- dateOfBirth
:Student
- name = “M. Modano”
- address = “123 Main St.”

- studentID = 9
- dateOfBirth = “03/10/1967”
sv2:Student
- name = “D. Hatcher”
- address = “456 Oak Ln.”
- studentID = 2
- dateOfBirth = “12/11/1969”
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và xây dựng lớp
3. Tạo và sử dụng đối tượng
17
2.1. Đóng gói (Encapsulation)
• Một đối tượng có hai khung nhìn:
▫ Bên trong: Chi tiết về các thuộc
tính và các phương thức của lớp
tương ứng với đối tượng
▫ Bên ngoài: Các dịch vụ mà một đối
tượng có thể cung cấp và cách đối
tượng đó tương tác với phần còn
lại của hệ thống
18
Meth ods
Data
Client
2.1. Đóng gói (2)
• Dữ liệu/thuộc tính và hành vi/phương thức được
đóng gói trong một lớp  Encapsulation
19
BankAccount

- owner: String
- balance: double
+ debit(double): boolean
+credit(double)
2.1. Đóng gói (3)
• Một đối tượng là một thực thể được đóng gói, cung cấp
tập các dịch vụ nhất định
• Một đối tượng được đóng gói có thể được xem như một
hộp đen – các công việc bên trong là ẩn so với client
20
Don’t know how
it works, but it
works!
Input Output
Dù thay đổi thiết kế/mã nguồn
bên trong nhưng giao diện bên
ngoài không bị thay đổi theo
2.2. Xây dựng lớp
• Thông tin cần thiết để định nghĩa một lớp
▫ Tên (Name)
 Tên lớp nên mô tả đối tượng trong thế giới
thật
 Tên lớp nên là số ít, ngắn gọn, và xác định
rõ ràng cho sự trừu tượng hóa.
▫ Danh sách các phần tử dữ liệu
 Các phần dữ liệu cần lấy ra khi
trừu tượng hóa
▫ Danh sách các thông điệp
 Các thông điệp mà đối tượng đó
có thể nhận được

21
BankAccount
- owner: String
- balance: double
+ debit(double): boolean
+credit(double)
2.2. Xây dựng lớp (2)
• Lớp đóng gói các thành viên (member)
▫ Các trường/thuộc tính (field/attribute)
▫ Các hàm/phương thức (function/method):
22
String owner;
double balance;
Attribute declarations
Method declarations
2.2. Xây dựng lớp (3)
• Các lớp được nhóm lại thành package
▫ Package bao gồm một tập hợp các lớp có quan hệ logic
với nhau,
▫ Package được coi như các thư mục, là nơi tổ chức các
lớp, giúp xác định vị trí dễ dàng và sử dụng các lớp một
cách phù hợp.
• Ví dụ:
▫ Một số package có sẵn của Java: java.lang, javax.swing,
java.io…
▫ Package có thể do ta tự đặt
 Cách nhau bằng dấu “.”
 Quy ước sử dụng ký tự thường để đặt tên package
 Ví dụ: package oop.k52.cnpm;
23

2.2.1. Khai báo lớp
• Cú pháp khai báo:
package tenpackage;
chi_dinh_truy_cap class TenLop {
// Than lop
}
▫ chi_dinh_truy_cap:
 public: Lớp có thể được truy cập từ bất cứ đâu, kể cả
bên ngoài package chứa lớp đó.
 private: Lớp chỉ có thể được truy cập trong phạm vi
lớp đó
 Không có (mặc định): Lớp có thể được truy cập từ
bên trong package chứa lớp đó.
24
Ví dụ - Khai báo lớp
package oop.k52.cnpm;
public class Student {

}
25

×