Bài giảng Các mẫu thiết kế hướng đối tượng - Chương 2: Cấu trúc phần mềm hướng đối tượng

Chương 2  
Cấu trúc phần mềm hướng ₫ối tượng  
2.1 Sự phát triển trong cấu trúc tổ chức phần mềm  
2.2 Cấu trúc của 1 ứng dụng hướng ₫ối tượng  
2.3 Đối tượng, thuộc tính, tác vụ  
2.4 Abstract type  
2.5 Class  
2.6 Tính bao ₫óng  
2.7 Tính thừa kế & cơ chế 'override'  
2.8 Tính bao gộp  
2.9 Thông ₫iệpa và ểrkiểu  
2.10 Tính tổng quát hóa  
2.11 Kết chương  
Môn : Các mẫu thiết kế hướng đối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 1  
. Ban ₫ầu, chương trình thường rất  
ngắn, chỉ giải quyết 1 vấn ₫ề nhỏ,  
rõ ràng, ₫ơn giản.  
. Lúc này, chương trình là 1 danh  
sách ngắn các lệnh, các lệnh này  
sẽ xử lý tập các dữ liệu (số lượng  
cũng rất ít).  
Môn : Các mẫu thiết kế hướng đối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 2  
. Nếu phân tích kỹ hơn, ta thấy trong  
danh sách các lệnh của chương  
trình có hiện tượng sau : ₫oạn lệnh  
giải quyết vần về nhỏ hơn nào ₫ó  
xuất hiện nhiều lần vì chương trình  
cần thực hiện nó nhiều lần.  
. Ta viết ₫oạn lệnh này 1 lần, gán  
cho nó 1 tên nhận dạng. Ta gọi nó  
là chương trình con. Trong họ ngôn  
ngữ C, ta dùng thuật ngữ function.  
. Function giúp ta tổ chức chương  
trình nhất quán hơn, gọn nhẹ hơn,  
dễ bảo trì và phát triển hơn.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 3  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
. Trong chương trình bên phải, ta  
thấy chức năng tính cos(x) cần 3 lần  
Cos(0)  
trong chương trình, ta ₫ịnh nghĩa  
hàm cos(x) 1 lần với tham số x.  
Cos(90)  
Cos(45)  
. Mỗi khi cần tính cos(x) trong  
chương trình, ta chỉ cần viết 1 lệnh  
gọi hàm ₫ơn giản.  
Cos(x)  
Môn : Các mẫu thiết kế hướng đối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 4  
. Trong thực tế hiện nay, chương trình thường giải quyết nhiều vấn  
₫ề lớn, phức tạp, nó tương ứng với số lượng rất lớn các hàm và  
dữ liệu. Lúc này ₫ể chúng trong 1 module (file) rất bất tiện, khó  
duy trì...  
. Ta phải tìm cách khác tổ chức phần mềm : phân rã module rất  
lớn và phức tạp ban ₫ầu thành nhiều module nhỏ : mỗi module  
chỉ chứa 1 ít hàm chức năng và dữ liệu có mối quan hệ mật thiết  
nào ₫ó.  
. Đây là cách tổ chức phần mềm hướng cấu trúc cổ ₫iển trước ₫ây.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 5  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Chương trình = tập các module chức năng, mỗi module chứa 1 số  
hàm + dữ liệu có liên quan.  
dữ liệu  
trong  
module  
Module  
(file)  
nhưng có  
thể ₫ược  
truy xuất tự  
do bất kỳ  
₫âu  
Điểm nhập  
chương  
trình (hàm  
Main)  
dữ liệu cục  
bộ trong  
từng hàm  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 6  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
. Mặc dù mỗi hàm hay dữ liệu ₫ược ₫ặt trong 1 module xác ₫ịnh,  
nhưng mặc ₫ịnh chúng ₫ược truy xuất tự do bới bất kỳ ₫âu trong  
chương trình. Đây là 1 khuyết ₫iểm lớn, ta khắc phục bằng cách  
miêu tả tầm vực riêng cho từng phần tử : mặc ₫ịnh trong các  
ngôn ngữ C, C++, mỗi phần tử ₫ều có tầm vực công cộng, nghĩa  
là bất kỳ ₫âu trong chương trình ₫ều truy xuất ₫ược nó.  
. Nếu muốn hạn chế việc truy xuất từ ngoài module, ta dùng từ  
khóa static kết hợp với phần tử cần bao ₫óng, phần tử sẽ có tầm  
vực cục bộ, bên ngoài module không truy xuất ₫ược nó nữa.  
tử là ₫ịnh nghĩa nó theo cấu trúc lồng nhau dạng phân cấp : nếu  
A chức B thì B chơi khác bên ngoài A  
sẽ không thấy và truy xuất ₫ược B. Pascal là ngôn ngữ ₫iển hình  
về hỗ trợ khả năng này.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 7  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
. Cho dù ₫ã dùng 1 số biện pháp ở slide trước thì cấu trúc tổ chức  
phần mềm hướng cấu trúc vẫn còn 1 số khuyết ₫iểm khác.  
. Thí dụ, trong phần mềm ta cần nhiều module có cùng chức năng  
A, số lượng là ₫ộng chưa biết trước. Cấu trúc hướng cấu trúc chỉ  
cho phép nhân bản module A với số lượng tĩnh biết trước khi  
phần mềm chạy. Do ₫ó ta cần tìm 1 cấu trúc tổ chức phần mềm  
khác : ₫ó là cấu trúc tổ chức phần mềm hướng ₫ối tượng mà ta  
dùng chủ yếu hiện nay.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 8  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Cấu trúc tổ chức chương trình OOP  
Chương trình = tập các ₫ối tượng sống ₫ộc lập, tương tác nhau khi  
cần thiết ₫ể hoàn thành nhiệm vụ của chương trình (ứng dụng).  
Đối tượng  
(object)  
dữ liệu cục  
bộ trong  
₫ối tượng  
Điểm nhập  
chương  
trình (hàm  
Main)  
dữ liệu cục  
bộ trong  
từng hàm  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 9  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Cấu trúc tổ chức chương trình OOP  
. Cấu trúc chương trình hướng ₫ối tượng rất thuần nhất, chỉ chứa 1  
loại thành phần : ₫ối tượng.  
. Các ₫ối tượng có tính ₫ộc lập rất cao quản lý, kiểm soát chương  
trình rất dễ (cho dù chương trình có thể rất lớn) dễ nâng cấp,  
bảo trì.  
. Không thể tạo ra dữ liệu toàn cục của chương trình ₫iểm yếu  
nhất của chương trình cấu trúc không tồn tại nữa.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 10  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.3 Đối tượng (Object)  
Đối tượng là nguyên tử cấu thành ứng dụng.  
Đối tượng bao gồm 2 loại thành phần chính yếu :  
. Tập các tác vụ (operation) : mỗi tác vụ thực hiện 1 chức năng  
rõ ràng ₫ơn giản nào ₫ó mà bên ngoài cần dùng.  
. Tập các thuộc tính dữ liệu (attribute) : mỗi thuộc tính có kiểu  
dữ liệu cụ thể, irtc kiểu tương ứng tại  
từng thời ₫iểm. Các thuộc tính phục vụ cho các tác vụ và là  
₫ối tượng xử lý bởi các tác vụ, do ₫ó nên bao ₫óng và ẩn dấu  
chúng trong ₫ối tượng, không cho bên ngoài thấy và truy xuất  
trực tiếp.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 11  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.3 Đối tượng (Object)  
Viết phần mềm hướng ₫ối tượng là qui trình ₫ặc tả các loại ₫ối  
tượng cấu thành ứng dụng.  
Đặc tả một loại ₫ối tượng là ₫ặc tả 2 góc nhìn khác nhau về ₫ối  
tượng :  
. Góc nhìn sử dụng : dùng phát biểu interface.  
. Góc nhìn hiện thực cụ thể : dùng phát biểu class.  
Implementation  
(class)  
Interface  
(abstract type)  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 12  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Phát biểu interface ₫ịnh nghĩa thông tin sử dụng ₫ối tượng mà  
bên ngoài thấy, kết hợp các thông tin này với 1 tên gọi, tên này  
₫ược gọi là tên kiểu trừu tượng (Abstract type) hay ngắn gọn là  
type.  
Interface là tập hợp các ₫iểm nhập (entry) mà bên ngoài có thể  
giao tiếp với ₫ối tượng. C# cho phép ₫ịnh nghĩa nhiều loại ₫iểm  
nhập, nhưng phổ biến nhất là tác vụ chức năng (operation).  
Ta dùng chữ ký (signature) ₫ể ₫ịnh nghĩa và phân biệt mỗi ₫iểm  
nhập. Chữ ký của 1 tác vụ gồm :  
1. tên tác vụ (operation)  
thuộc tính : tên, type và chiều di chuyển (IN, OUT, INOUT).  
3. ₫ặc tả chức năng của tác vụ (thường ở dạng chú thích).  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 13  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Muốn làm việc với 1 ₫ối tượng nào ₫ó, ta thường dùng biến ₫ối  
tượng. Biến ₫ối tượng nên ₫ược ₫ặc tả kiểu bằng tên interface,  
hạn chế dùng tên class cụ thể.  
Biến ₫ối tượng là biến tham khảo, nó không chứa trực tiếp ₫ối  
tượng, nó chỉ chứa các thông tin ₫ể truy xuất ₫ược ₫ối tượng, bất  
chấp ₫ối tượng ₫ang nằm ở ₫âu.  
Biến ₫ối tượng thuộc kiểu interface có thể tham khảo ₫ến nhiều  
₫ối tượng thuộc các class cụ thể khác nhau miễn sao các ₫ối  
tượng này hỗ trợ ₫ược interface tương ứng.  
interface thì ta không cần biết bất kỳ thông tin hiện thực chi tiết  
₫ộc lập hoàn toàn với class hiện thực của ₫ối tượng ₫ược sử dụng  
trong ứng dụng.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 14  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Thí dụ interface  
Thí dụ sau ₫ây miêu tả 1 interface của ₫ối tượng mà hỗ trợ 2 tác  
vụ chuẩn hóa chuỗi tiếng Việt về dạng tổ hợp và dựng sẵn.  
Thông qua interface, người dùng không hề thấy và biết chi tiết về  
hiện thực của các tác vụ, nhưng ₫iều này không hề ngăn cản họ  
trong việc dùng ₫ối tượng nào ₫ó có interface IVietLib.  
interface IVietLib {  
//tác vụ chuẩn hóa chuỗi tiếng Việt về dạng tổ hợp  
int VnPre2Comp(String src, int len, ref String dst);  
//tác vụ chuẩn hóa chuỗi tiếng Việt về dạng dựng sẵn  
int VnComp2Pre(String src, int len, ref String dst);  
}
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 15  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.5 Class (Implementation)  
Phát biểu class ₫ịnh nghĩa chi tiết hiện thực ₫ối tượng :  
. ₫ịnh nghĩa các thuộc tính, mỗi thuộc tính ₫ược ₫ặc tả bởi các  
thông tin về nó như tên nhận dạng, kiểu dữ liệu, tầm vực truy  
xuất,... Kiểu của thuộc tính có thể là type cổ ₫iển (kiểu giá trị :  
số nguyên, thực, ký tự, chuỗi ký tự,...) hay kiểu ₫ối tượng (kiểu  
tham khảo), trong trường hợp sau thuộc tính sẽ là tham khảo  
₫ến ₫ối tượng khác. Trạng thái của ₫ối tượng là tập giá trị của  
tất cả thuộc tính của ₫ối tượng tại thời ₫iểm tương ứng.  
. 'coding' các tác vụ (miêu tả giải thuật chi tiết về hoạt ₫ộng của  
Ngoài các thành phần chức năng, ta còn phải ₫ịnh nghĩa các tác  
vụ quản lý ₫ối tượng như : khởi tạo trạng thái ban ₫ầu  
(constructor), dọn dẹp các phần tử liên quan ₫ến ₫ối tượng khi  
₫ối tượng bị xóa (destructor).  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 16  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Thí dụ về class  
Thí dụ sau ₫ây miêu tả 1 class hiện thực interface IVietLib :  
class MyVietLib : IVietLib {  
//₫ịnh nghĩa các thuộc tính cần dùng cho 2 tác vụ  
...  
//₫ịnh nghĩa 2 tác vụ quản lý ₫ối tượng  
MyVietLib() {…}  
~MyVietLib() {…}  
//₫ịnh nghĩa thuật giải tác vụ chuẩn hóa chuỗi tiếng Việt về  
dạng tổ hợp  
//₫ịnh nghĩa thuật giải tác vụ chuẩn hóa chuỗi tiếng Việt về  
dạng dựng sẵn  
int VnComp2Pre(String src, int len, ref String dst) {…}  
Môn : Các mẫu thiết kế hướng đối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
}
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 17  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.6 Tính ₫óng gói (encapsulation)  
Tính ₫óng gói gồm 2 ý :  
Mỗi ₫ối tượng chỉ nên thực hiện một công việc nhỏ, ₫ơn giản, rõ  
ràng. Các thành phần cần thiết ₫ể thực hiện công việc của ₫ối  
tượng có mối quan hệ rất mật thiết với nhau và ₫ược ₫óng gói  
thành ₫ối tượng sao cho tính kết dính (cohesion) cao nhất.  
Mỗi ₫ối tượng chỉ cung cấp cho khách hàng bên ngoài (client)  
một tập ₫ủ nhỏ các tác vụ chức năng có nghĩa và phải che dấu  
mọi chi tiết hiện thực của ₫ối tượng, không cho bên ngoài thấy và  
thì việc quản lý, hiệu chỉnh và nâng cấp từng ₫ối tượng ₫ược dễ  
dàng, không ảnh hưởng ₫ến các ₫ối tượng khác.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 18  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.6 Tính ₫óng gói (encapsulation)  
Trong 2 ý về tính ₫óng gói thì việc ẩn thông tin là quyết ₫ịnh nhất,  
cụ thể :  
. che dấu các thuộc tính dữ liệu : nếu cần cho phép bên ngoài  
truy xuất 1 thuộc tính vật lý, ta tạo 1 thuộc tính luận lý (2 tác  
vụ get/set tương ứng) ₫ể giám sát và kiểm soát việc truy xuất.  
. che dấu chi tiết hiện thực các tác vụ.  
. che dấu các local function và sự hiện thực của chúng.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 19  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.7 Tính thừa kế (inheritance)  
Tính thừa kế cho phép giảm nhẹ công sức ₫ịnh nghĩa  
interface/class : ta có thể ₫ịnh nghĩa các interface/class không  
phải từ ₫ầu mà bằng cách kế thừa interface/class có sẵn nhưng  
gần giống với mình :  
. Miêu tả tên cha : mọi thành phần của cha trở thành của mình.  
. override 1 số method của class cha, kết quả override chỉ tác  
dụng trên ₫ối tượng của class con.  
. ₫ịnh nghĩa thêm các chi tiết mới (thường khá ít).  
Thừa kế tạo ra mối quan hệ cha/con : phần tử ₫ã có là cha, phần  
gián tiếp.  
Môn : Các mẫu thiết kế hướng đối tượng  
Chương 2 : Cấu trúc phần mềm hướng đối tượng  
Slide 20  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Tải về để xem bản đầy đủ
pdf 28 trang yennguyen 88380 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Các mẫu thiết kế hướng đối tượng - Chương 2: Cấu trúc phần mềm hướng đối tượng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cac_mau_thiet_ke_huong_doi_tuong_chuong_2_cau_truc.pdf