1. Trang chủ
  2. » Công Nghệ Thông Tin

Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++ phần 2 nguyễn văn ba

185 222 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 185
Dung lượng 3,56 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

7’rong thiết kế, ta klió tránh khói đi sâu vào việc chọn lựa và vận đụng các côn g cụ cài đật như là cúc ngòii ngữ lập trình, các hệ quản trị cơ sỏ dữ liệu, các hệ lạo lập giao diện, các

Trang 1

Chương VI

T H i a K ễ

Sau khi Ihực hiện xong 6 bước đầu của tiến trình 10 bước, chúng ta

đã xây dựng xon g m ỏ hình phân tích cúa hệ thống Trong phân tích ta luôn luôn tự hạn ch ế trong câu hói "Là gi?" hay "Làm gì?", mà không bao giờ lấn sang câu hỏi "Làm như thế nào?" Tới đây, ta bắt đầu

c h u y ể n s a n g i h iế t k ế , n g h ĩ a là n g u v ê n cứii s ự t h ự c th i h ệ t h ố n g v à đ ư a

ra những quyết định về cài đặt phù li(Tp \ớ i điều kiện công n ghệ có được và đáp ứng các đòi hói phi chức nãng từ phía người dùng (như là hiệu nãng, tính kliả dụng, lính bdo m ật.v.v, ).

Ba bước 7 8 9 sẽ lần lượt dề cập ba vãn đề cua thiết kế;

• Làm nguyên mẫu giao diện người dù n g ;

• Thiết k ế hệ thống:

• Thiết k ế chi tiết.

7’rong thiết kế, ta klió tránh khói đi sâu vào việc chọn lựa và vận đụng các côn g cụ cài đật (như là cúc ngòii ngữ lập trình, các hệ quản trị cơ sỏ dữ liệu, các hệ lạo lập giao diện, các thư viện thành phần.v.v ), Tuy nhiên, vì sự hạn chô' của khuôn khổ cuốn sách, ta khóng thế (rình bày vé các cóng cụ đó ỏ đày mà chỉ trình bày sự thiết

k ế ở mức độ độc lặp với côni’ ru cài (!ậl, Mãt khác một vấn đề rất thú

vị và đ ồ n g ihời là xu hướng tâì y ố u c ú a thiết kế hiện đ ạ i v ấ n đề mẩi(

ỉhiết /iré'(design patterns) cũng không lliể irình bày một cách c ó hệ

thống, mà chí có thể được giới tliiộu qua mổi khi cần đến Đ ể đi sâu vào mầu thiết ké, bạii dọc có tho ihain kháo 113].

Trang 2

184 Chương VI Th iết k ế

§1 BƯỚC 7: LẢM NGUYÊN MẪLI

G I A O D I Ệ N N G Ư Ờ I D Ù N G

1 MỤC ĐÍCH

Cõn« việc ở bước 7 nàv là dưa vào các bộ tạo lập GUI (Gruphiciil liscr Uìteiiace builder) thàrứi lập sớin \ ’à Dhaiili một nguyên mảu (protoíype) p.iao diên người dùnc, có íínli thãm dò nhẳm vào các rnục đích sau:

• Tạo ra một mối irườiig làm việc cụ ihế dễ tiến xúc dề làm thử làm cho nsười dùng irở nên yên tâm hơn không như khi chí được Ihấy nhữiic cì ve irẽn eiấ)' \'à !iọ cũng iró' ncn nìiiic độnạ !iciì tr:Mìg ' iộc dona góp cl'0 \'iộc phái iriến t'>ệ Ihốiig

• Quii quá irình dùng tliú ta ihu Ihập dược nhiẽu ý kicn phán hổi bố ícli lù pliía người dùng.

• S ớ m p h á t h i ệ n d ư ợ c c á c y ê u c ầ u h a v c h ứ c n â n g b ị b ỏ s ó t , s ớ m n l ì ì n

thấy các chỗ yếu chỗ khó khăn nhất cúa hộ ihống.

Vì mục đích thăm dò cúa nguyên inảu ta nên làm nguyên mảu càng sớin caní! lổt (dù rầna ta gọi đây là bước 7) Oiáng hạn có the báí đáu làm ncuyên mầu ngay sau khi đưa ra các ca sử dụng (bước 2) Nguyên inảu có ỉhé dược làm đi làm lại nlìiổu lấn lìan đẩu có ihể dó chi là các hình vẽ trên

giấy Iiliưiig sau đ ó s ẽ đ ư a lên m à n hìiìli Ban đ ầ u c ó ihể n ó chi đ ư a ra các

dán Quá liinh phái triển nguyên inău làiiì dòng ihc/i với tịuá trìiili pliân lích

v a i h i c l k c %'à lìi) l i ọ c iiO piiìiii líc iì / à i h ì ẽ i k ẽ

2 M Ô 'IẢ C Á C ( ; i A ( ) D IỆ N C Ú A H Ệ T H Ổ N í ;

Như ta đã biết ( § 3 2 0 , Chưmig IV), cứ m ỗi cặp dối tác - ca sử dụng licn quan, có ít nhất m ột lớp biên de chuyến dổi các ihòng tin vào-ra The hiện của lớp biên chính là giao diện mà bây giờ ta cẩn phái m ô tả Muổn vậy, ta dõi íhco từng bước trong kịch bản của mỗi ca sử dụng, xét nội dung ciia tươiìg tác giữa đối tác và hệ thống, các thõng lin vào và

ra các hàiih động dược ycu câu để tố hợp vào mộl phán tứ giao diện Chảng hạn, trong Bủng VI 1 la thực hiện sự phân bố các giao diện cho từng bước trong ca sử dụng 'Chọn inôn học để giáng dạy'.

Trang 3

§ 1 Bưóc 7: Làm nguyên m àu giao diện người dùng 185

Báiiii V l ỉ Ẩ^hân b ố cúc ịiiao diộn cho các bước irong

ca sử dụng 'Chọn môn học J ể ^iảng dạy'

Các bước/ hoạt động trong ca sử dụng Phần tử giao diện cần có

• Mức độ phức tạp của giao diện (phức tạp/chuẩn/dơn giản);

• Ghi chú thêm, nếu có.

Có bốn [oại giao diện, mà đặc điểm kv ihuật có những khác biệt, cần dược bổ sung thêm chi tiết Đ ó là;

• Các giao diện đối thoại;

Trang 4

• Các thông tin xuất (thư báo cáo v.v, ):

• Các giao diện dữ liệu từ và đến các hệ thống ngoài;

• Các giao diện chức nãng đến các hệ thống ngoài.

Đ ối với hai loại cuối (giao diện chức nãng và giao diện d ữ liệu), các chi liết m ô tá sau đây cần được bổ sung;

• Tòn của hệ Ihóng ngoài có liên liệ (tên cliươiig irìiih lèn giao tác.v.v ):

• Loại gr.ic diên' đống bộ (,gi‘i0 diện chức khòng đổn<! bộ (trao dổi dữ liệu, chăng hạn llìông qua lẹp báng lìay ỉiàng đợi):

• Hướng của giao diện: đọc, viết;

• Tấn suất kícli hoạt và nốu cần í'.ự phủn bố rrong ngày, chang hạn rnộl íáii Ircng ngiV Iiuv knoáiig lOũ lần irong iigày, v.v ;

• A i dùng đối thoại hay thông tin xuất (s ố lượng, Irình độ, ):

• Đ ối thoại hay xuất thông lin vào lúc nào và nhiều hay íl (lính trung bình theo người dùng, phân bố Irong ngày, luẩn hay tháng,v.v ), chẳng hạn m ột lần trong ngay hay khoảng 100 lần trong ngày,v.v ;

• Tầm quan trọng của giao d iện (quan trọng/chuẩn/thứ yếu);

• Các đặc cliém n ên g biệí.

Các bủng V I.2 và V I.3 ch o các thí dụ về iniêu lả giao diẻn.

Bảng VỈ.2 Miêu lả đ ổ i ỉhoại: Thâm một lớp giảng

Tên: Đ ố i thoại Thêm một lớp giảng

Trang 5

Mỗi tháy giáo có thế Ihực hiện dối thoại ngay trên m áy tính ở phòng làm việc ciia inìnli (nối mạng cục bộ của trường) M ỗi thầy thưc hiện vài ba lần tập trung vào một tuần trước kiii bước vào học

Đánh dấu lớp giáng, Nhận lớp giáng Hoàn lại lớp giảng.

§ 1 Bườc 7: Làm nguyên m ẫu g iao diện người dũng _ 187

Bdnỵ VI.3 Miêu id iliônỊỉ tin xiuíi: Lịch trình giảng d ạ y

Tên: Lịch irinh giáng dạy

M i ẽ ỉ t ỉii n ^ â i i :

M ôl thòng báo viết (trẽn màn liiiìh hay in ra giấy, về lịch Irình

M ộl thòng báo viêt (trẽn màn iiiiìli liay in ra

giáng dạy cúa các lớp giáng cùa Ilìộí riiiìy giáo.

Trang 6

188 Chương VI Th iết k ế

3 DI C H U Y Ể N G IỮ A C Á C G IA O D IỆ N N C Ư Ờ I D Ù N G

Cách phái hiện \’à m iêu tả các giao diện như trên là đơn gián, dễ

làm, Nhươc dicm chính cùa nó là bỏ qua sắc thái động cùa giao d'ện

V'ị \’ãy cých iàm dó nếu có tlĩể đã ihành công với nliững giuo diện dơn aiáii, Ihì lại trớ nên khá lúng túng khi sập các giao diện phức tạn Cháng hụn với các giao diện ircn mộl NVebsile, với cúc đơn ch ọn , các kết nối các siêu kếí nố'„ các núl dản d:U v.v ih.ì việc '0 hơp các yếii

tố giao diện đó lại với nhau thành một giao diện hcíp lý uyến chuyến

và đẻ dùng không phái là việc ỉàm gián đơn.

ƯML cung cấp cho lii m ệt ccng cụ lốl đe dicn lả inối các!i chír.h xác khóns bỏ sót các sắc Ihái độriL’ của ;nột hộ tliông gi.io rìiện, đó là bieu đổ hoạt động (xem § 3 , C'hươiìg V) Vốn là m ỏ hìiih cúa luỏng còng việc, nó được áp dụng vào đày đc diỗn tá sự di chuycn giữa các yếu tố giao diện đối với một người dùng.

Đ ế áp dụng cho giao diện, khái niệm 'hoạt động' trong biếu dồ hoạt động được chuyên biệt hoá thành năm loại (Hình VI 1), mang các khuờn dập thích hợp, nliư sau:

M ột trang đ ầ y đ ú cùa V V e b s i l e ( « p a g e » ) ;

M ột kliiuìg nằm trong inột trang ( « f r a m e » ) ;

M ột hành íiộnịỊ đơn giàn ( « a c t i o n » ) ;

M ột sơi lồi hav hành vi không cbờ íỉợi của hệ thống

( « e x c e p t i o n » , được tô màu ẹhi nhạt):

Một m õĩ nổi lới m ột biểu đổ hoạt dộng khác, nhằm thực hiệii sự cấu trúc hoá, \ ’à nhằm làm cho biểu đồ dễ đọc hơn ( « c o n n e c l o r » , được tò màu ghi đạm).

Các khái niệm trang và khung tươiig ứng trực tiếp vứi các lớp biên ( § 3 , Chương IV) Khái niệm hành động nói chung là tương ứng với

m ội thao túc trong một lớp biên hoặc trong một lớp điểu khiển.

Trang 7

§7 Bưởc 7; Làm nguyên mẫu giao diện người dùng 189

« e x c e p t i o n »

L

« c o n n e c t o r »

Hìiilì V I i C á c qii\' ước d ổ lìoạ chuyên biệt

V iệc m ô hình hoú di chuycn bắt dấu lừ một đối tác (Hình V Ĩ.2)

Tliường thì mội đối tác liên kết với nhiểu ca sử dụng Nếu các ca sử

đụng đó là độc lập hoàn loàn \ ’ới nhau, thì la xây dựng m ộl biểu đổ di chuyến ch o m ỗi ca sừ dụng đó và các biểu đổ đó ià đơn gián và dẻ dọc Trái lại nếu các ca sử dụtig đó lại có liên hệ và ràng buộc lẫn nhau, Ihì la phái xây clLm a một biếu đổ thống nhất, và các ràng buộc dược thc hiện bằng các cảnh giới trẽn các di chuyển giữa các trang iươiig ứng V à như vậy, các biếu đồ di chuyên lại cho la một cách diễn đạt các ràng buộc một cách hình iliức và minh bạch.

Trang 8

190 Chương VI Thiết kế

T h í dụ

Hãy lập biểu đổ di chuyển cho một khách hàng trên \Vcbsite thương mại điện lử của một hiệu sách Ta có biểu đồ các ca sir dụng cùa khách hàng nhir trẽn Hình V I.3.

Thực hiên m ột đơii hàng

\ « e x ĩ e n d » V

Thông thường khách hàng irưỏc liên tìm và chọn sách, cho sách

đón tiếp, khách hàng có thể tìm nhanh các sách, hoặc tìm sâu theo một

ý định nào đó, hoặc xem qua một lập hợp các tra n g như là: Sá;h mới Sách bán chạy nhất, v.v (Hình V I.4).

Trang 9

§1 Bước 7: Làm nguyên mẫu giao diện người dùng 191

T im nhanh dựa trên một vài từ klioá chi cần thực hiện bằng một

« f r a m e » luôn có mặl trên tiang lìm kiô’m Trái lại tim sâu với nhiều liêu ch í lại được tliực hiện bãng niội Uaiig nguyên Tim kiếm là một

« a c t i o n » mà kết quả là một framc chứa danh sách các sách lìm được hoặc một thông báo lổi khi khòng tìm dược sách.

V

« p a g e » Tim sâu

« a c t i o n » Tìm kiếm

« e x c e p t i o n » Lỗi: không tìm )<■

\^Kếi quả tìm kiếm

ỉ i ì i i h V Ỉ A D i chuyển d ể lini kiếm (khởi (ỉáii)

C hú ý: Trong biểu đổ, la không ghi rõ sự kiện kích thích trên mỗi bước dịcli chuyến (do người dùng khới phát), để cho biểu đô được quang dãng hơn Thực ra sự kiện đó luôn luòn trùng tên với trang chuyển đến Chảng hạn đến trang sách mới, Ihì người dùng kích chuột lên một kết nối S ách m ói trẽn irang đón liếp, vì vậy có viết Ihêm sự kiện dó vào biểu đồ thì cũng không đưa thêm được thông tin gì mới Các dịch chuyển trờ lại trang trước cùng bị bỏ qua.

Từ kết quả lìm kiếm , khách hàng có thế chọn một cuốn sách để nhạn dược một phiếu giới thiệu sách chi liết hoặc có ihc cho luôn sách

Trang 10

192 Chương VI T hiết k ế

vào giỏ xách (ảo), hoặc có thế sắp xếp lại các kết quá Nếu có nhiều sách tìm được, khách hàng có thể duyệt các Irans kết quá {Hình V I.5) Phiếu sách lại cũng cho phép dưa sách vào giỏ xách hoặc yêu cầu xein phiếu tác giá bao gồm tiếu sứ và danh sách các sách cúa lác giả

đó N ó cũng cho pbcp I.niy cập các thỏpg tin bổ sun*’ như la: ảnli phóng dại, lời bình, m ục iục chi liết, tóm láỉ cac chuơiig, V ì sự rườm rà kéo đài từ phiếu sách này ta cắỉ phẩn di chuycn kc từ phiếu sách ''ào một biểu đồ hoạt động khác, bằng cách dùng mối nối

« c o n n e c t o r » (Hình VI,6) Cũng tifcf!ig tự, phấn Sừ dựiiíí G iỏ xách chưa triến khai cũng được ihay Ihế bằng một mối nối « c o n n e c i o r »

Trang 11

§1 Bưóc 7; Làm nguyên m ẫu giao diện người dùng 193

P h iế u sá c h

Hình Vỉ.6 D i chuyển ỉừ ph iếu iỉiới thiệu sách

Siỉ dung g iỏ xách

Xem lại biểu đổ ca sử dụng ờ Hình V I.3, ta ihấy ca sử dụng 'Thực

hiện m ộl đcm hàng' m ớ rộng ca sử dụng 'Sừ dụna giỏ xách' Đ iểu đó có nghĩa là đang sừ dụng g iỏ xách, ta có thc cliu \’ến sang ihực hiện đcm mua hàng Tuy nhiôn ờ đây phải có inộl ràng buộc: G iỏ xách phải khòiig lồn g tlìì mới chuyển sang Ihực hiện rnua hàng được Đ ể thể hiện

sự ràng buộc này la phải đưa ihêin một trang "Cìiỏ xách rỗng', iruy cập đưực từ nhiều trang, kể cả Irang dón tiép nhưna nó ngăn không cho chuyến sang trang Đặt hàng Bới việc lách irang G ió xách thành hai (rỗng và không rỗng), nên « c o n n e c t o r » Giỏ xách trên hình V I.5 nay lại tương ứng với « p a g e » G iỏ xách ở Hình VI.7, mà không phải tương ứng với m ội điểm vào biểu đổ mới như trường hợp trên.

Trang 12

i i i n h V 1 7 ỈỈU'II d ồ íli clniYCíì cho s ứ c l ụ n i i ÍỊÌÓ xách

!'/ntc hiện m ộ i (ừ/n ìiảini

« c o n n e c t o r » Đ ơn hùng trên Hình V I.7 trớ thành điểin vào cho biểu đồ di chuyến để thực hiện một đơn hàng trèn Hình V I.8.

D ơ n ì i à n g [ K h á c h đ ã đ a n g k

Trang 13

C uối cùng thì la có thế lổng hợp vào một biếu đổ di chuyển chung ciia m ột khách hàng, như trên Hình VII,9 Trẽn biểu đổ này ta lược bớt các báo lỗi « e x c e p t i o n » và các rẽ nhánh Iheo điều kiện Đ iều thú vị

là ta thấy chỉ với m ột trang giấy mà la có thc thâu tóm m ọi quy tắc dịch chuyển trên m ộl W ebsite.

§ í, Bườc 7: Làm nguyên m ấu giao diện người dùng 195

Trang 14

4 L À M N G U Y Ê N M Ẫ U

N gày nay có nhiều bộ tạo ỉập giao diện người dùng (GUI builders) cho phép làm các nguyên mảu giao diện mà khỏng tốn mấv công sức Bước đầu thì các trường là rỗng hoạc cho giá trị giá, Các núi và các phần lử đối thoại khác có thê’ chưa có 'liệu ứng rõ rêi và cJìn giái thích

"miệng" Song dần dần qua nhiêu \ ’òng lạp, tli: giao diện tiớ nên sinli

đ ộng hcfn và đi gần tới phương án cuối V à như vậy người dùng có Ihc làm việc ihử vứi các nguyên mầu.

Các bước ihực hiện nguyẽn inẫu có Ihể là như sau:

• X ciĩi xét lừng ca sử dụng dế phát hiệti yêu cáu \'ề giao cliẹn cửa

• D ùng ihử và đánh giá Qua dùng thứ trong nội bộ nhóm thiết k ế và trong các người dùng, m à thu Ihâp các ý kiến phản hổi Cũng có thể

tổ chức hội thảo đ ể phân lích , góp ý kỹ hơn M ọi ý kiến phản hồi đéu phải ghi nhận và nghiên cứu lại, để có ihc sứa chữa nguyên mău và đưa ra phiên bản mới.

Cần chú ý rằng nguyên mẫu và giao điộn nói chung chi là mặt ngoài cùa hệ thống, nó chưa phản ánh hốt tầm sâu cừu hệ liiống V ậy cần n ói rõ với người dùng lù ch ớ ào tưởng ở nguyên mảu Người dùng khi thấy nguyên mẩu đã có v ẻ chững chạc, thì đã vội nghĩ thế là hệ thống đã "hòm h òm ” rổi Thực ra làm nguyên mẫu chí là một sự hỗ trợ tốt, chứ khõng thể là sự Ihay th ế ch o các bước phân tích và thiẻì k ế hệ thống m ột cách nghiêm túc được.

196 _Chương VI Thiết k ế

Trang 15

§2 BƯỚC 8: THIẾT KÊ HÊ THỐNG

C á c góc nhìn v é kiến trúc lôgic: Kiến trúc lôgic đề cập tới các

chức núng của hộ thống, sự phân bổ cùa cúc chức năng đó vào các phấn khiíc nhau của hệ thống và cho thấy vì sao các giải pháp đã làin việc được và đáp ứng yêu cầu Kiến trúc lôgic chứa lôgic của ứng dụiig, nhưng không chứa sự bố trí vật iý cúa lôgic đó vào các quá Irình, các chương Irình hay các máy tính V ậy kiến trúc lô g ic thể hiện trên ba góc nhìn cùa ƯML:

- G óc nhìn ca sứ dụng, ch o thấy hệ Ihnng phãi có các chức năng (lớn) nào đổ đáp ứng các yêu cầu của người dùng.

- G óc nhìn thiết kế, cho thấy hệ thống dirơc thiết k ế với các lớp

và dối tượng nào, hoạt động của chúng ra sao và chúng được gom vào các hệ con ra sao.

- G óc nhìn quá trình, cho thấy sự thực hiện của hệ thống diễn ra

t h e o c á c t u y ế n đ i ể u k h i ề n n à o , thiíộc loiỊÌ h ì n h đ i ể u k h i ể n gì

(đcfn, son g

hành- )-• C á c g ó c nhìn v é kiến trúc vậ t lý: Kiến trúc vật lý đề cập sự hợp

thành của h ệ thống từ các bộ phận tổn tại thực sự trong thực lế (chứ

không phải trong sự hình dung của con người) bao gồm các phần

mề m (các mã nguồn, cá c m ã khả thi, các thư viện chương trình )

và các phẩn cứng (các m áy lính, các thiết bị, cá c đường kết nối)

cùng với sự b ố trí của các phẩn m ềm chạv được trên các phần cứng.

Trang 16

Như vậy kiến trúc vật lý thể hiện trên hai góc nhìn còn lại cúa ƯML:

- G óc nhìn thành phần, ch o thấy hệ thống bao gồm các Ihành phần phần m ềm nào, các mối liên quan giữa chúng ra sao.

- Góc nhìn bỏ’ trí cho thấy ỉiệ thống bao gổni oác pỉiầii cúng nào; các nút (các bộ xử lý các thiết bị), các k ít nôi (đường truyền) giữa các nút đó và sự bố li’í các Ihàrih phần pliầa mém trèn các núỉ.

• Rốt cục, nếu hiểu kiến trúc là sự m ó lả hệ thỗng theo nãm góc nhin írôn, ihì chắng phủi mãi đến bước 8 này ta mới đế cập tới kiến trúc Tlìậl vậy, dọc theo quá tpnh phàn 'ích nhiều khía cạnh của kiến trú.: h ị ‘hứng, (lậc biộĩ là kiến irúc íôgic do được xcrn xét, vớ; nhiềii loại biếii dổ, nhu ìà biểu đổ ca sử dụng, biếu đồ lop, bieii đò doi tượng, các biểu đổ lương tác, biểu đổ m áy trạng thái, biểu đổ hoại động V ậy ò đây irong bước 8 này, ta chi còn phài để cặp lới bốn ván để còn lại cùa kiến trúc hệ thống, là:

hệ con.

H ệ con (subsystem ) là m ột sự gom nhóm lôgic các lớp c ó sự c ố kết

bên trong mạnh và sự tương liên bên ngoài yếu.

Thuật ngữ hệ con được nhiều tác giả dùng, và G Booch lại g ọ i là phạm trù (category), ihực ra không phải íà thuật ngũ chuẩn của UM L Trái lại U M L dùng thuật ngữ g ó i (package) Tuy nhiên khái niêm gói (xem lại Chương IV § 1 1 0 và § 2 6 ) lại có ý nghĩa khái quát hơn;

198 Chương VI Thiết k ế

Trang 17

§2 Bưởc 8: Thiết k ế hệ thống 199

• Gói là một cơ ch ế gom nhóm nliiC'1.1 pÍKiii lử Các phần tứ nói dày

có thế là các lớp, các giao diện, các ihàiili pỉum các hợp tác các ca sứ dụng, các nút bicu đồ và cũni’ có (hc là c.k' gói khác.

Gói và biéu đổ gói có thế được vận dụng á inọi giai đoạn phá! tricn

hệ thống Khi ta có một bicu dổ lùio dó (ci) ihế là biểu đổ lớp biểu

đổ ca sử dụng ) là quá lớn, quá phức lap \à ta muốn diẻn tá nó lại,

sơ lược hơn, nhưng dỗ nắm bắt hơn, (iỏ phãii côn g nghiên cứu và Iriến khui hơn ihì ta dùng gói và biéu đỏ ụói.

Còn \'ề các hệ con mà ta ihiết lặp tion<2 ' 2.'m đoạn Ihiết kê' kiến trúc

cùa hệ lliống, thì;

• Đ ó chí là gói cúa các lớp thưừiiỵ mang thêm khuôn dập

« s u b s y s t e m » như trên Hình VI.ỈO Sô cúc lớp trong một hệ con klìông nên ít quá mà cũng chắni’ iiC-11 iiliicu quá (thường thì có l:hoảng mươi lớp là vừa).

« s u b s y s t e m » Lich biểu

ỉ ỉ i ỉ i l t V ỉ i O B i ể u d i ề n Ì ì ệ v o n

Nội dung của một hệ con (gồm các lóp \'à các mối liên quaii giữa

chúag) dược U M L 2.0 diễn tả irong n\ộl kìuút^ (íia in e) vứi niột lựa ỏc

viếi trong một hình chữ nhật cắt góc (lu;o khuôn dụng [<loại>] Tên

<iham số> ], như trên Hình V I 11.

• Sự có' kếĩ của các lớp irong cùng ipột lìc ':«'n thc hiên ờ chỗ:

- V é mục đích; Chúng phái cuny cãp các dịch vụ CC) cùng bán chất cho người dùng Như vậy chúng pliái ihuộc vùo cùng mộl lĩnh vực và đề cập một số thuậl ngữ chung (cháng hạn hệ con giao diện để cập các thuật ngữ như: cửa sổ đơn chọn, nút hành động v.v ).

- V ề xu thế phát triển: Người tu tác h các !ớp bền vững \'ới các lớp còn nhiều khả nãna thay đối phát triến Đặc biệt là tii

Trang 18

2 0 0 Chương VI Thiết k ế

thường tách các lớp nghiệp \'ÌỊ với các iớp ửììi’ clụniỊ và xếp

chúng vào các hệ con khác nhau.

V ề ứng dụng các công nghệ: để tận dụng các dịch \ụ còng nghệ có sẵn, như các thư viện chương trình (lớp/thành phan), các G UI, các hệ quản irị cơ sờ dữ liệu v.v , ta thường tách các

hệ -:on giao tiếp, hệ con quàn trị dữ liệu ra khói phần lõi {ưiig dung và nghiệp vu) của hè thống.

Hệ t'on Lịch biêu T

Hin/ì V Ỉ Ị ỉ N ộ i dung cứa hệ con Lịch biêu

Sự tưcíng liên giữa các hệ con thể hiện ở mổi liên quan phụ thuộc giữa chúng Mà sự phụ Ihuộc giữa hai hệ con phản ánh các mối liên quan tĩnh (thừa kế, liên kết ) và các m ối liên quan động {trao đổi, thông điệp) giữa các lớp ihuộc hai hệ con đó Sự phụ thuộc giữa các

hệ con phải càng đơn giản, càng lỏng lẻo càng tốt Đ ể đảm bảo tính tương liên yếu này, khi thành lập hệ con, ta áp dụng các quy tắc sau:

- Các lớp thuộc vào cùng m ội pha hệ thừa k ế nên đưực xếp vào cùng m ột hệ con.

- Các lớp có m ối liên quan kết nhập và hợp thành với nhau thường được xếp vào cùng một hệ con.

Trang 19

- Các lớp cộng tác với nhau nhiéu irao đối thông tin nhiều, thế hiện qua các biổu dổ tương tác ihì nên đặt chung vào m ộl hệ con.

- N ên tránh sự phụ thuộc vòng quanh giữa các lớp.

b) Kiến t r ú c p h â n tầng

Một hệ con ihường được định nghĩa bỏi các dịch vụ mà nó cung cấp M ối liên quan giữa một hệ con với phần còn lại của hệ thống có thể là ngang hàng hay ỉà khách hàng/dịch vụ.

Trong m ối liên quan níỊang lìàii^ (peer-lo-peer) thì mỗi bèn đều có

thể truy cập các dịch vụ của bẽn kia Bấy giờ sự giao tiếp không nhất thiết là ờ dạng câu hỏi và trả lời liền sau đó, mà có thể là m ột sự giao tiếp loanh quanh, rất dễ dẫn tới những sai ỉỗí đáng liếc về thiết kế.

Còn mới liên quan khách lìàngklịclí vụ (client/server) thì đơn giản

hcfn: bên khách hàng gọi bên dịch vụ và bên dịch vụ thực hiện một dịch vụ theo yêu cầu và trá kết quá cho bên khách hàng Bên khách hàng thì phải biết giao diện của bèn dịch vụ, son g bẽn dịch vụ ihì không cần biếl giao diện cùa bên khách hàng.

Từ hai hình thức giao tiếp đó mà ta có hai cách để vỡ hệ thống thành các hệ con;

• T ổ chức hệ thống thànli các tầng iheo chiều ngang, với m ối quan

hệ khách hàng/dịch vụ luôn luôn hướng từ tầng trèn xuống (các) láng dưới M ộl thí dụ của hệ thống phãii Ihành tầng là hệ thống tạo cứa sổ trong giao diên người dùng cứa máv tính.

• Tố chức hộ thống thành lát theo chiều đứng, với quan hệ ngang hàng giửa các lát tuy nhiên các lát là khá độc lập hoặc tương liên yếu vói nhau M ột thí dụ của hệ thống phân lát là m ộl hệ điều hành, ihường gổm các hệ con như là các hệ quản lý tệp, điều khiển thiết

bị, quản lý sự kiện và ngắt

R õ r à n g l à t ổ c h ứ c p h â n t ầ n g l à đ á n g đ ư ợ c UTJ l i ê n h c í n , v ì n ó m a n g

lại nhiều ưu thế Irong ihiết kế, trong cài đặt cũng như trong sử dụng lại Song đối với các hệ thống lớn thì ta thường phải phối hợp cả hai cách tổ chức phân tầng và phân lái, chẳng hạn phân hệ ihống thành tầng, nhưng trong mồi tầng thi lại phân thành lát.

Trang 20

Khi thực hiện phân tầng, thì s ố tầng là tuỳ thuộc sự phức lạp của hộ ihống;

• Trong một hệ đơn giản, thì số tầng có thổ chi là hai (2-tiers Bâv giờ tầng khách hàng thì quán lý -g ia o diện người dùng và các quá

t rì n b k h a i I.hác c ò n l á n g d i c h vụ tbì x ử lý v í ê c c ấ t í i ữ c á c d ữ liệu

• Trong mộr hệ phức tạp hơi‘i thì người ĩa íácti tổng trên ihun^ tầng giao diện - ứng dụng, và ở dưới n é là tầng nghiệp vụ (hay lĨ!ih vực), bổn vững hơii và có nhiều khả nâng sứ dụng lại hơn V ậy đó là một kiến tĩúc khách hàng/dịch vụ ba táníỉ (3- liers),

• Cuối cùng ihì trong các bộ lớn số tầng còn có thế nhiều hưn (n- tiers) mà điển hình ỉà kiếii trúc nãni tầng, với các lầng kê' tư trẽn :«uổ()g l;l:

- 'rrùig ti-ình bà>: Chuyến các dữ lìèu cho Iiỵư(íi dỉjng vu blcri đổi các hành động cùa người dùng thành các sự kiện vào của

- Táng lưu trữ dữ liệu; bảo dảin sự lưu giữ làu dài các dừ liệu

M ột thí dụ về kiến trúc khdch hùng/dịch \ụ nărn tầng cho irong Hình Irong đó m ỗi gói (hệ con) đcu có m ang khuôr dập Ihícb hợp như là « u s e í interíace fr a m e w o r k » (khuón khổ giao diện người dùng), « u s e r in t e r f a c e » (giao diện người dùng), « d o m a i n » (lĩnh

Trang 21

§2, Bưởc 8: T hiết k ế hệ thống 203

luồng các sự kiện xẩy ra giữa các đối lượng trong hệ thống mà ta có thế Ihấy được từ bên ngoài Còn điều khiến {rong là luồng điểu khiển ở bẽn trong một phưcmg thức.

Sự lưa chọn loại hình cho cả điều khiciì ngoài lẫn diều khiển trong đều

Trang 22

phụ thuộc nhiều vào các tài nguyên (ngôn ngữ, hệ điều hành, v.v ) mà

la có , và khuôn dạng của sự tương tác trong ứng dụng.

Bời vì phẩn lớn các ngôn ngữ lập trình hướng dối lượng, như là Smalltalk C++ và O bjective c là các ngôn ngữ thú tục, cho nên tưần

tự dựa vào thủ tục là phương cách thônp dụng nhất dế điều khiển ỉuổng

n g o à i T r o n g l o ạ i h ì n ỉ i n à y t h ì đ i ề u k h i ế n n á m t ì g a y t r o n g ITHÌ ứ i i g

dụng Chính mã ứng dụns đưa ra các vêu cáu vé các cái vào từ ngoài,

và chờ chúng đến Khi chúng đến, thì diều khiển được thu \'ề bên trong Ttiií nic (J3 đưa rit iời gọi Mặc d'j loại hình riíiv là dồ \'ộn dụng, song người phát triến hệ thống phái chuyến đổi các sự kiện ngoài thànli các lời gọi giữa các dối tượng Đ iều này là khống thuận ìợi khi xứ lý các

sư kiên khòng đổng bọ các điều Kiẹn về sai lỗi, các giao diẹn người dùng liíih hoat và các hẽ thống đieu khiển quú irìiib.

Trong ioại hình tuan tự dựa vào sự kiện, [hì diéu khiển nằm trong một bộ phạn riẽng g ọ i là dispatcher hay monitor được cung cấp bởi ngòn ngữ hệ thỗng con, hay hệ điều hành Các tliù tục ứng dụng gắn kết với các sự kiện, và sè được gọi từ dispatcher mỗi khi các sự kiện tương ứng xuất hiện Phưcmg cách này là tưcmg lự với việc g ọ i qua tổng dài trong bưu điện và ihưừng gọi là sự gọi lại (callback) Các mã ứng dụng đưa ra các lời gọi thù tục tới dispalcher đế có cái vào/cáí ra, song không chờ đợi chúng Dispatcher quản lý các sự kiện một cách tập trung, còn các thủ lục ứng dụng thì trả ngay điều khiển về dispatchcr thay VI giữ lấy điều khiển cho tới khi cái vào đc'n Loại hình diều khiển bầng sự kiện là khổ cài đạt hơn trong các ngôn ngữ lập trình thông dụng như Smalltalk C++, hay O biective c Tuy nhiên nó

là linh hoạt hơn, vì nó mô phỏng trực tiếp các quá tiình hợp lác với nhau bẽn trong m ội nhiệm vụ đa luyến Mật khác nó đẩy cao phong cách lập Irình Iheo môđun và quản lý các điều kiện sai lỗi tốt hơn.

Trong loại hình đổng thời, thì điểu khiển nằm trong nhiều dối tượng độc lập nhau, và m ỗi đối tượng dó là một nhiệm vụ (lask) riêng biệt M ột nhiệm vụ có thể nằm chờ cái vào, trong khi những nhiệm vụ khác liếp tục thực hiện Có m ộl cơ ch ế hàng đợi cho các sự kiện, và hệ điều hành giải loả sự đụng độ giữa các nhiệm vụ JA V A là m ột ngôn ngữ hướng đối tượng hổ trợ trực tiếp sự thực hiện các nhiệm vụ đồng

»hời.

204 Chương VI Thiểt k ế

Trang 23

4 M IÊ U T Ả C Á C T H Ả N H P H Ầ N v ậ t l ý c ủ a h ệ T H Ố N G

a) T h à n h p h á n và biêu đồ th à n h p h ầ n

N ếu như biểu đổ gói (hệ con) mà la nói ờ phần irên phản ánh cho góc nhìn về cấu trúc lôQÌc cùa hệ thống (ở mức cao so với biểu đồ lớp), thì biểu đồ thành phần, với các đơn nguyên trong đó là các thành phần,

lại cho ta một cách nhìn về cấu irúc \’ậ! lÝ của hệ thống Chữ "vật lý" ở

đây được hiểu theo nghĩa là sự m iêu tả hướng tói các sản phẩm phần

m ềm là kết quá của sự cài đặt và là thực sự tổn tại, chứ không phải là các sản phám lôgic, kết quá cúa quá trình phân tích Tuy nhiên ỏ đây

la cũng chưa đề cập lới phần cứng, mặc dù tính vật lý cùa nó cũng thật

là đương nhiên.

U M L định nghĩa íliùiìli phán "'(component) là một bộ phận vật lý

và ihay thế được của hệ ihống thích ứng và cung cấp sự ihực hiện cho một tập các giao diện.

N ói đcm giàn hơn thì thành phần là một cài đật của một tập hợp các phần tử lỏ g ic, như các lớp hav các hợp tác.

Có ba loại thành phần:

C á c ihàiìỉi plìàn h ố u i (dcployincnt com ponents): Đ ó là các thành

phần cần và đủ để tạo nên m ội hệ ihống khả thi, như là các thư viện dộng (DLL) \ ’à các mã khà ihi (executables) Đ ịnh nghĩa thành phun của U M L là đủ rộng đế bao hàm cả các m ô hình đối tượng kinh điển, như ỉà COM + CORBA và Enterprise Java Beans, cũng như các m ò hình đối lượng khác biệt nliư là các trang W eb động, các báng c ơ sờ dữ liệu, và các mà khũ (hi sừ dụng những cơ ch ế truyền thông ricng.

Đ ó là các thành plìầii lồii lích từ quá liình phát triển hệ thống, bao gổin các ihứ như la các lệp mă nguón, các tệp dữ liộu lừ đó mà la

dã tạo lập ra các thành phán phân bố Các thành phần này không trực tiếp tham gia vào hệ thống thực thi, nhưng không có chúng thì khống tạo được hệ Ihống thực Ihi.

Có địch giả d ù n g th u ậ t ngũ "cấu kiện", lấy từ môi trường xây dựng, để dịch từ componeni Có lẽ dó là một để x u ất hay

Trang 24

C á c thành phần thực hiện (execution com ponenls); Đ ó là các

Ihàiih phần được tạo nên như là m ột kết quả của m ột hệ thực hiộn, chẳng hạn một đối tượng COM +, được cá thể hoá từ m ột DLL.

Có thể phán loại tỷ m ỷ hơn nhờ sứ dụng các khuôn dập Có rãm khuôn dập chuẩn cúa UM L Đ ó là:

« e x e c u l a b ) e » Một ĩhàr.h phần có thể thực l)iện trên một nút.

« l i b r a r y » M ột rhir \ ’iện đối tượng tĩnh hav động.

« t i i b l e » M ộl thành obán biểu diền mỏf bâng CSDI

« t ' i l e » M ộl thành phán biếu diẻn một tư liệu chứa

mã nguỏn hay dữ liệu.

« ũ o c u m e n t » M ộl thàiih pliần biểu diễn một fu liệu.

Nụoải ra, ta cũng có thể dùng các khuòn dập khong chuán, nbư

ià-« a p p ỉ i c a l i o n » Mặt liền của liộ thống, chẳng hạn một sưu tập

các trang HTML và các ASP/JSP làm việc \ ’ới chúng trong m ột hệ dựa trên trình duyệt sưu tập các màn hình và các lớp điểu khiển trong mộE

hệ dựa irén GUI.

« d a t a b a s e » Một cơ sớ dữ liệu quan hộ, đối tượng/quan hệ,

hướng đối lượng, hay phân tán

« in f r a s t r u c t u r e » M ột thành phần kỹ thuật, như là m ột dịch vụ

lưu trữ, m ột kiểm soái đãng nhập.

« s o u r c e c o d e » M ột tệp mã nguồn, như tệp cpp hay java.

« w e b s e r v i c c » Một hay nhiều dịch vụ web.

« X M L D T D » M ộ tX M L D T D

Đ ể tổ chức các thành phần lại với nhau, ta có hai cách:

• Gom các thànli phầii vào các gói, nghĩa là đưa chúng vào các hệ con;

• Thiết lập các m ối liên quan phụ thuộc giữa chúng, và như thế ta có

một biểu đ ổ thành phán.

Các Hình V I 13 và V I.14 lần lượi cho các biểu đổ thành phần của cùng m ột hệ thống Trường Đ H , nhưng theo hai quy định khác nhau cùa U M L 2.0 và ƯM L 1 X So sánh chúng, ta nhận Ihấy;

206 Chương VI T h iẽ tk ế

Trang 25

« c o m p o n e n t »

• Trong cá hai m ó hlnh, mối liên quan phụ thuộc đều có thể vẽ giữa hai llìành phần hoặc giữa m ội thành phần và một giao diện, còn giao diện ihì đều được biểu diễn dưới dạng trống bỏi Tuy nhiên Irong UM L 2 0 lại có thêm loại giao diện yèu cầu dưới dạng cái ngàm , giao d iện này là tươiig đương m ối liên quan phụ thuộc với khuôn dập « r e q u i r e s »

Một biếu đồ thành phần, như trên Hình V I.13, thường được gọi là một

"biếu đổ nối dây", vì nó chỉ ru rằng các thcUih phần phần mém đã được "nối

d â v ” r a s a o đ ế t ạ o n ê n m ộ l ứ n g d ụ n g C á c iTìối n ố i c h í n h l à n h ữ n g c o n

đưòng chuvến tái các loụi tlióng điệp nào đó giữa các thành phần.

H ình V U 3 M ộ t hicii d ồ ilìàiìlì phíhì trong U M L 2.0

Trang 26

208 Chương VI Thiết k ế

ỈỊiiili VI.14 M ộ t biểu d ổ ĩhànlì phau UML Ị.X

b) G iao diện và cổng

Các thành phin có thể có các giao diện cung cấp và các giao diện

yêu cầu M ột gia o diện (inleríace) lù inộl định nghĩa cùa inộl sưu lập

ciia m ột hay nhiều phương thức, và không hay nhiều ihuộc tính; nói cách khác, là định nghĩa của một tập hợp có chọn lọc và kết dính của các hành vi M ột giao diện cung cấp được biếu diễn dưới dạng một trống bói (hay kẹo que), còn giao diện véu cầu được biểu diễn dưới dạng một cái ngàm (hay cái hốc).

M ột cống (port) của một thành phán (và nói chuiig là của một loài)

là một điểm lương lác lách biệt của nó với môi trường của nó cổ n g được biểu diễn bầng m ột hình vuông nhỏ vẽ trên biên của thành phần (hay loài).

Hình VI 15 cho m ột biểu đổ gồm ba thành phần, trên đó la có thế nhận thấy m ột số đặc điểm sau:

• Các cổn g có thể mang tên, chẳng hạn cổng Bảo mật và cổng Dữ liệu của thành phần Sinh viên.

• Cổng có thể có khả nãng giao tiếp một chiều hay hai chiều Chẳng hạn thành phần Sinh viên có ba cổng, thì trong đó hai cổng là một

9

Trang 27

Biểu đổ là còn chưa được "nối dãy", chắng hạn có những hai thành phần cung cấp dịch vụ bảo mật, người thiết k ế còn có thể cân nhắc

sự nối ghép với thành phần Sinh viên,

Không nhấi thiết la phải dùng hếi mọi giao diện cung cấp của một thành phán, bới vì có những thành phán dã được thiết k ế sẩn, hoặc dược mua về, không phải là chi cung cấp các dịch vụ vừa đủ cho các yêu cầu trước mắt, mà còn có những dịch vụ chưa dùng tới.

đã cho ở trên Cài đật của một thành phần có thế vẽ trực tiếp bên trong

ký hiệu thành phần (nghĩa là hình chữ nhật với khuôn dập thành phần

Trang 28

210 Chương VI Thiết k ế

ớ góc trôn-phải) nếu có dù chỗ nhưng thường Ihì dược vẽ trong mội

khung, nghĩa là inộl hlnh chữ nhật với một nhãn ờ góc trèn-trái như

Iroiig Hlnh VI 16 Những điểm cần lưu ý trên hình nàv là như sau:

1.^ ■ ■ Dữ liệu

SinÌ! viẠr;

Lưu ưữ Ml'] - c

\ớ i niộỉ giao diệii (cung cấp hay yẽu cầu; duy Iihất.

♦ Moi licii qưan g;ữu i:ổaị; >ới hiiM lóp ừ bôn lio n g t ỏ lliể ll\ổ h ‘ệii theo hai dạiig:

- Mối liên q u a n ”uỳ thác" (dclcgales), vẽ dưới dạng m ội đường liền nét, với mũi ỉcn m ớ ờ một đầu: ký hiệu này là giốn g với một lièn kêì có hướng giữa hai lớp, vì vây đế cho rõ ta có thể thôm khuôn dập « đ e l e g a t e s » ;

- M ối liên quan "thực hiện", vẽ dưới dạng m ột đường đứt nét, với mũi lên đóng ờ inộl đầu.

N ghĩa cùa hai mối liên quan này thực ra không khác nliau ià mấy: một đàng là uý Ihác (tức là nhờ vả) đối phưcỉiig ihực hiện giùm một việc gì đó, còn một dằng là rhực hiện cho đối phương một khả năng cần có nào đó Tuy nhiên m ối liên quan uỷ thác là xuôi theo luồng

Trang 29

giao tiếp, cho nẽii có vé do hicu hơn; còn niối liên quan thực hiện thì [ại m ang ý nghĩa írực tiêp hơn: một cổng (chi là một yếu lô' lògic) được

L ịch biếu s v và Dữ liệu Sinh viẽii cài đặt ciao diện công cộng cúa llìành phần Sinh vicn Còn ba [ớp Dữ liệu Sinh viên Dữ liệu và Bảo mật lại đàin trách viêc truy cặp vào các Ihành phần bên ngoài, để clio các [ớp bẽn trong không phài lương tác trực tiếp với các thành plián dó Cliính vì mục đích cài đật giao diện, mà năm lớp mới thêm vào này dược đậl lẽn Irùna hay cấn Irùne với lẽn các cổng trên Hình

V I 15.

• Cũng có thế cài đặí một cách khác, [à chi dùng một lớp mặt tiển duv Iihủì gọi là Mặt tiền Sinh viên, ở đó cài dặt mọi giao diện cung cap li;iv vêu cầu của íliành phần Siiiti viên.

• Giá sứ là klii ttìiết kế lớp Dữ liệu Sinlì viên, ta Ihấy cun viện dến tlìãnlì phần XML'" Proccssor mà ta có sẩn, cho néii la dã thêm một cổiig nối vứi thành phẩn này.

• N ếu Iihậii xél rang clii có liai lứp ITnli vực inà pliải dưa iliõni những nãm lớp mỵl liền đ ế hỗ Irự cho chúng, thì c ó vé nliư là hơi Ihừa ihãi

và mấL cân đối Song đó chi là mội thí dụ dưii gián, còn thường íhì thành phần là phức tạp có thế có vài chục, ihâm chí là dăm chục lớp lĩnh vực Ihì sự mấl cân đối khỏniĩ còn nữa \ ’ì số lượng các lớp niiỊi liền là lương ứng với số lượng các cốn g cùa thành phán (thường

là không nhiều), cliứ không tũng lẻn liioo số lưựng các lớp lĩnh vực Trong khi đó các lớp mặt liển ngàn cách sự tương lién trực tiếp giữa các lớp lĩnh vực bòn trong với cúc thành phần khác ở ngoài, làm cho thành phần đang cài đặt dỗ dàng được sử dụng lại hơn nhiều.

E x t e n ă i b l e M a r k u p L a n g u a g c

Trang 30

ci) C ác m ụ c đích mò hình hoá của biếu đổ t h à n h phần

Như Irên ta đã Iháv là có nhiểu loại Ihành phán (ít nhất có ba loại chính là ihành phần bố trí thành phán sán phám làm việc và thành phán thực hiện), vậy bicu đổ ihành plũĩn lập ra phái có mục dích mô lả loại ihàiil) phán nà(j,

* M ó hình hoứ cá c iliành phàn kha ỉhi vù lìiií việít: Có thế nói mục

đích chính của \'iộc sư dụng biêu dồ thành phẩn là đế m ô hình hoá các [hànli phán bố l!Í lạo IIỎII cái cài đặi củ;i hij ihống Nếu ia ir.uốn cùi đặl m ội hệ ih ố n s chi gổm đúng một tệp klia thi (.EXE), thi ta cháng cần dùng tới ihùnh plìáii Nguợu lai ncu hệ thống gồrn nliiều tẽp khii thi và liên k'i’t c.íc ihư \'iện dối ti.''ọ'ng i'iì ly cần dừng bicii dồ tliành plián đti ỉ^iiíp la hicr; thị, d(u; Iii [liành lập và tư liệu hoấ các qiivếi định của c!n':n” ta Jci với hệ Ilìcúu’ vật iv.

Đ ế m ô hình hoá các ihành pỉũin khá ihi và thư viện, ta cần;

+ Xác định sự phân chia Ihành thành phấn đối với hệ thống vậi lý Lưu ý các tác động kỷ Ihuật, việc sứ dụng thiết bị và sự sử dụng lại.

(- Mô hình hoá niọi lèp khá ihi 'à thu \iệ n bới các tliàiih phần (dùng khuôn dập thích hợp).

+ Nếu thấy cần quán lý rõ ràng các mối nối (seam s) trong hộ thống, hãy m ô hình hoíí các giao diện mà thành phần này dùng

và thành phần khác thực hiện.

H- Đ ể inây rõ các ý dồ tạo tập, hũy mó hình lioá các inối liên quan

giữa já c lệp kliá llii tliu \iệ (ì và j.àiio d.ộ.i (thường đó là niối liên quan phụ thuộc).

Hình V I 17 cho m ột thí dụ về biểu đổ các thành phẩn bố trí, trong

đó có một tệp khả thi (amimator.exe) và bốn tệp thư viện (dlog.dll, wrfrme.dll, render.dll \ ’à raytice.dll) Các giao diện không được vẽ rõ.

M ồ hình lìoá c á c hàni’, các tệp vâ cá c iư liệu: Bên cạnh các tệp

khả thi và thư viện, tạo nên phần chạy được của hệ thống, thì còn nhiều thành phần bố trí khác, gọi là các thành phán phù trợ, tuy khòng phải là khả thi hay thư viện, song vẫn rất cần cho việc cài đạt hệ thống Chẳng hạn để cài đặt, la vẫn còn cần các dệp dữ liệu, các tư liệu trợ giúp, các scripls, các tệp log, các tệp khời tạo, các tệp

212 Chương VI Thiết k ế

Trang 31

Hìtili VỊ.Ị7 M ô hình hoá các tệp khả thí I’à thư viện

Đ é mỏ hình hoá cá c bảng, các tệp, và các iư liệu, ta cần:

Nlựm diện các thành phần phù trợ, cũng là bộ phận của cái cài đặt vật lý cúa hệ thống.

đập thích hợp.

+ Đ ể thấy rõ ý đổ xây dựng, hãy lập các nỉối liên quan giữa chúng và với các tệp khả thi thư viện và giao diện (thường dùng ưiối liên quan phụ thuộc).

Hình VI 18 cho m ột thí dụ về biểu đổ ihành phần, được thành lập

từ bicu đổ trên Hình V I 17 và ihêm vào các bảng, các tệp và các tư liệu Ta thấy có m ội tư liệu (animator.hlp), một tệp (animator.ini) và

m ộl bảng CSDL (shapes.lbl).

đích của việc tạo lập biếu đồ ihành phần Các tệp nguồn dùng để chứa các chi tiết vể các lớp, các giao diện, các hợp tác và các phẩn

Trang 32

214 Chương VI Thiết k ế

tứ logic khác; chúng tạo nên m ộl bước trung gian đế lạo lập các thành phần vật lý, nhị phân (nhờ một côn g cụ nào đó) Các công cụ (chẳng hạn chươiìg Irình bièn dịch) thường đòi hói các tệp nguồn phái được tổ chức theo một quy cách nhất định nào đó (thòng thường là một hay hai lệp cho một lớp) Các mối liôii quan phụ [huộc giữa các lệp nà\ phan ánh một tiậi lự biên dịcii.

/ / /

Hìnlì VỊ.18 M ô hình ÌÌ OÚ bảng, lệp, v ù tư liệu

Để niỏ hlnh hoá mã Iiguón, ta cần:

4 TỔ chức các tệp I i g u ồ n theo khuôn dạng áp đặt bởi công cụ phái triển, dùng các m ối liên quan phụ thuộc để thể hiện m ối lién quan biên dịch.

+ Dùng các giá trị gắn nhãn đế ghi chú về phiên bàn, vẻ lác giả, ngày hoàn thành và các thông tin kiếm tra dầu vào, kiếm ira đầu ra để dẻ quản lý quá trình phát triển.

Hình VI 19 cho một thí dụ về một biểu đồ thành phần m ô hình hoá các lệp nguồn dùng d ể xây dựng thư viện rcnder.dll lừ các thí dụ kia

Ta thấy có bốn tệp đầu đề (render.h, rengine.h, poly.h và coíortab.h) biểu diễn các mã nguồn cho phần đặc tá một số lớp Cũng có một tệp

Trang 33

§2 Bước 8: Thiết k ế hệ thống 215

cai dặt (rendcr.cpp) biếu ciieii cho plián cài đặt của một trong các lập

đ iu đc trẽn.

« s o u r c e » Q colortab.h Ịversion=4.1}

Hình VỊ.19 M ô hình luHÍ m ã niịitồn

đ) T ạ o lập các biểu đồ th à n h phần

Đ ế tạo lập các biểu đồ ihành phán (mà đáng chú ý là biếu đổ các thành phần bố trí, vì nó phức tạp hơn) thì la có thể thực hiện theo hai chiến lược: trên xuống và dưới lèn.

- Theo chiến lược trên xuống, thì ta hình thành quang cánh chung của hệ thống dưới dạng biõu dổ thành phán irước, rổi mới xét tới nội dung bên trong của các thành phần (tức là các lớp) sau Cách làm này có vé thuận liòn cho sự phân côn g công việc cho các nhóm làm việc sonjz lai tlẻ dẫn tới sự sa đà quá sớin vào các chi tiết kỹ thuậí, dc tíần lới những thiết k ế thừa (ihiếi k ế ra inà rối cục lại khôim ihật cầiỉ tiùng).

- Tlico chiến lược dưới ícn thì irước lict ta tập Irung nghiên cứu các chức nảng nghiệp vu mà ncưừi (lùng đòi hỏi, để từ dó plìát hiện ra các lớp và sau đó mới goni cúc lứp lại vào các Ihành phán (có bố sung các lớp phụ trợ) để tạo diều kiện cho sự phân công cài đặt và tạo khá năng sứ dụng lại Đ ó chính là chiến lược mà ta ưu liên sử dụng, và thế hiện chính con đường mà la

đã đi trong liến trình mười bước cho đến đây.

Đ ể tạo lập biểu đ ổ Ihành phần lừ các lớp thiết k ế đã có sần, ta có thế vận dụng một số nguyên tắc hướng dản như sau:

Trang 34

• Dáo (ĩdm tíiili c ố kểí của iliânh phần: Các lớp tạo nên một Ihành

phẩn phài ilìực sự gắn kết với nhau trong cùng một mục đích.

- Mục dích của một Ihành phấn Ihê hiện ớ một số chức nâng mà

nó có Ihể cung ứng cho các thành phán khác (thường gọi là hợp đổng của lliành phần) Mục dích đó phải tập trung, nghĩa là không tán mạn hay ôm đổin.

- Các lớp có tương liên cao với nhau nên được xếp vào cùng một thành nliần Khi hai lớp cộng tác với nbaii rhường xuvên, nốii xếp chúng ớ hai ihành phẩn khác nhau (và như vậy có k'há nãng được bố Irí ờ hai nút khác nhau), thì có nguy cơ gãy tổn phí đườiig iruvền trên mạng, nhất là khi cliúng Irao đổi (qua iliaiĩi số hav qua gia trị trà về) các dốỉ iưọng lớn cho Iihau.

Các !ớp trong cùng một phả hệ thừa k ế hav phả hệ hc;fp Ihiình ncn được xép vào cùng một thành plián.

Giám thiểu sựtươníỉ liéii iiiữa cá c ílìànli phấn: Nếu sự giao lưu bèn

irong một thành phần Ihường !à sự trao đổi thõng điệp giữa các đối lượng ở bộ nhớ trong, thì sự giao lưu giữa các ihành phần thường Ihực hiện qua mạng, đòi hỏi phải biến đổi thông điệp và các tham

số cua nó thành dứ liệu, để truyền đi rối lại biến đổi trờ lại [hành thống diệp Đ iều đó gây nhiều tốn kém, nên tránh, bẳng cách cố gắng giảm thiểu sự lương liên giữa các thành phần.

đồng của một lớp là những phương ihức của nó trực tiếp đáp ứng các ihông điệp được gùi dến lừ cúc đối tượiig khiíc Chảng hạn, hc^3

d ciig củ;i lớp Sinh viôn bac gồm các th:ic lác như liếpnhậnSinhvíênO, loạibỏSinhviên() Khi xét tuyến lớp vào ihành phần, ta chỉ căn cứ vào hợp dồng của lớp, mà bỏ qua mọi thao tác khác, vì các Ihao tác này không tham gia giao lưu với các đ ối tượng Ihuộc các Ihành phần khác.

Có thể phân loại lớp dựa vào hợp đồng của nó:

- Phân loại lớp theo bàn chất, la có:

+ Các lóp giao diện người dùng: Đ ó là các lớp cài đặt các màn hình, các trang, các báo cáo hoặc là các lớp cài đặt sự 'kết dữih lôgic" như là xác định màn hình hay trang nào cần được hiển thị Các lớp giao diện phải được đặt trong các thành phần ứng dụng (ihành phần có khuôn dập « a p p lic a t io n » ) Trong Java các loại

216 Chương VI T h iế :k ế

Trang 35

ỉớp này bao gồm Java Ser\'er Pages (JSPs), servlels, và các lớp màn huìli được cài đạt thông qua thư viện lóp giao diện người dùng, như là Swing.

+ Các lớp kỹ thuật: Đ ó là các lớp cài đặt các dịch vụ ở mức hệ thống như là bảo mật, trường cữu hoậc middlevvare (phần mềm trung gian giữa các tầng trong kiến trúc khách hàng/dịch vụ) Chúng cần được đặt trong các thành phần hạ

« in f r a s t r u c t u r e » )

+ Các lớp ỉĩnh vực: Đ ó là các lớp chứa các thòng tin lĩnh vực

và các dịch vụ liên quan tới các thòng tin dó, như là các lớp Sinhvièn, Thầygiáo, M ônhọc Các lớp lĩnh vực phải được đưa vào các thành phần lĩnh vực (thành phần mang khuôn dập « d o m a i n » )

- Phân loại lớp theo hình thức giao tiếp: Tuỳ theo khả nãng giao tiếp (gứi/nhận thông điệp), mà la có ba loại lớp

+ Các lớp dịch vụ; Đ ó là các lớp chỉ nhận mà không gửi thông điệp Lớp dịch vụ thuần tuý phái Ihuộc vào m ột thành phần lĩnh vực, và thường là thành phần lĩnh vực riêng cho nó, vì

đó là những "điểm dừng” của luồng Ihông điệp bên trong một ứng dụng.

+ Các lớp khách hàng: Đ ó là các ỉớp chi gửi m à không nhận Ihông điệp Lớp khách hàng Ihuần tuý không thế đưa vào một thành phần lĩnh vực bới vì cdc l('jp này không có khả năng cung cấp dịch vụ hay lliỏng tin trong khi mục đích cơ bán của các thành phán lĩnh vực lại là cung cấp dịch vụ và thông tin Thường thì các lóp khách hàng thuộc vào các thành phần ứng dụng.

+ Các lóp còn lại gọi là lớp khách hàng/dịch vụ, vừa có nhận

mà cũng có gửi thông điệp VỊ Irí của chúng thì cũng có thể

là ở m ột thành phần ứng dụng, hay ờ một thành phần lĩnh vực, luỳ theo bản chất của lớp khách hàng/địch vụ là

n ghiêng về phía khách hàng hay nghiêng về phía dịch vụ Có thể áp dụng quy lắc sau đây để lổ chức lại các thành phần: nếu có một thành phần là khách hàng duy nhất của một thành phần ichác, thì hoà nhập hai thành phần đó làm một.

Trang 36

5 BỔ T R Í C Á C T H À N H P H Ẩ N K H Ả T H I V À O C Á C N Ú T

P H Ẩ N CỨNG

Các thành phần phán m ểin mà ta phái Iriển hay sứ dụn«ỉ lại phải được bố trí lẽn một tập hợp các phần cứng để llìực hiện Đê Ihiếi kế việc pàv la dùng biểu đổ b ố irí.

a) Biếu đổ bỏ trí

Biển d ồ bô //•'■ {dep'oymcrìt diasram ) 'à mộ? biểi' đố diễn *.ả sự bố

trí các sáiì vật khá ihi (execuiable arcilacts) Iren một sàn diẻn ben dưới (underlying platíeriTì) N ó gồm các nút (chứa các sàn vâl khà ihi) và các kết nối giữa các nút dó.

Như vậv có hai mức diễn lả của biếu dồ bố trí: mức lớp (tưcmg tự inội biểu đổ lớp) và mức cá thể (lương tự mộl biểu đổ đối tượng) Hinh

V i.20 cho một biếu đổ bố Irí (ở mức cá thể) biếu diên cho hình trạng vật lý cua hệ thống thông lin về trường đại học.

Theo định nghĩa như trên, thì nói cụ thể, núi có thể là:

- M ột thiết bị (nút ci'mg), thường mang khuôn dập « d e v ic e > '> (hoãc cụ thể hơn là processor con sole, kiosk printer );

- Một m ôi trường thực hiện (nút m ềm ), thường mang khuỏn dập

« e x e c u l i o n e n v » , như là EJB Container hay là J2EEServer Lưu ý trên Hình V I.20, thì nút WebScrver chưa c ó khuôn dập, dó là vì người phát triển hệ thống chưa có quyết định: nút đó có ihể đơn giản là một loại phẩn m ềm nào đó (chắng hạn m ột Brovvser) hoặc là một thiếl

bị vật lý N hớ rằng m ô hình có thể được phát triển theo thời gian.

218 Chương VI Thiết kế

Trang 37

C S D L ư u ờ n g c

« d a t a b a s e » ( n ơ i b á n = O r a c l e 1

« J O B C »

« d c v i c c »

M a i n l r a m c { O S = M V S )

m ềm ), và nút này lại clìứa ba ihành phần phần m ềm , một đặc tả bố trí,

và một sản vật phần mểm:

- Tlìành phần phần m ém vẫn dùng cách biểu diễn như ờ biểu đồ thành phần;

Trang 38

220 Chương VI Thiết k ế

- Đặc tá bó' trí về cơ bản ià một tệp hình trạng (configuralion file), như là EJB deploym ent descrìptor nó xúc định các tham

sỗ cho một phân bổ và định nghĩa một nút làin việc ra sao.

- Sản vật phần m ềm thường mang khuôn dập « a r l i t ‘a c t » hay biểu tượng hình chữ nhật gấp góc (trang) Trong thí dụ cụ ihể ờ đây th: sản vậĩ phần m ềm là mỗt khuón giá lưu irữ gid định (fictional persisience framework) mua về từ hãng A iĩibySoíl.

Các kết nối (connections) là các m ối liên quan giao tiếp giữa các

cặp nút, Ihẽ biên vể mãt ''ật lý bằng một điíờng truyén (r.hư ià mội kết nối Ethernet, một đường truyền tuần tự hay một bus dùng chung) Mỗi kết nối hỗ Irợ cho một hay nhiều giao Ihức truyền thông, mà ta cẩn chi

rõ Dằnti các khuôn dập ihích n(m Bàng V I.4 cno mọt số khuon dập

thường dimg cho cac kết nối, cim g với ý nglũa CÚ.I chúng.

Bảỉií^ Vỉ.4 Cúc kììitôn d ậ p thường dủníỊ cho cá c kéi nối

asyiichrDi.ojs Mộ: kế: lỉối không đổng bộ, chẳng lìạn niessage bus

hay m essage queue HTIV HyperTexl Transporl Prolocol, m ộl giao ihức Iniernet JDBC Java Database C onnectivity, m ột Java A Pl để truy cập

CSDL ODBC Opor Díilabasc C onnectivilv, n-ột M ỉcioS oĩl AP'

truy cập CSDL RMI R em ote M elhod Invocalion, một giao thức liên lạc của

Java RPC R em ote Procedure Call

synchronous M ột kêì nối đổng bộ, trong đó bên gửi ch ờ Irả lời từ

bên nhận

W eb services Lièn lạc qua các giao thức vveb services như là SOAP

và U D D I

Trang 39

- Mó hình hoá phần cứng (các bộ xử lý, các thiết bị);

- M ô hình hoá sự bố trí các thành phán phần m ềm trên các phần cứllg.

Mặt khác, thì hệ Ihống được mô tả có thể là:

- Khi cần diẻn lả sự bố trí phần mém vào các phần cứng thì cũng chỉ nên lưu ý các thành phán phần m ềm chính, bới vì Irên thực tế một m áy tính có thể chứa hàng chục hay hàng trãm các loại phần niếm không thể kế hốf đươc.

• Cần xem xét trước hết về các yêu cầu kỹ thuật, như là;

- Có những hệ thống đang tổn lại nào cần được lích hợp hay tương lác với hộ thống đang thiết kế.

- Ai và cái gi cần được kết nối hay tương tác với hệ Ihống, và bằng cách gì (thông qua internet, ưao đổi các tệp dữ liệu, )?

- Các phần m ềm trung gian nào (m iddleware) là cần ih iếl cho

hệ ihỏng, kể cả hệ điều hành, và các giao thức truyền ihông?

§2 Bườc 8: Thiết k ế hệ thống 221

Trang 40

- Người dùng trực tiếp tương lác với các phẩn cứng \'à phẩn mềm nào, như là các PC các máy lính m ạng, các trình duyệt ?

“ Hệ thống khi đã được bố trí, sẽ được kiếm soát ra sao?

An nin!ì củd hệ thống cần Ihiếl đến đâu (có cán tưừng lừa, cần

m ội phần cứng bảo vê một cácli vật

• Xác định Kiến trúc phàn tan:

- Tú co ỹ dịíih choii giái pháp khach hàiig bự (/ai-ciien i) Iiong

đó lôgic nghiệp vụ được chứa cà trong một m áy lính đ c bàn hay là giải pháp khách hang gáy (ihin-ciieni) trong đó lỏgic nahiệp vụ được bỏ’ trí trong mộ: scr\’er ứng dung’’

- l-hạ (lụnỊ của chúng ta gổni haí rầng, ba lấiìo hav Ịihiều h ơii'

chưa hàn đã chính xác trong chi liéi Td còn cần các chọn lựa \'ề sàn

diễn (p!atforms), như là các phần cứng và các !iệ điều hành, và các giao thức cho các kếl nối giữa các nút (chẳng hạn RMI hay bus thống điệp).

• Bố trí phẩn m ém vào các nút có thé thực hiện theo ba cách:

- Khống dién ta tường m inh lại mỗi nút, mà đưa vào đặc la của mít (phiìn đặc là này iluợc quàn Iv l-)òi công cự in; J'íúp, ihuờnị;

là ắn, nhưng khi cần có thể cho hiện ra để xein).

- V ẽ các thành phần phần m ềm bên ngoài nút, và kết nối với nút bằng m ối licn quan phụ thuộc.

- Liệt kê các ihành phẩn phẩn m ềm dược bố Irí cho m ỗi núl ngay trong nút (có thể tách thành một ngãn riêng, khác với ngán tên của nút).

Lưu ý rằng, có nhiều khi cùng một loại thành phẩn phần mềm (như

là mộl ihàtih phán khả thi hay m ộl thư viện) có ihể được bố trí đồng thời trên nhiều nút khác nhau.

222 Chương VI Th iết k ế

Ngày đăng: 20/05/2016, 22:34

HÌNH ẢNH LIÊN QUAN

Hình  Vỉ.6.  D i  chuyển  ỉừ ph iếu   iỉiới  thiệu  sách - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh Vỉ.6. D i chuyển ỉừ ph iếu iỉiới thiệu sách (Trang 11)
Hình  VỈ.Ỉ2.  M ộ t kiến  ỉrúc  khách  hànỵldịtlì  vụ  năm  lầng - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VỈ.Ỉ2. M ộ t kiến ỉrúc khách hànỵldịtlì vụ năm lầng (Trang 21)
Hình  VI. 15  cho  m ột  biểu  đổ  gồm   ba  thành  phần,  trên  đó  la  có   thế  nhận  thấy  m ột  số  đặc điểm   sau: - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VI. 15 cho m ột biểu đổ gồm ba thành phần, trên đó la có thế nhận thấy m ột số đặc điểm sau: (Trang 26)
Hình  VI. 18  cho  m ột  thí  dụ  về  biểu  đổ  ihành  phần,  được  thành  lập - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VI. 18 cho m ột thí dụ về biểu đổ ihành phần, được thành lập (Trang 31)
Hình  VI. 19  cho  một  thí dụ  về  một  biểu  đồ thành  phần  m ô  hình  hoá  các  lệp  nguồn  dùng  d ể  xây  dựng  thư  viện  rcnder.dll  lừ  các  thí  dụ  kia - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VI. 19 cho một thí dụ về một biểu đồ thành phần m ô hình hoá các lệp nguồn dùng d ể xây dựng thư viện rcnder.dll lừ các thí dụ kia (Trang 32)
Hình  VỊ.19.  M ô  hình  luHÍ m ã  niịitồn - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VỊ.19. M ô hình luHÍ m ã niịitồn (Trang 33)
Hình  VỈ.23.  Thiết k ế  sự  ứng x ử  theo  ỉrạn^  Ịháí cãa - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VỈ.23. Thiết k ế sự ứng x ử theo ỉrạn^ Ịháí cãa (Trang 48)
Hình  \ 'l  24.  Hành  vi  ihciy d ố i  íruti:^  thái  khi cỉển diểm đ ỗ - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh \ 'l 24. Hành vi ihciy d ố i íruti:^ thái khi cỉển diểm đ ỗ (Trang 49)
Hình  VI.36.  ĐỒHÍỈ  bộ hoú  cúc  ihôiiíi lin  cltìtìg  chung - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VI.36. ĐỒHÍỈ bộ hoú cúc ihôiiíi lin cltìtìg chung (Trang 63)
Hình  V ! J 9 .   Man  ĩỉìiết  kế &#34;Co mm and &#34; - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh V ! J 9 . Man ĩỉìiết kế &#34;Co mm and &#34; (Trang 65)
Hình  VI.41  cho  một  ihí  dụ  \ é   ánh  xạ  cùa  lớp  Đơnhàng  sang  bảng.  Kc't  tịuá  của  sự  ánh  xạ  này,  như  l;i  Iliây - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VI.41 cho một ihí dụ \ é ánh xạ cùa lớp Đơnhàng sang bảng. Kc't tịuá của sự ánh xạ này, như l;i Iliây (Trang 69)
Hình  V Ỉ .4 Ị .  Tliiếí k ế v i ệ c   liãt  i r ữ ì à p  Đ(fnlìùnq - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh V Ỉ .4 Ị . Tliiếí k ế v i ệ c liãt i r ữ ì à p Đ(fnlìùnq (Trang 70)
Hình  VỈ.44.  C á c  ASP.NET  ỉmn\&gt;  t(&gt;àn  hộ  sàn  cliễn.NFJ - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh VỈ.44. C á c ASP.NET ỉmn\&gt; t(&gt;àn hộ sàn cliễn.NFJ (Trang 79)
Hình IX.  ! .T ầ m   lìhhi  ctì'i  h'ip (iơh  \ucá - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh IX. ! .T ầ m lìhhi ctì'i h'ip (iơh \ucá (Trang 152)
Hình  ỈX.Ỉ.  M ột đ ố i iượng Hên  kết:  Làm  việc ở - Ebook phát triến hệ thống hướng đối tượng với UM l2 0 và c++  phần 2   nguyễn văn ba
nh ỈX.Ỉ. M ột đ ố i iượng Hên kết: Làm việc ở (Trang 164)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm