Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 6: Giới thiệu về đối tượng
Nội dung:
? Giới thiệu về mô-đun
? Độ gắn kết
? Nối kết
? Bao gói dữ liệu
? Kiểu dữ liệu trừu t-ợng
? Thông tin ẩn
? Đối t-ợng
Tóm tắt nội dung Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 6: Giới thiệu về đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Huỳnh Xuân Hiệp - CNPM
67
6 giới thiệu về đối t−ợng(INTRODUCTION TO OBJECTS)
Nội dung:
Giới thiệu về mô-đun
Độ gắn kết
Nối kết
Bao gói dữ liệu
Kiểu dữ liệu trừu t−ợng
Thông tin ẩn
Đối t−ợng
Huỳnh Xuân Hiệp - CNPM
68
6.1 Giới thiệu về mô-đun
(what is a module ?)
Định nghĩa của [Stevens, Myers, và Constantine, 1974] về mô-đun:
tập hợp của một hay nhiều câu lệnh kế tiếp nhau đ−ợc đặt tên,
các phần khác trong ch−ơng trình có thể kích hoạt với tên đ−ợc đặt,
có tập hợp các tên biến riêng biệt.
Mô-đun là một khối đơn các mã lệnh có thể kích hoạt giống nh− thủ tục,
hàm hay ph−ơng thức
Chip 1 Chip 2
Registers
ALU
Registers
ALU
Shifter
Shifter Chip 3
Hình 6.1 Thiết kế của máy vi tính Hình 6.2 Máy vi tính Hình 6.1 chế tạo với 3 chip
Huỳnh Xuân Hiệp - CNPM
69
6.2 Độ gắn kết
(cohesion)
Là mức độ t−ơng tác bên trong một mô-đun
Myers định nghĩa 7 thể loại (mức) gắn kết [Myers, 1978b]
7.
Gắn kết chức năng
Gắn kết thông tin Tốt
5.
4.
3.
2.
1.
Gắn kết truyền thông
Gắn kết thủ tục
Gắn kết thời gian
Gắn kết luận lý
Gắn kết trùng khớp
Xấu
Hình 6.3 Các mức gắn kết
Gắn kết trùng khớp (coincidental cohesion): mô-đun thực hiện nhiều hành
động không liên quan đến nhau
VD: mô-đun với tên nh− in dòng tiếp theo, đảo ng−ợc chuỗi ký tự tham
số thứ hai, thêm 7 cho tham số thứ 5, đổi tham số thứ t− thμnh số thực
Huỳnh Xuân Hiệp - CNPM
70
Gắn kết luận lý (logical cohesion): mô-đun thực hiện chuỗi các hành động
có liên quan với nhau, một trong số đó đ−ợc chọn bởi mô-đun gọi đến
VD: mô-đun thực hiện việc thêm, xóa, cập nhật các mẩu tin trên tập tin
Gắn kết thời gian (temporal cohesion): mô-đun thực hiện chuỗi các hành
động liên quan với nhau theo thời gian
VD: mô-đun với tên nh− mở tập tin cũ, tạo tập tin mới, mở tập tin
giao dịch, in tập tin giao dịch, khởi tạo bảng kinh doanh khu vực,
đọc mẩu tin giao dịch đầu tiên,đọc mẩu tin đầu tiên trong tập tin cũ
Gắn kết thủ tục (procedural cohesion): mô-đun thực hiện chuỗi các hành
động liên quan với nhau theo các b−ớc đúng trình tự phát triển sản phẩm
VD: mô-đun với tên nh− đọc số hiệu bộ phận từ tập tin cơ sở dữ liệu
vμ cập nhật, sửa chữa mẩu tin trên tập tin bảo trì
Gắn kết truyền thông (communcational cohesion): mô-đun thực hiện chuỗi
các hành động liên quan với nhau theo các b−ớc đúng trình tự phát triển
sản phẩm và nếu nh− mọi hành động đều đ−ợc thực hiện trên dữ liệu
giống nhau
VD: mô-đun với tên nh− cập nhật mẩu tin trong cơ sở dữ liệu vμ ghi
vμo sổ hoặc tính toán quỹ đạo vμ gửi ra máy in
Huỳnh Xuân Hiệp - CNPM
71
Gắn kết thông tin (information cohesion): mô-đun thực hiện một số l−ợng
các hành động, mỗi hành động có đầu vào riêng, mã lệnh độc lập và thực
hiện trên dữ liệu giống nhau
VD:
Định nghĩa bảng kinh doanh khu vực
Vào Khởi tạo bảng kinh doanh khu vực
.......... Thoát
Vào Cập nhật bảng kinh doanh khu vực
.......... Thoát
Vào In bảng kinh doanh khu vực
.......... Thoát
Hình 6.4 Mô-đun gắn kết về thông tin
Chức năng: mô-đun thực hiện một hành động hoặc nhận lấy một kết quả
VD: mô-đun với tên nh− lấy nhiệt độ lò; tính toán quỹ đạo của điện
tử; ghi lên đĩa mềm; tính toán tiền hoa hồng
Huỳnh Xuân Hiệp - CNPM
72
Ví dụ về các dạng gắn kết
chức năng
tính toán nhiệt độ trung bình
hàng ngày tại nhiều địa điểm
khác nhau
trùng khớp chức năng chức năng trùng khớp
khởi tạo tổng
số và mở các
tập tin
tạo mẩu tin
nhiệt độ mới
l−u trữ mẩu tin
nhiệt độ
đóng các tập
tin và in nhiệt
độ trung bình
chức năng chức năng
đọc thời gian
và nhiệt độ tại
địa điểm
l−u trữ mẩu tin
cho từng địa
điểm
luận lý
chọn lọc thời
gian hoặc các
tr−ờng nhiệt
độ
Hình 6.5 Biểu diễn dạng gắn kết của từng mô-đun
Huỳnh Xuân Hiệp - CNPM
73
6.3 Nối kết
(coupling)
Là mức độ t−ơng tác giữa hai mô-đun, rất quan trọng trong đánh giá
Các mức độ nối kết
5. Nối kết dữ liệu Tốt
4.
3.
2.
1.
Nối kết nhãn hiệu
Nối kết điều khiển
Nối kết chung
Nối kết nộu dung
Xấu
Hình 6.6 Các mức độ nối kết
Nối kết nội dung(content coupling): hai mô-đun đ−ợc gọi là nối kết về nội
dung nếu nh− chúng có thể tham khảo rực tiếp nội dung của nhau
VD: mô-đun p tham khảo dữ liệu cục bộ của mô-đun q, hoặc mô-đun p
thay đổi một câu lệnh của mô-đun q.
Huỳnh Xuân Hiệp - CNPM
74
Nối kết chung (common coupling): hai mô-đun đ−ợc gọi là nối kết chung
nếu cả hai truy xuất đến các dữ liệu toàn cục giống nhau
VD:
mb
ma
biến toàn cục
Hình 6.7 Nối kết chung
Nối kết điều khiển (control coupling): hai mô-đun đ−ợc gọi là nối kết điều
khiển nếu mô-đun này có thể gửi phàn tử điều khiển đến mô-đun kia (có
thể điều khiển lẫn nhau)
Nối kết nhãn hiệu (stamp coupling): hai mô-đun đ−ợc gọi là nối kết nhãn
hiệu nếu nh− tham số đ−ợc gửi đi là một cấu trúc dữ liệu và mô-đun đ−ợc
gọi chỉ thao tác trên một vài thành phần của cấu trúc dữ liệu đó
Nối kết dữ liệu (data coupling): hai mô-đun đ−ợc gọi là nối kết dữ liệu nếu
nh− tất cả các tham số đều là các mục dữ liệu thuần nhất (homogeneous
data items)
Huỳnh Xuân Hiệp - CNPM
75
Ví dụ về nối kết
p số nhập xuất
1 1 kiểu máy bay cờ trạng thái
q 2 2 - danh sách các phần của máy bay
3 4
p,t và u truy xuất
cùng một cơ sở dữ
liệu trong cập nhật 3 mã hàm -
r s 4 - danh sách các phần của máy bay
5 6 5 số phần phần chế tạo
t u 6 số phần tên phần
Hình 6.8 Sơ đồ các mô-đun nối kết Hình 6.9 Mô tả giao diện Hình 6.6
q r s t u
p Dữ liệu - Dữ liệu hoặc Nhãn hiệu Chung Chung
q Điều khiển Dữ liệu hoặc Nhãn hiệu - -
r Dữ liệu -
s - Dữ liệu
t Chung
Hình 6.10 Nối kết giữa các cặp mô-đun
Huỳnh Xuân Hiệp - CNPM
76
6.4 Bao gói dữ liệu
(data encapsulation)
Là một dạng của trừu t−ợng hóa
m_encapsulation
Definition of job_queue
initialize_job_queue()
{..........}
add_job_to_queue(job j)
{..........}
remove_job_from_queue(job j)
{..........}
Hình 6.11 Thiết kế job_queue trong một
phần hệ điều hành sử dụng bao gói dữ liệu
Huỳnh Xuân Hiệp - CNPM
77
6.5 Kiểu dữ liệu trừu t−ợng
(abstract data types)
Kiểu dữ liệu trừu t−ợng: là kiểu dữ liệu cùng với các thao tác trên chính nó
VD:
class JobQueue
{
// dữ liệu
private int queueLength;
private int queue[25] = new int[25];
// các ph−ơng thức
public void initializeJobQueue()
{...}
public void addJobToQueue(int jobNumber)
{...}
public void removeJobfromQueue()
{...}
}
Hình 6.12 JobQueue cài đặt trên Java nh− là một kiểu dữ liệu trừu t−ợng
Trừu t−ợng hóa thủ tục (procedural abstraction)
Trừu t−ợng hóa lặp (iteration abstraction) [Liskov và Guttag, 1986]
Huỳnh Xuân Hiệp - CNPM
78
6.6 Thông tin ẩn
(information hiding)
Do Parnas đề xuất [Parnas, 1971, 1972a, 1972b]
Cμi đặt chi tiết của:
queue
queueLength
initializeJobQueue
addJobToQueue
removeJobFromQueue
Giao diện:
initializeJobQueue
addJobToQueue
removeJobFromQueue
Thông tin ẩn Thông tin thấy đ−ợc
Hình 6.13 Kiểu dữ liệu trừu t−ợng với thông tin ẩn
Huỳnh Xuân Hiệp - CNPM
79
6.7 Đối t−ợng
(objects)
Là kiểu dữ liệu trừu t−ợng hay mô-đun với thông tin đ−ợc gắn kết
Là thể hiện (instance) của một kiểu dữ liệu trừu t−ợng
Hỗ trợ thừa kế, khái niệm đ−ợc giới thiệu đầu tiên ở ngôn ngữ lập trình
Simula67 [Dahl và Nygaard, 1966; Dahl, Myrhaug and Nygaard, 1973]
Các đối t−ợng với độ gắn kết cao và nối kết thấp
Các đối t−ợng
Các kiểu dữ kiệu trừu t−ợng
Bao gói dữ liệu
Các mô-đun với độ gắn kết cao và nối kết thấp
Các mô-đun
Hỗ trợ đa hình và liên kết động
Một số vấn đề:
gắn kết giữa các mô-đun đ−ợc
thừa kế và các mô-đun định
nghĩa mới
nối kết chung với định nghĩa
công cộng: public
Hình 6.14 Các khái niệm chính
File đính kèm:
Bài giảng Công nghệ phần mềm - Huỳnh Xuân Hiệp - Bài 6 Giới thiệu về đối tượng.pdf

