Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
0,96 MB
Nội dung
N(ílJYỄN VÃN BA Phát triến hệ thống hướng đối tượng với UM L2.0 và'c++ {In lân thứ hai) S ách d ù n g cho; - Sinh vỉẻn c c trư ờng Đại h ọ c , C ao đ ẳn g - C ác n hà x â y d ự n g h ệ th ố n g ch u y ê n n g h iệp • C ác kỹ s phân tích thiết kế NHÀ XUẤT BẢN ĐAI HỌ C Q U Ố C G IA HÀ NỘI NHÀ XURT BẢN DỌI HỌC ọuốc Gin Hii NỘI 16 [ e Chuối - Hai Bà Trưng - H Nội Đ icn ĩlioai: (04) : (04) 7 j-ax: (0 ) 9 c hịu tr c h n h i ệ m x u ấ t bấn: Qưốc G iã m đôc: PHỪNG BÁO T ống hiên tập: NCUYỀN b t h n h Biẽn tập: HỔ ĐỐNG LAN HƯƠNO Trinh b y hio: HẤI ĐỔNG HÁT TRIẺN HỆ THÒNC HƯỜNC ĐOI TƯỢNC VỚI UML 2.0 VÀ C + + lã số: IL-OI Đ H 2008 1000 cuốn, khố 16 X 24 cm lại Xướng in Tạp chí tin học & đời sống ố xuất bàn: 136 - 2007/C X B /03 - 13/DHQGHN, ngày 13/2/2007 •uyếl định xuất bán số: 0] LK/XB xong \'à nộp lưu chiẻLi quv nám 2008 LỜI NÓI ĐẦU Mục tiêu hướng tới sách bao hàm đầy đủ irong tựa đề Đ ó là; “Phát triển hệ thống hướng đối tượng với UM L 2-0 C++" Đ ể bạn đọc có ihể có nhìn bao quát nội dung sách, xin ỉần lượt xét v ế irong tựa đề P h t triển hệ thò ng Hệ thống để cập hệ thống phần mềm, hay nói rộng chút hệ thống tin học (bao gồm phần m ềm phần cứng) Vậy phát triển hệ thống hiểu q trình xây dựng hệ thống tin học tính từ A đến z , kể từ lúc manh nha ý đồ, đến khảo sát để tìm hiểu m irường nhu cầu, phân tích để sâu vào chi tiết, ihiết kế để làm cho thích ứng với điều kiện kỹ thuật sẩn có, cài đặt để thực thi ngơn ngừ lập trình tảng kỹ thuật, cuối kiểm chứng chuyển giao Tuy nhiên, hạn ch ế số trang, nên sách cũtig dành nhiều ý vào số khâu q trình phát triển hệ thống Đ ó là: lìm hiểu nhu cầu, phân lích, thiết k ế cài đạt trẽn ngôn ngữ lập trình C++ Định hướng cho ph át triển hệ íhống Tổn lụi nhiều phương pháp để liến hành việc phát iriển hệ ihỏng Đ ê tránh dàn trải theo lối "cưỡi ngựa xem hoa", sách buộc phải chọn phưcmg pháp để có ihể trình bày sâu kỹ Tuy c ó nhiều phưong pháp, song cách dại thể c ó tách chúng thành hai nhóm lớn luỳ thuộc vào hai định hướng khác biệt Đ ó pliương pháp hướng chức nãng phưcng pháp hướng đối tưcmg Các phương pháp hướng chức năng, nở rộ vào nãm 70, 80 kỷ trước, lấy chức làm đơn vị phân rã liến hành phân tích hệ thống Câu hỏi hệ thống thường đặt sớm cho người dùng, cho người thiết kế câu hỏi; "Hệ thống phải làm gì?” Bời nghiên cứu hệ thống dựa vào chức nãng (tức Lời nói đầu việc phải làm) cách làm tự nhiên dễ hiểu Phương pháp hướng chức dẫn tới viêc cài đặl hệ Ihống ngơn ngữ lập trình Iheo thủ lục (như Pascal, c ) Dù dễ làm dể hiếu, lliì theo năm tháng, phương pháp hướng chức nãng để lộ nhược điếm khó chấp nhận: hệ thống xãy dựng theo cách khó sửa chữa, khó nânc cấp Íí có khả nãng lái sử dụng vào hoàn cảnh khác Các phương pháp hướng đối tượng khắc phục nhược điếm đời từ đầu nãm 90 đến nav lại lấy dối tư m g f.àm đim ngiiyén hệ ihống Đ ối tượng kết hợp chức \'à liệu Đ ó kết hợp hợp lý, chức chi thao tác irên số liệu dintỊ ngược lại mổi hệu duơc xử lý bới số chức định Không h(ĩp Iv mã lại cịn rãl lự nhiéa dễ hiếu, đổi tưoTig ĩìn học thưởng dùng đé piìảiì áiỉh hav m ô đối tượng giới thực (tức sư hay vậi) Sự thành đạt ngày ngơn ngữ lập trình hướng đối iượiig (như C++, Java ) dã khẳng định vị áp đảo cúa phương pháp phãn tích thiết k ế hướng đối tượng trước phưcmg pháp phân tích thiết kế truyền thống Cho nên, khỏi phải cân nhắc nhiều, sách trình bày với bạn đọc tri ihức công nghệ phát triển hệ thống theo định hướng đối lượng Ngỏn n g ữ mô hình ho U M L Dù dùng phươTig pháp nào, người phân tích ’'à Ihiếi k ế ln phài dùng hình thức hiểu để diễr tả sắc thái khár hệ thơng Hình ihức diễn tả c ó thể dạng vãn lự, phưcjiìg trình tốn học, bảng đổ Ihị Người ta gọi mơ hình, việc sử dụng m hlnh để diẻn tả hệ thống gọi m ỏ hình hố Trước đày m ỗi phương pháp phát triển hệ thông đề nghị loại m hình riêng Sự khác biệt ngơn ngữ diễn tả hệ thống đó, giống người nói tiếng Anh, kẻ nói liếng V iệt vấn đề, gây khó khăn không cần thiết Xu hướng phái triển lất yếu phải Bạn đọc muốn tìm hiểu phương pháp hướng chức xin tham khảo cuon 'T h â n tích th iế t k ế hệ thống thông tin - Các phương pháp cấu trú c”, x u ất b ản năm 2003 cùa tác giả Lời n ó i đầu _ íỉi đến thống ngơn ngừ Vì mà vào năm 1997 đời ngơn ngữ m ỏ hình hố thống ƯML N gơn ngữ mơ hình hố UM L cơng nhận chuẩn, tiếp tục nâng cấp Đến (cuối 2004) có phiên ƯML 2.0 UM L dùng m ỏ hình dạng biểu dồ Phiên UM L 2.0 dưa 13 loại biểu đổ, thay cho loại biểu đồ dùng phiên l.x trước Cuốn sách trình bày với bạn đọc vé UML 2.0 cách vận dựng vào tiến trình phát triển hệ ihống hướng đối tượng C ài đ ặ t với C++ V iệc cài đặi hệ thống luôn phải sử dụng ngơn ngữ lập irình đó, mà ngơn ngữ lập trình lại thường khác biệt cú pháp ngữ nghĩa với Cuốn sách trình bày việc cài đặt hệ thống ngôn ngữ lập trình C++ Khi la tiến hành phân tích thiết k ế hướng đối tượng, chuyển qua cài đật ngịn ngữ lập trình hướng đối tượng, C ++, chọn lựa tự nhiên Nhưng lại ỉại chọn lựa C ++ mà khơng phải ngơn ngữ lập trình hướng đối tượng khác? K hơng phải C ++ đặc sắc hay hơn, mà chẳng qua vì, theo kỳ vọng tác giả, C++ quen thuộc với đông đảo bạn đọc (phần lớn khoa công nghệ thông tin trường đại học dã c ó giáo trình "Lặp trình hướng đối tưc;ng với C++") Và m ộl quen ihuộc, bạn đọc nghiên cứu chương cài đặt cuối sách khỏi bận tàm việc học thêm ngôn ngữ iập irình tập trung ý vào ý iướng chủ đạo irong cài đặt Nếu nắm bắt ý tưởng đạo rồi, cho dù sau bạn đọc sử dụng ngơn ngừ lập trình hướng đối lượng khác, việc vận dụng ý tưởng khỏng cịn khó khãn C ấu trú c sách N ộ i dung sách trình bày Iheo hai tuyến chính: - M ột mặt trình bày khái niệm m hình UML, - Mặt khác trình bày bước triển khai tiến trình phát triển hệ thống 8 _ Lời nói đầu Hai luyến trình bày song song hỗ ỉrợ cho dọc theo chương sách Các mó hình UM L giới Ihiộu dần dán iheo trậl tự vận dụng vào bước cúa tiến trìnli phát triển Cịn chương llìì lại dược phân theo đé lớn củu \ iõc phái triển hệ thống Hai chuơiìg đầu chi có tính châl dầi) nhập Cliuơng I nh^i^ ; lói thiệu lại cho bạn đọc ý tưởng chù đạo lập trình hưới' : Joi tượng, để từ bạn đọc thấv »rước đích cùa phàn tích vỳ thiết kc' IV: p h â n líc h v thiế t k ế đ ế d i đ ế n lậo i r ìn h ) lý giài h n \ é C.IC cung cách phàn tích thiết kế dược liình bày dọc theo sách Chương II giới thiệu cách khái quát mỏ hình, ngơn ngữ L;MÌ, va tiên ưinh phát triển hệ Ihống dũng ư đươc chọn lọc theo mục đích khiêm lốn sách, dã khơng dược irìnhì bàv vét cạn Đ ế tra cứu ƯM L bạn đọc sử dụng lài liệu gốc cứa ba tác giả cùa ƯML [6 ] [28], xem irên website [36] Đ ể lìm liiểu thực vổ C++, có nhiều sách thích hợp, chảng hạn [31] hay [18] Vậy rỏì cục sách chọn đối tượng phục vụ cho người hành nghề hay hành nghề phát triển hệ thống có ý định bổ sung cập nhật kiến thức công nghệ để vận _ Lời nói đầu dụng thực vào nghề nghiệp Đó nhà phâii tích thiết k ế chuyên nghiệp, người lập trình, người kiểm định hộ thống, sinh viên theo học khoa Công nghệ thông tin, bậc đại học hay bậc cao học Nó giúp ích cho thầy giáo Công nghệ phấn mềiĩi scạn thảo giáo trình Cuối cùng, lác giả bày tỏ biết ơn đông nghiệD khoa CNTT cùa trường ĐHBK Hà N ội dã giúp đỡ dộng viên lúc giá nhiéu soạn thảo sách Cuốn sách cĩĩng klió uáiih khoi sai SÓI tác giá mong nhận ý kiến phán hổi từ dộc giả, qua e-maìl: b a n v ( ặ ii-li'ií ưdu.yn Nguyẻn Vãn Ba Chương I cnc sở củn Lộp TRÌNH HƯỚNG D ốl TƯỢNG Phát iriến hệ ihống hướng đối tượng auá trinh thiết lập hệ Ihống lin học qua bước phàn tích thiết kế, để tiến tới lập irình ngơn ngữ hướng đối tượng Như muốn hiểu việc phân lích thiết k ế hướng đối tượns (mà ta thường gọi mơ hình hố hướng dối tượng), la cần hiểu trước hết đích mà hướng tới tức lập trình hướng đối tưựng Chương giúp bạn dọc có nhìn khái qt (khơng vào chi tiết) sờ lập trình hướng đối iượng, hai phương diện: Khn phép lập trình hướng đối tượng, lức dặc thù việc vận dụng lĩiộl ngơn ngữ lập trình hướng đối tượng M áy đối tượng, tức nguyên tắc cho việc cài đặi ngơn ngữ lập trình hướng đối iượng §1 K H U Ô N P H É P L Ậ P T R ÌN H HƯỚNG ĐỐI TƯỢNG Ì C Á C K H U Ô N P H É P L Ậ P TR ÌN H a) K hu ôn phép ỉà gì? Gần đáy lài liệu nước thường xuất thuật ngữ "paradigm", mà ỏ la diễn tả qua tiếng Việt từ "khuôn phép”“ * Paradìgm bắt nguồn từ thuật ngữ Hy Lạp "parađeigma” có nghĩa m hình (model) hay mẫu (pattern) Thomas Kuhn, tập sách The Structure o f Scientiíic Revolution, đưa định nghĩa chi tiết hơn: '1) Nếu bạn khơng thích từ "khn phép", xin thay từ "mô thức" J _ Chương I Càc sở lập trình hưởng đối tượng "Paradigm lập hợp lý thuyết, liẽu chuẩn phương pháp quy tụ lại nhằm biểu diễn cho cách tổ chức tri thức” b) C ác kh u ò n phép lập trìn h tru yền thơn g đại Lịch sử phát triến gần 50 nãm cúa ngơn ngữ lộp trình (xem Ifinh 1,1) dã đc xuất nhiéu khuỏi) phép lập tiình khac Síiu d j \’ số khn phép chính; • L ập t>-ìiĩli ìhii íuc (proceduraỉ orogramming) hav lão ìrìiìh chí lììỊ (impcrativc programmingj: Là loại lập trinh tlieo cách íh;'uih lạp m ột dãy chí Ibị (lệnh) cho máv tính thực đế chạy giái ihuật giải quvết tốn Đây cách lập Irình truyền thống, với ngơn ngữ lập Irĩph thó' hệ hi.ii ví ba nhu Pascal, c Cobol, Acỉci • l.(io ỉrình (íogical progrummirig): La ioai lụp tvinh iroiìg dó người la dùng biểu lliức lógic vị lừ đế diẻn tà líiili chãi nià biến toán phải tuân thủ Vậy ỉoại lập trình phi thú tục hay cịn gọi lập trình khai báo (declarative programming) v\ khai báo mà ta muốn có, mà khơng cho thú tục để đạt tới Bộ diễn giải (interpreter) ngơn ngữ lập trình lỏgic sc thực lúẹn bước suy dién loogic cân thiết dê dại đến yéu cáu Trong số ngôn ngữ lập trình lơgic, kể Prolog, C5 • L ập rrìnli hàm (íunclional programming): loại lập trình dựa trẽn hàm Các giai đoạn chương irinh dẫn xuất irực tiếp lừ lý thuyết tính tốn hàm, d o Church đề xuất, gọi Ẳ-tinlỉ toán Trong số ngơn ngữ lập trình hàrn, có lliế kế ML, CAM L Scheini \ xu hơii m ộl cliúì Lisp • L ập trình hướng dối tượiìíi (object orienled programming); Là loại lập irình sử dụng đối tượng tin học, bọc gói liệu thủ tục vào một, đế m ô vật thực lế hay lơgic, qua mà lạo hiệu xử lý thông tin N hờ khả nãng bám sát Ihực tế, mà lập trình hướng đối lượng tạo phong cách lư hoàn toàn mới, rời bỏ cách tư thủ lục, cách tư "chuồng bổ câu" (pigeon hole), xem liệu ỉà chim bồ câu chui chui vào ngăn chuổng N hờ có giấu kín liệu thủ lục bên đối tượng đến mức tối da, ta làm giảm thiểu plíức tạp\ chương trình d ễ 14 _ Chương I Các sỏ lập trình hưởng đối tượng phủ! triển, d ễ chỉnh sửa Đặc biệt đối tượng tin học lại thường gắn với lình vực tốn nhiều với tốn (tức ứng dụng cụ thể), bời chúng có tính ổn định cao, có nhiều khả nâng sử dụng lợi Trong số ngơn ngữ lập trình hướng đối lượng, ta kể Smalltalk E iffel C++ Java Các iiiuc liếp Sciu lẩn lượt trình bày w nél chinh iroDị.’, khn phép lập trì!!h hướng đối lượng, nià không di sâu vào m ộl ngôn ngữ lập trình hướng đối tượng cụ thể (trong Chương VII VIII IX cuối sách, nglìiéĩ! cứư bưức cài óặl hộ thống, ta đé cập Cị I đặc điếm cúa C++) ĩ Đ Ố I T Ư O N ÍỈ VÀ LỔ P a) Mơđuiì ỉiố định kiêu Mơđun đ ố i tượng Một đối tượng có cán ciíâc (tên hay địa chi) bao gổm: - Các llỉuộc linh (hay trường), liệu mà lưu giữ; - Các thao tác (hay phương thức), dịch vụ mà cung ứng Đ ể dễ m tả kiểm sốt việc sử dụng đối iưựng, người la gom chúng theo kiểu, gọi lớp V ậy lớp mơ hình (m ột kiểu) cho phép lừ thành lập đối tượng có chung cấu trúc khả dịch vụ Lớp có tên đặc g m hai phân: phán định nghĩa inuộc tính phán dịnh nghĩa tliao lác Đ ối tưọng ià cá -•/ỉ/(inslanci;) cùa lóp Vậy thực chấi mơt đối tượng c&n giữ c:íc giá trị thuộc tính riêng cịn định nghĩa thuộc lính thao tác ihì có lớp b) T r c h nhiệm p h â n loại M ỗi lớp (và đối tượng nó) giao phó m ột trách nhiệm đó, ẩn chứa khả lưu giữ thơng tin cung ứng dịch vụ N ói chung đối tượng/lớp thường có trách nhiệm phản ánh (m ô hay điều khiển) m ộl vật (vậi chất hay lôgic) giới thực Song có đối iượng/lớp làm nhừng nhiệm vụ khác, có tính chất nội hay trung gian Người ta §1 Khn phép lậ p trình hướng đ ố i tượng 15 {hường phán loại đối tượng/lớp Iheo trách nhiệm chúng Sau số loại hay gặp: + Thực th ể (enúiy), dùng dể phán ánh vật (sự kiện hay vật thể) giới Ihực; + Điên khiển (control), dùng để k iểm '5031 Irình làm việc đối tượng khác; + Biên (boundary), dùng để chuyến đổi thông tin qua biên giới hệ Ihống, dùng đế cung cấp khung nhìn (đại lý) tới số đối tượng khác: + Nguyên íhitỷ (primitive), diễn tả kiếu nguyên thuỷ thường dùng ngôn ngữ lập trình, nguvén, ký tự, xâu ; cá chứng khơng c ó định danh: Liệí ké (enumeration), diẻn tả kicu liệt kê định nghĩa sẩn (như Boolean), người dùng đưa vào c) Bọc kín Đ ối tượng giấu kín nhiều nội dung bên nó: ■t- Chỉ số thao tác công khai (public), nghĩa truy cập từ đối tượng khác; cịn thuộc tính thao tác khác ỉà riêng nr(private), dược dùng bẽn đối tượng Một thao tác công khai Ihực chi công khai phán khai báo (tên thao tác tham số hình thức), cịn phần cài đặt giấu kín + Đ ối tượng lại chứa đối lượng khác irong (như thuộc lính) Như có phân cấp qn lý: bẽn ngồi đối tượng khơng cần biêl đến đối lượng bẽn irong Đ ối tượng tự quản lý đối tượng bên Irong đối tượng bên đến lượt chúng lại quán Iv thành phần cúa Sự bao gói cịn có khía cạnh nữa; bén đối tượng m ột thao tác có truy cập ihoải mái lới thuộc tính (dữ liệu) cúa đối tượng, giốn g biến tổng ihể, mà chẳng cần n ghi thức đặc biệt g ì (chảng hạn nghi thức chuvển giao qua tham số) Sự bao gói cho phép cục hố thơng tin, nhờ mà chương trình dễ xây dựng, dễ chỉnh sửa 16 Chương I Càc sỏ lập trình hưởng đối tượng d) T h a k ế đa hình Một lớp có Ihc Iliừa Ấ:/(inherite) inộl lớp khác Mối licn quan gọi liên quan cha/con, có llìế kéo dài lên Irên hav xuống dưới, mờ rộng thành môi liên quan tổ phụ/cháu chắt Một thừa kế díỉiì IIÕII lớp có níìiều cha hội lớp có ihơ ró nhiếu cha N ội dung cùa Ihùa k ế là: đối lượng lạo lập lừ m ội lớp cỏ ihuộc tính thao tác dinh nglìTa lóp đó, mà cịn có c thuộc tính th a o lác đ ịn h Iighĩa tổ phụ c ủ a lổ p (ló Như xéf mật thực hiện, Ihì thừa kế chê ngầm cho phép sử dụng lại phấn chương trinh có Tuy Iilìiơn ilìừa k ế khõníỊ phái ln ìn la cứng Mhãc Thực cịn cho phép lóp cháu cbãi định nghlii hn ĩnột th.io lác định nghĩa lớp lổ phụ, mà giữ nguyên tên cũ Niiờ ỉời gọi thao tác \'ận dụng vào đối lượng hay dối tượng khác, kích hoạt cách thực khác Gọi (ló hình hay đa xạ (poiymorphism) S ự H O Ạ T Đ Ộ N G C Ủ A Đ ố l T Ư Ợ N G a) K hai báo, tạo lặp, khởi gán loại bỏ đối tượng Đ ể sử dụng đối tượng, nghĩa yêu cầu đối tượng ihực dịch vụ mà có, trước hết phải khai b o Có ba chơ dế khai báo đối tượng; + Đối tượng m ọi thucK tính (khai báo niột lớp): + Đ ối lượng tham sơ' hình thức (khai báo danh sách tham số thao lác); + Đ ối tượng biến cục m ội thao tác (khai báo thân cùa thao tác) Khai báo nhằm cho tên đối tượng (và tén lớp tương ứng) để dùng tên Irong văn chưcfng trình Nhưng muốn có đối lượng hoạt động thực sự, phải iợo lập khởi gán Tạc lập đối tượng thường thực toán tử đạc biệt, chảng hạn Java toán tử new Khời gán cho đối lượng, có thê thực hỉện độc lập với tạo lập, thông qua m ộl thao tác dó nhưn| §1 Khn phép lập trình hưởng đối tượng 17 có Ihế thực nguy sau tạo lập (một cách lự động) nhờ thao tác đặc biệt gọi consiructor định nghĩa sẩn lớp lương ứng Đ ối tượng hết lác dụng, loại bỏ Sự đời dối tượng vào lúc chưcfng trình chạv, khơng phải ỉúc chương irình biên dịch, gọi ỉà kếí nối muộn (late binding) Như vậy, thực ứng dụng đối tượng định nghĩa tập hợp lớp, lạo lập hay nhiều đối lượng lừ lớp khởi động thao lác đối iượng đó, để rổi thao tác kéo theo thao tác đối lượng tạo lập, gây nên kích lioạt lan truyền, tạo kịch ban cho phép thực yêu cầu xứ lý b) Giao tiếp thơng điệp Một đối tượng hoạt động, thao tác thực Khi hoạt động, đối tượng tương tác với đối tượng khác (lức làm cho đối tượng khác vào hoạt động) Hình thức tương lác nhài dối tượng chuyển giao thông điệp Thông điệp (m cssage) yêu cầu gửi lới đối tượng nhầm huy động ihao lác vốn c ó đối tượng Thông điệp phải mang tên đối lượng nhận, tên thao tác danh sách tham số thực cua thao tác Thoạt nhìn, thí thao tác chắng khác lời gọi lập trình iruyển Ihống Tuy nhiên cẩn thấy rõ khác biệt quan trọng: + Tliồng điệp dược gửi tới đối tượng, không gửi trực tiếp lới thao tác Đ iều có nghĩa thao lác phải thực dừ liệu bối cảnh cùa dối tượng Iihận + Chi có thao tác còng khai gọi tườn^ minh thơng điệp Tuy nhicn huy động thao tác riêng iư, c ó Ihao íác cơng khiii 2Ìữ vai trị đại Iv: lẽn ihao tác thông diệ|) tên đại lý đề thao íác gọi thao tác riêng tư sau + Các tham số thông diệp giá trị nguyên thuý (như số xâu ), đối tượng thuộc lớp đó, kể tín hiệu điểu khiển (tín hiệu loại đối tượng) + Thơng thường thóng điệp giống lời gọi chương trình Irong iập trình truyền ihống chỗ gửi thơng điệp 18 _ Chương I Các sỏ lập trinh hường đ ố i tượng đối tượng phát ngưng hoạt động để chờ irả lời: đối lượng nhận sau hoàn thành dịch vụ trả lại điều khiển cho đối tượng phát kèm với kết trả lại có đối tượng phát lại tiếp tục hoạt động Gọi chuyển giao thòng điệp dốnq Tuy nhiên m ôi trường nhiều CPU (chẳng hạn mạng), đối tượng phát đối tượng nhận trèn hai CPU khác nhau; thơng điệp phát mà không cần irá lời, đối lượng phát tiếp lục làm việc Như hai đối iưọng làrn việc 'thời Gọi cliuycn giao thông điệp không S ự T IẾ P N Ố I C Á C T H Ơ N G Đ IÊ P Sự tiếp nơi thông điệp tạo thành dãy gọi m ộl kịch Trong kịch dó có rẽ nhánh hay lặp, liếp nối câu lệnh lập trình truyền thống Tuy nhiên việc sử dụng rẽ nhánh hay lặp đầy có khác biệt a) Ph ép chọn {rẽ nhánh) Trong ngốn ngữ lập trình hướng đối tượng thường có câu lệnh điều kiện thơng thưcỉng (IF, CASE) Song câu lệnh điều kiện khơng thể dùng để kiểm chứng chất đối tượng để thực xử lý riêng biệt Bấy người ta lợi dụng thừa kế; sử dụng tên chung cho thao lác cỏ irong m ọi lớp cùa lớp \ ằ định nghĩa lại m ỗi lớp Như rnột phép chọn nhiều trường hợp thực biện chuyển 5110 thông điệp Chẳng hạn phải viết: N ế u người lao độ n g tự tính th u ế thu nhập theo thủ tục Khơng Nếu người lao động hư ỏ n g lương tính t h u ế thu nh ậ p theo thủ tục Khơng t í n h t h u ế th u nhập t h e o th ủ t ụ c Hết ta cần viết §1 Khn phép lập trinh hưởng đ ố i tượng 19 m o t N g u o i t i n h t h u e T N {); K hơng có kiểm chứng thực Thực lựa chọn xảy vào lúc đối tượng m otNguoi tạo lập N ó tạo lập theo ba lớp lớp Nguoi LaodongTudo, LaodongHuongluong, KhongAnluong mà thao lác tinhíhueTNO inỗi lớp thực theo cách khác nhau, định nghĩa lại b) Phép lạp (chu trình) N hiều la phải truy cập lúc hay tới nhiều đối iượng N ếu đối tượng tách rời m ổi đối tượng phải truy cập tên riêng nó, la phải đưa loạt thơng điệp sau: d t l t h o n g d i e p l(); d t t h o n g d i e p (ì ; d t n t h o n g d i e p n {); Tuy nhiên đối tượng có chất, ta gom chúng vào đối tượng gọi đổi tượng bội Lớp đối lượng bội gọi lớp s ố nhiéi( Lóp quản lý cấu trúc liệu danh sách, tập hợp, vectơ từ điển (các lóp cho cấu trúc liệu định nghĩa sẵn ngơn ngữ lập trình hướng đối tượng) Và chí cần gứi thõng điệp cho đối tượng bội việc lặp Ihực hên đối lirợng bội Chẳng hạn muốn đưa tất Cii ô tô khỏi Gara, thay viết: Vói ơtơ gara, làm otio [ s o j chorẻi () ; Hất làiri ihì ta xem motGara dối tượng bội, có chứa tâp hợp ỏ lô ch ỉ cần gửi m ộl ihông điệp cho nó: m o t G a r a c h o r a C a c O t o (); 'Hiao lác ChoraCacOto khắc huy động cấu trúc liệu để đưa ỏtơ 20 _ Chương I Các sỏ lập trinh hướng đối tượng B Ố I C Ả N H C Ủ A Đ Ố I T Ư Ợ N G M ỗi đối lượng có bơi cảnh (tầm nhìn) bao gồm đối tượng mà biết huy động Có hai cách huy động: + Đ ối tượng gửi thông điệp cho đối tượng bối cánh, vù chuyển điều khiển cho đối tượng + Đ ối tượng chuyển giao njộí đối tượng bối cảnii theo Ihani số, tăng cường đối tượng vào bối cảnh đối tượng nhán Có năm loại đối tượng thuộc vào bối cảnh đối tượng, kể sau a) Các đối tượng thuộc tính (th àn h ph ần) cửa lớp Đây đối tượng bén lớp Giá sư chúng dã đươc tạo lập, lúc với đối tượng, nhờ thao lác khới gán thực trước dùng thao tác khác tác dộng lêii đối tượng thuộc lính M ọi ihao tác lớp có Ihể truy cập trực tiếp đến m ộl thuộc lính lớp, đến m ọi ihuộc lính thừa kế, m iền Ihuộc tính thừa k ế (trong lớp tổ phụ) khai báo dạng bảo hộ (protected) Bấy ta nói đối tượng hợp Ihành chuyển điều khiển cho đối lượng ihành phần b) C ác đối tượng tru v ể n đến theo t h a m sò Nếu lập irình Iruyền thống, ihani số liệu bất động, Ihì lập trình hướng đối tượng, tham số lại đối tượng.' Trong thao tác, tham số hình thức xem biến cục Các biến khởi gán thao lác gọi m ội đối tượng gọi (vậy thao lác thực thi đối iượng tham sô' bảo đảm tổn tại) Tiếp đối tượng tham số nhận thơng điệp Như thế, thực chất việc truyền đối tượng theo ' Trong cuô”n sách xem h a i th u ậ t ngữ th a m sô tham đối đồng nghĩa, dịch cho th u ậ t ngữ tiếng Anh param eter Khi muôn gđi nhố không n h ấ t th iết sơ', chúng tơi dùng từ tham đối § Khn phép lậ p trình hướng địi tượng 21 tham số chuyển giao tập hợp thao lác mà đối tượng nhận phép sử dụng • c) C ác đối tượng cục Các đối lượng biến cục người lập trình đưa vào thân thao tác, nhằm làm nhiệm vụ trung gian đó, chấng hạn để tạm thời tiếp nhộn inột dối tượng trả lừ lời gọi, dể sử dụng ihao tác cửa Khi thao lác kết thúc, đối tượng cục ưước khơng truyền theo tham số, tự động bị huỷ bị d) C ác đối tượng tr ả lại từ thao tác M ộl thao tác thực xong trả đối tượng Đ ối tượng sử dụng biến cục đ) Chính đôi tượng đ a n g xét M ộỉ thao tác lớp huy động thao lác khác lớp đó, cho dù thao tác thừa kế hay khỏng Lời gọi không cần rõ đối tượng nhận (vì rồi) Gọi lời gọi cục Thơng thường thao tác sứ dụng cục khai báo riêng tư (private), đo khơng gọi từ bên đối tượng e) Các lớp xem n h đối tượng N goài nãm loại đối tượng mà m ội đối tượng huy động nói irên đối tượng cịn huy động thao tác lớp Các thao tác tác dụng lớp, khòng phải lèn đối tượrig cùa lớp khơng địi hỏi tạo lập đối tượng đế dùng chúng Trong lời gọi thao tác này, nơi đến lớp, thay đối tượng thướng lệ Chẳng hạn Nhithuc nhithuc = N h i thuc.taolap{a,b}; Thao tác taolapo thao tác lớp định nghĩa lớp Nhithuc N ó trả đối lượng lớp Nhithuc với hệ số cho tham số ihưc sư 22 _ Chương I Càc sỏ lập trinh hướng đối tượng §2 MÁY ĐỐI TƯỢNG K H Á I N IỆ M V Ể M Á Y TR Ừ U TƯ ỢNG Môl chương trình viết trẽn ngơn ngũ máv thực hiên trực tiếp bới máy tính thật Trái lại chưong irìcih \ ’ièì irèn inội ngơn ngữ cấp cao kJiỏng thể thực máy tính thật, mà phải qua xử lý phần iTíểiii (dịch hay diễn giải) Tuy Iihiiỉn, để thấy fõ cư chc hoạt dộng rnột ngơn ngữ lập tiình cấp cao, người ta hình dưng máy tính aià địnli thực hièn tiirc tiếp chưcmg trình viết irên ngơn ngữ đó- Gọi máy trừu tượng Chíiih diẻn giái (Lntcipreter) mơ hoạt dộng 3Ùa tĩiáy irừĩi tượng đế thực chưcdig trìiìh trẽn ngơn ngữ cáp cao (mà khơng dịch chương trinh dích) Một ngơn ngữ lập irình hướng đối lượng tương ứng với máy Iiừu tưcmg, gọi máy đổí m m g dây la c ố gắng làm rõ, chi tiết ch ế hoat động máy đối lượng, nhầm qua giải Ihích ch ế hoạt dộng củu chương trình hướng đối lượng, B ộ N H Ớ C Ủ A M Á Y Đ ố l TƯỢNG Bộ nhớ máy đối tượng dãy từ m áy, thường tách thành ba phần: • Một phần gọi đống ('tổ chức bảng bãm) dùng để chứa đối tượng, chúng xuất nhớ theo tạo lập chúng • M ột phần khác dùng để chứa lớp, m ột dạng thực • Phần lại dùng làm vùng làm việc cho thao tác Chỗ nhớ cho biến cục tham số thao lác cấp phát động (cấp phát thao tác huy động, thu hổi thao tác kết thúc hoạt động) Mỗi lừ nhớ gồm có hai phẩn Phần đẩu dùng để chì nội dung từ biểu diễn cho giá trị hay địa Phần lại nội dung cùa từ M ột giá trị biểu diễn nội dung có ih ể số nguyên, số thực, ký tự hay giá trị Boolean ... HƯỜNC ĐOI TƯỢNC VỚI UML 2. 0 VÀ C + + lã số: IL-OI Đ H 20 08 10 0 0 cuốn, khố 16 X 24 cm lại Xướng in Tạp chí tin học & đời sống ố xuất bàn: 13 6 - 20 07/C X B /03 - 13 /DHQGHN, ngày 13 /2/ 200 7 •uyếl định... vào chi tiết) sờ lập trình hướng đối iượng, hai phương diện: Khn phép lập trình hướng đối tượng, lức dặc thù việc vận dụng lĩiộl ngơn ngữ lập trình hướng đối tượng M áy đối tượng, tức nguyên... tham đối § Khn phép lậ p trình hướng địi tượng 21 tham số chuyển giao tập hợp thao lác mà đối tượng nhận phép sử dụng • c) C ác đối tượng cục Các đối lượng biến cục người lập trình đưa vào thân