Đề tài cấu trúc dữ liệu với c++

88 336 0
Đề tài cấu trúc dữ liệu với c++

Đ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

Yeâu caàu:  Xaây döïng moät öùng duïng tin hoïc ñeå phuïc vuï cho coâng ty vaø cho caùc ñaïi lyù, giöõa ñaïi lyù vaø coâng ty ñöôïc noái qua modem ñeå chuyeån baùo caùo, öùng duïng phaûi chuù yù ñeán yeáu toá nhieàu soá lieäu caàn ñöôïc löu tröõ.  Baùo caùo trình baøy: Moâ hình quan nieäm vaø xöû lyù, thuyeát minh caáu truùc vaät lyù ñaõ caøi ñaët, moâ taû thieát keá giao dieän, caøi ñaët theo caáu truùc ClientServer. Thöïc hieän: ÖÙng duïng tin hoïc goàm 2 phaân heä: coâng ty vaø ñaïi lyù  Beân coâng ty löu tröõ moät cô sôû döõ lieäu goàm taát caû thoâng tin caàn thieát.  Beân ñaïi lyù löu tröõ cô sôû döõ lieäu goàm: Caùc chuûng loaïi haøng, soá löôïng haøng nhaän, thoâng tin baùn haøng, thoâng tin veà caùc ñôït khuyeán maõi. Nhöõng thoâng tin naøo thuoäc Coâng ty thì seõ do Coâng ty chuyeån ñeán Ñaïi lyù, Ñaïi lyù chæ söû duïng, khoâng ñöôïc pheùp söûa ñoåi. Thöïc hieän nghieäp vuï: haøng tuaàn laäp phieáu yeâu caàu caùc maët haøng cho coâng ty vaø chuyeån döõ lieäu naøy cho coâng ty, cuoái tuaàn laäp baùo caùo soá löôïng haøng ñaõ baùn trong tuaàn trong moãi chuûng loaïi, cuoái thaùng thanh toaùn tieàn cho coâng ty. II. MOÂ HÌNH QUAN NIEÄM DÖÕ LIEÄU 1. PHAÂN TÍCH BAØI TOAÙN Phaân tích caùc söï kieän coù trong ñeà baøi vaø moät soá giaû thieát ñöôïc ñöa theâm vaøo döôùi ñaây:  Ñaïi lyù: Chöùa ñöïng thoâng tin veà caùc ñaïi lyù cuûa coâng ty.  Phieáu yeâu caàu: Giuùp coâng ty xaùc ñònh löôïng haøng caàn cung öùng cho ñaïi lyù. Moái quan heä Phieáu yeâu caàu – Maët haøng theå hieän thoâng tin caùc maët haøng cuøng vôùi soá löôïng yeâu caàu (Chi tieát yeâu caàu). Phieáu yeâu caàu phaùt sinh haøng tuaàn töø ñaïi lyù, suy ra coù moät moái quan heä giöõa Phieáu yeâu caàu vaø yeáu toá thôøi gian ñöôïc ghi nhaän (tuaàn).  Maët haøng: Vôùi caùc thuoäc tính: maõ haøng, teân haøng, quy caùch, ñôn giaù. Ñôn giaù naøy do coâng ty aán ñònh tröôùc cho ñaïi lyù, ñôn giaù naøy coù theå thay ñoåi neáu maët haøng trong thôøi kyø khuyeán maõi, hoaëc bieán ñoäng theo thò tröôøng taïi töøng thôøi ñieåm. Giaû thieát trong baøi toaùn naøy ñôn giaù naøy oån ñònh trong moät thôøi gian daøi, coøn thöïc teá thì ñôn giaù naøy coù theå seõ gaén cuøng vôùi moät giaù trò thôøi gian xaùc ñònh.  Moät ñaïi lyù thuoäc moät ñòa baøn xaùc ñònh, vaø ñôït khuyeán maõi thì aùp duïng ñoàng loaït cho caùc ñaïi lyù treân cuøng moät ñòa baøn. Ta coù moái keát hôïp Ñaïi lyù – Ñòa baøn, vaø neáu bieát ñaïi lyù thuoäc ñòa baøn thì maëc nhieân bieát ñöôïc ñôït khuyeán maõi treân ñòa baøn ñoù laø coù hieäu löïc aùp duïng cho ñaïi lyù.  Moái keát hôïp giöõa Ñôït khuyeán maõi – Maët haøng dieãn taû moät danh saùch caùc maët haøng, giaù khuyeán maõi cuûa maët haøng ñoù trong moät ñôït khuyeán maõi.  Khuyeán maõi: Hình thöùc khuyeán maõi thoâng thöôøng laø giaûm giaù, giaù naøy ta goïi laø ÑôngiaùKM. Ví duï neáu giaûm cho 1000 ñôn vò haøng ñaàu tieân keå töø ngaøy A thì 1000 goïi laø SoLuongKM. Hình thöùc khuyeán maõi mua haøng taëng haøng (5 taëng 1, …), giaû söû coâng ty gôûi ñaïi lyù 500 chai nöôùc xaû thôm ñeå taëng khaùch haøng thì 500 chai naøy coâng ty seõ khoâng tính vaøo soá löôïng haøng xuaát (cho moät phieáu yeâu caàu baát kyø) cho ñaïi lyù.  Thoâng tin baùn haøng trong tuaàn: Soá löôïng moãi loaïi haøng baùn taïi ñaïi lyù laø con soá toång keát cuoái cuøng, ôû ñaây ta khoâng chuù yù ñeán chi tieát töøng moùn haøng ñaõ ñöôïc baùn cuï theå cho ai, baùn coù hoaù ñôn khoâng hay khoâng.  Thöù hai haøng tuaàn caùc ñaïi lyù phaûi baùo caùo veà coâng ty soá löôïng ñaõ baùn ñöôïc trong tuaàn qua trong moãi chuûng loaïi, töø ñoù coâng ty suy ra ñöôïc soá toàn taïi ñaïi lyù. Thoâng tin baùn haøng phuï thuoäc moãi ñaïi lyù cuï theå, ñoàng thôøi phuï thuoäc vaøo töøng tuaàn, moái keát hôïp Tuaàn – Maët haøng – Ñaïi lyù theå hieän thoâng tin baùn haøng trong tuaàn cuûa ñaïi lyù.  Haøng tuaàn ñaïi lyù göûi phieáu yeâu caàu trong ñoù ghi roõ loaïi haøng, soá löôïng cho coâng ty, ta coù moái keát hôïp Tuaàn Phieáu yeâu caàu.  Coâng ty yeâu caàu caùc ñaïi lyù thanh toaùn tieàn moät laàn vaøo cuoái moãi thaùng, Ñoù laø soá tieàn töông öùng soá haøng thöïc baùn trong thaùng (4 tuaàn) coäng laïi. Nhö vaäy coù moái keát hôïp giöõa ñaïi lyù vaø thôøi gian (Thaùng) veà xaùc laäp thôøi haïn, soá tieàn thanh toaùn. Chuùng ta ñeà nghò moâ hình quan nieäm cho Heä thoáng thoâng tin (HTTT) Quaûn lyù phaân phoái haøng hoùa cho caùc ñaïi lyù cuûa moät doanh nghieäp nhö sau: 2. MOÂ HÌNH QUAN NIEÄM DÖÕ LIEÄU (ERD) Heä thoáng thoâng tin: QUAÛN LYÙ PHAÂN PHOÁI HAØNG HOÙA CHO CAÙC ÑAÏI LYÙ MOÂ HÌNH QUAN NIEÄM DÖÕ LIEÄU Ngaøy laäp: 01012003

Cấu trúc dữ liệu mẫu với C++ Lời cảm ơn Trớc tiên, tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo h- ớng dẫn TS Đoàn Văn Ban, phòng CSDL&LT Viện Công Nghệ Thông Tin thuộc trung tâm Khoa Học Tự Nhiên và Công Nghệ Quốc Gia đã tận tình giúp đỡ tôi hoàn thành bài luận văn này. Tôi xin chân thành cảm ơn các thầy, cô giáo khoa Công Nghệ Thông Tin trờng ĐHDL Đông Đô đã giảng dạy và giúp đỡ em trong quá trình học tập ở trờng. Cuối cùng, xin chân thành cảm ơn những ngời thân trong gia đình và bạn bè đã giúp đỡ, động viên trong quá trình học tập. Hà nội tháng 6 năm 2000 Mục lục Lời cảm ơn Phần A Chơng I. Ngôn ngữ C++ và lập trình hớng đối tợng I.1. Lập trình hớng đối tợng là gì? 4 I.2. Các u điểm của lập trình hớng đối tợng 5 I.3. Đối tợng 6 Cấu trúc dữ liệu mẫu với C++ I.4. Các lớp đối tợng 7 I.5. Trừu tợng hoá dữ liệu và bao gói thông tin 8 I.6. Thừa kế 8 I.7. Tơng ứng bội 9 I.8. Truyền thông báo 10 I.9. Những ứng dụng của lập trình hớng đối tợng 11 Chơng II. Thiết kế và cài đặt các lớp đối tợng II.1. Định nghĩa lớp 13 II.1.1. Khai báo lớp tên đối tợng 13 II.1.2. Tạo lập các lớp đối tợng 14 II.1.3. Các thành phần dữ liệu 15 II.2. Tính tơng ứng bội 16 II.2.1. Hàm tải bội 17 II.2.2. Chuyển đổi kiểu 21 II.3. Kế thừa và sự mở rộng các lớp 22 II.3.1. Kế thừa đơn 23 II.3.2. Kế thừa đa mức 27 II.3.3. Kế thừa phân cấp 28 II.3.4. Kế thừa bội 28 II.3.5. Kế thừa kép 29 II.3.6. Các lớp cơ sở ảo 29 II.3.7. Cấu tử trong các lớp dẫn xuất 30 II.3.8. Hàm ảo 32 Chơng III. Hàm và lớp mẫu III.1. Hàm mẫu 34 III.1.1. Định nghĩa 34 III.1.2. Hàm mẫu có nhiều tham số hình thức 35 III.1.3. Hàm mẫu có nhiều tham số khác nhau 36 III.2. Lớp mẫu 38 III.2.1 Định nghĩa 38 Cấu trúc dữ liệu mẫu với C++ III.2.2. Lớp mẫu có tham số 39 III.3. Kết luận 39 Chơng IV Cấu trúc dữ liệu và các lớp mẫu IV. Cấu trúc dữ liệu 40 IV.1.1. Lớp chứa 41 IV.1.2. Lớp chứa thần ảo 41 IV.2.1. Ngăn xếp 42 IV.2.2. Lu trữ ngăn xếp bằng mảng 42 IV.2.3. Xây dựng lớp ngăn xếp mẫu 43 IV.3.1. Hàm đợi 44 IV.3.2. Xây dựng lớp hàm đợi mẫu 45 IV.4. Hàng quay tròn 47 IV.5. Danh sách liên kết 48 IV.6 Danh sách liên kết đơn 48 IV.7 Danh sách liên kết đôi 56 IV.8. Cây nhị phân 64 IV.9. Nhận xét 74 Phần B I. Chơng trình quản lý sinh viên 76 II. Chơng trình thống kê từ tiếng Việt 85 Kết luận 92 Tài liệu tham khảo 93 Cấu trúc dữ liệu mẫu với C++ Chơng I Ngôn ngữ C ++ và lập trình hớng đối tợng I.1. Lập trình hớng đối tợng là gì? Lập trình hớng đối tợng dựa trên nền tảng là các đối tợng. Đối tợng đợc xây dựng trên cơ sở gắn cấu trúc dữ liệu với các phép toán sẽ thể đợc đúng cách mà chúng ta suy nghĩ, bao quát về thế giới thực. [3] Lập trình hớng đối tợng cho phép chúng ta kết hợp những tri thức bao quát về các quá trình với những khái niệm trừu tợng đợc sử dụng trong máy tính . Lập trình hớng đối tợng là phơng pháp lập trình lấy đối tợng làm nền tảng để xây dựng thuật giải, xây dựng chơng trình, là cách tiếp cận để phân chia chơng trình thành các đơn thể (modul) bằng cách tạo ra các vùng bộ nhớ cho cả dữ liệu lẫn hàm và chúng sẽ đợc sử dụng nh các mẫu để tạo ra bản sao từng đơn thể khi cần thiết. Đối tợng ở đây đợc xem nh là vùng phân chia chia bộ nhớ trong máy tính để lu trữ dữ liệu và tập các hàm tác động trên dữ liệu gắn với chúng. Khái niệm Hớng đối tợng đợc xây dựng trên nền tảng của khái niệm Lập trình có cấu trúc và Sự trừu tợng hoá dữ liệu sự thay đổi căn Cấu trúc dữ liệu mẫu với C++ bản là ở chỗ một chơng trình hớng đối tợng đợc thiết kế xoay quanh các dữ liệu mà ta làm việc trên nó, hơn là theo bản thân chức năng của chơng trình. Lập trình hớng đối tợng đặt trọng tâm vào đối tợng, yếu tố quan trọng trong quá trình phát triển chơng trình và nó không cho phép dữ liệu chuyển động tự do trong hệ thống. Dữ liệu đợc gắn chặt với từng hàm thành các vùng riêng mà các hàm đó tác động lên và nó đợc bảo vệ cấm các hàm ngoại lai truy nhập tuỳ tiện. Tuy nhiên các đối tợng có thể trao đổi thông tin với nhau thông qua việc trao đổi thông báo.[5] Tóm lại, so sánh lập trình cấu trúc lấy chơng trình con làm nền tảng: Trong lập trình hớng đối tợng chúng ta có : Lập trình hớng đối tợng có những đặc tính chủ yếu sau: Tập trung vào dữ liệu thay cho các hàm. Chơng trình đợc chia thành tập các lớp đối tợng. Cấu trúc dữ liệu đợc thiết kế sao cho đặc tả các đối tợng. Các hàm đợc xác định trên các vùng dữ kiệu của đối tợng đợc gắn với nhau trên cấu trúc của dữ liệu đó. Dữ liệu đợc bao bọc, che dấu và không cho phép các hàm ngoại lai truy nhập tự do. Các đối tợng trao đổi thông tin với nhau qua các hàm. Dữ liệu và các hàm mới có thể dễ dàng bổ xung vào đối tợng nào đó khi cần thiết. Chơng trình đợc thiết kế theo cách tiếp cận bottom-up. I.2. Các u điểm của lập trình hớng đối tợng Chơng trình = Cấu trúc dữ liệu + Giải Thuật Đối tợng =Dữ Liệu + Hành vi của dữ liệu Cấu trúc dữ liệu mẫu với C++ Thông qua nguyên lý thừa kế, chúng ta có thể loại bỏ đợc những đoạn chơng trình lặp lại, d thừa trong quá trình mô tả các lớp và khả năng sử dụng các lớp đã đợc xây dựng. Chơng trình đợc xây dựng từ các đơn thể (module) trao đổi với nhau nên việc thiết kế và lập trình sẽ đợc thực hiện theo quy trình nhất định chứ không phải dựa vào kinh nghiệm và kỹ thuật nh trớc. Điều này đảm bảo rút ngắn đợc thời gian xây dựng hệ thống và tăng năng xuất lao động. Nguyên lý che dấu thông tin giúp ngời lập trình tạo ra đợc những ch- ơng trình an toàn không bị thay đổi bởi những chơng trình khác. Có thể xây dựng đợc các ánh xạ đối tợng của bài toán vào đối tợng của chơng trình. Cách tiếp cận thiết kế đặt trọng tâm vào dữ liệu giúp ta xây dựng đợc mô hình chi tiết và gần với dạng cài đặt hơn. Những hệ thống hớng đối tợng dễ mở rộng, nâng cấp thành những hệ thống lớn hơn. Kỹ thuật truyền thông báo trong việc tao trao đổi thông tin giữa các đối tợng giúp cho việc mô tả giao diện với các hệ thống bên ngoài đơn giản hơn. Có thể quản lý độ phức tạp của những sản phẩm phần mềm. I.3. Đối tợng Đối tợng là thực thể đợc xác định trong thời hạn hệ thống hớng đối t- ợng hoạt động. Nh vậy đối tợng là con ngời, sự vật, thiết bị, bảng dữ liệu cần xử lý trong chơng trình. Mỗi đối tợng gồm có: tập các thuộc tính (attribute) và tập các hàm (function) để xử lý các thuộc tính đó.[5] Một đối tợng có thể đợc minh hoạ nh sau : Đối T ợng Thuộc Tính Hàm Cấu trúc dữ liệu mẫu với C++ Hình 1. Cấu trúc tổng quát của một đối tợng. Chẳng hạn chúng ta xét đối tợng hình chữ nhật bao gồm các thuộc tính (x1,y1) toạ độ góc trên bên trái, d, r là chiều dài chiều rộng của hình chữ nhật. Các hàm: nhập số liệu cho hình chữ nhật, hàm tính diện tích, chu vi và hàm hiển thị. Nh vậy đối tợng hình chữ nhật có thể đợc mô tả nh sau: I.4. Các lớp đối tợng Một tập dữ liệu và các hàm của một tập đối tợng có thể đợc xem nh một kiểu dữ liệu đợc định nghĩa bởi ngời sử dụng. Kiểu dữ liệu ở đây đợc gọi là lớp (class), đó là một tập các thuộc tính và các hàm mô tả thế giới thực, một đối tợng là thể hiện của một lớp. Lớp là khái niệm trung tâm của lập trình hớng đối tợng, nó là sự mở rộng cấu trúc (struct) của C và bản ghi (record) của Pascal. Trong lập trình hớng đối tợng, lớp hầu nh đồng nhất với kiểu dữ liệu trừu tợng. Lớp là khái niệm tĩnh, có thể nhận biết ngay từ văn bản chơng trình. Ngợc lại đối tợng là khái niệm động, nó đợc xác định trong bộ nhớ của máy tính nơi đối tợng chiếm một vùng của bộ nhớ lúc thực hiện chơng trình. Đối tợng đợc tạo ra để xử lý thông tin, thực hiện nhiệm vụ đợc thiết kế và sau đó bị huỷ bỏ khi đối tợng đó hết vai trò. Khi một lớp đợc định nghĩa, thì nó có thể tạo ra số lợng các đối tợng tuỳ ý của lớp đó. Nh vậy lớp là tập hợp các đối tợng cùng kiểu. Sự khác biệt giữa lớp và đối tợng cũng giống nh sự khác biệt giữa tập hợp các phần tử và một phần tử trong tập hợp.[5] Đối t ợng: hình chữ nhật Thuộc tính: x1, y1, d, r Ph ơng thức: Nhập số liệu Diện tích Chu vi Hiển thị Hình 2. Mô tả đối t ợng hình chữ nhật. Cấu trúc dữ liệu mẫu với C++ I.5. Trừu tợng hoá dữ liệu và bao gói thông tin Việc đóng gói dữ liệu và các hàm vào một đơn vị cấu trúc đợc xem nh một nguyên tắc (che dấu) thông tin, dữ đợc tổ chức sao cho thế giới bên ngoài không truy nhập đợc vào mà chỉ cho phép các hàm trong cùng lớp hoặc trong những lớp có quan hệ thừa với nhau đợc quền truy nhập. Chính các hàm thành phần của lớp sẽ đóng vai trò nh là giao diện giữa dữ liệu của đối tợng và phần còn lại của chơng trình. Nguyên tắc bao gói dữ liệu để ngăn cấm sự truy nhập trực tiếp trong lập trình đợc gọi là che dấu thông tin. Trừu tợng hoá là cách biểu diễn những đặc tính chính và bỏ qua những chi tiết vụn vặt hoặc những giải thích. Để xây dựng các lớp chúng ta phải sử dụng khái niệm trừu tợng hoá. Trong lập trình hớng đối tợng lớp đ- ợc sử dụng nh dữ liệu trừu tợng. Ví dụ nh chúng ta có thể định nghĩa một lớp là danh sách các thuộc tính trừu tợng nh là kích thớc, hình dáng mầu và các hàm xác định trên các thuộc tính này để mô tả các đối tợng trong không gian hình học. I.6. Thừa Kế Thừa kế là quá trình trong đó các đối tợng của lớp này đợc quyền sử dụng một số tính chất của các đối tợng của các lớp khác. Nguyên lý thừa kế hỗ trợ cho việc tạo ra cấu trúc phân cấp các lớp. Nó đợc thực hiện dựa trên nguyên lý tổng quát hoá hoặc chi tiết hoá các đặc tính của các đối tợng trong các lớp. Trong lập trình hớng đối tợng, khái niệm thừa kế kéo theo ý tởng sử dụng lại. Nghĩa là một lớp đã đợc xây dựng (lớp cha hay lớp cơ sở) của chúng có thể bổ sung thêm các tính chất mới để tạo các lớp mới (lớp con hay lớp dẫn xuất) mô tả chi tiết hơn về một nhóm đối tợng cụ thể (theo nguyên lý chi tiết hoá) hoặc từ một nhóm lớp có số đặc tính giống nhau gộp chung các đặc tính đó lại để tạo ra một lớp mới, đợc gọi là lớp trừu tợng (nguyên lý tổng quát hoá). Cấu trúc dữ liệu mẫu với C++ Khái niệm kế thừa đợc hiểu nh cơ chế sao chép ảo không đơn điệu. Trong thực tế, mọi việc xảy ra tựa nh những lớp cơ sở đều đợc sao vào trong lớp dẫn xuất mặc dù điều này không đợc cài đặt tờng minh (gọi là sao chép ảo) và việc sao chép chỉ đợc xác định trong lớp cơ sở (sao chép không đơn điệu). Một lớp có thể kế thừa các tính chất của một hay nhiều lớp cơ sở ở các mức khác nhau, do đó có năm dạng kế thừa đợc sử dụng trong lập trình hớng đối tợng là: kế thừa đơn, kế thừa bội, kế thừa phân cấp, kế thừa đa mức và kế thừa phức hợp (chơng sau sẽ nói rõ về các dạng kế thừa này).[3] I.7. Tơng ứng bội Tơng ứng bội là một khái niệm có khả năng nh các phép toán có thể đợc thực hiện ở nhiều dạng khác nhau. Hành vi của các phép toán tơng ứng bội phụ thuộc vào kiểu dữ liệu mà nó sử dụng để xử lý. Tơng ứng bội đóng vai trò quan trọng trong việc tạo ra các đối tợng có cấu trúc bên trong khác nhau nhng có khả năng dùng chung một giao diện bên ngoài (nh tên gọi). Điều này có nghĩa là một lớp các phép toán đợc định nghĩa theo những thuật toán khác nhau, nhng có khả năng sử dụng theo cùng một cách giống nhau.Tơng ứng bội là sự mở rộng khái niệm sử dụng lại trong nguyên lý kế thừa. Liên kết động là dạng liên kết các hàm, thủ tục khi chơng trình thực hiện các lời gọi tới các hàm, thủ tục đó. Nh vậy, trong liên kết động nội dung của đoạn chơng trình ứng với thủ tục, hàm cho đến khi thực hiện các lời gọi tới các thủ tục và hàm đó. Nó cho phép chúng ta can thiệp vào sự hoạt động của các thực thể mà không cần biên dịch lại toàn bộ chơng trình, chúng ta có thể truyền và nhận thông tin từ các đối tợng mới này giống nh các đối tợng đã có. Liên kết động liên quan chặt chẽ tới tơng ứng bội và kế thừa, đôi khi liên kết động còn gọi là liên kết trễ hay liên kết vào lúc chạy (vì các phơng thức chỉ đợc gọi vào lúc chơng trình biên dịch chơng trình biên dịch ra ngôn ngữ máy).[3] Chẳng hạn nh hàm VE() trong hình 3, theo nguyên lý kế thừa thì mọi đối tợng đều có thể sử dụng hàm này để vẽ theo yêu cầu. Tuy nhiên, thuật toán thực hiện hàm VE() là duy nhất đối với từng đối tợng Hình_TRòn, Đa_Giác, Đơng_th và vì vậy hàm VE() sẽ đợc định nghĩa lại khi các đối tợng tơng ứng đợc xác định. Cấu trúc dữ liệu mẫu với C++ I.8. Truyền thông báo Các đối tợng gửi và nhận thông tin với nhau giống nh con ngời trao đổi thông tin với nhau. Chính nguyên lý trao đổi thông tin với nhau bằng cách truyền thông báo cho phép chúng ta dễ dàng xây dựng đợc hệ thống mô phỏng gần những hệ thống trong thế giới thực. Truyền thông báo cho một đối tợng tức là báo cho nó phải thực hiện một việc gì đó. Cách ứng xử cả đối tợng sẽ đợc mô tả ở trong lớp thông qua các hàm (hay còn đợc gọi là lớp dịch vụ). Thông báo truyền đi phải chỉ ra đợc hàm cần thực hiện trong đối tợng nhận thông báo. Hơn thế nữa thông báo truyền đi phải xác định tên đối tợng, tên hàm và thông tin truyền đi. Ví dụ: Lớp CONG_NHAN có thể là đối tợng cụ thể đợc xác định bởi HO_TEN nhận đợc thông báo cần TINH_LUONG đã đợc xác định trong lớp CONG_NHAN. Thông báo đó sẽ đợc xử lý nh sau: Mỗi đối tợng chỉ tồn tại trong một thời gian nhất định. Đối tợng tạo ra khi nó đợc khai báo và sẽ bị huỷ bỏ khi chơng trình ra khỏi miền xác định của đối tợng đó. Sự trao đổi thông tin chỉ có thể thực hiện trong thời gian đối tợng tồn tại. đối t ợng thông báo thông tin CONG_NHAN.TINH_LUONG(HO_TEN) Hình Học VE() ĐA_GIAC VE(ĐA_GIAC) ĐƯƠNG_TH VE(ĐƯƠNG_TH) HINH_TRON N VE(TRON) Hình 3. T ơng ứng bội của hàm VE(). [...]... công nghệ phần mềm C++ là một công cụ lập trình hớng đối tợng C++ là công cụ lập trình hớng đối tợng Ban đầu đợc gọi là "C with class" (C với các lớp) sau đó C++ đợc phát triển vào những năm đầu thập kỉ 80 ở AT&T Bell Laboratories Nó đợc phát triển trên nền ngôn ngữ C Cấu trúc dữ liệu mẫu với C++ C++ là một tập mở rộng của C, vì thế hầu hết các tính chất của C vẫn đợc sử dụng trong C++ Điều này có nghĩa... chơng trình của C++ Tuy nhiên cũng có một số khác biệt làm cho chơng trình C không thực đợc dới chơng trình C++ Ba khái niệm quan trọng của C++ đợc bổ xung vào C là: lớp, hàm tải bội và toán tử tải bội Những khái niệm cho phép chúng ta tạo ra những kiểu dữ liệu trừu tợng, kế thừa nhiều tính chất của những kiểu dữ liệu đã xây dựng và hỗ trợ cho việc sử dụng cơ chế tơng ứng bội cho C++ trở thành ngôn... phân cấp các đối tợng giúp chúng ta có thể xây dựng những th viện các đối tợng để cho nhiều ngời lập sử dụng đợc Do C++ là ngôn ngữ lập trình hớng đối tợng nên tất nhiên nó sẽ có những gì mà "hớng đối tợng" có Cấu trúc dữ liệu mẫu với C++ ChƯơng ii Thiết kế và cài đặt các lớp đối tợng trong c++ II.1 Định nghĩa lớp II.1.1 Khai báo lớp tên đối tợng Khai báo lớp là mô tả kiểu và nhiều miền xác định các thành... ngôn ngữ hớng đối tợng thực sự Các đặc tính của C++ cho phép ngời lập trình dễ dàng xây dựng đợc các chơng trình lớn, có tính mở, dễ thích nghi, công việc bảo trì ít tốn kém hơn C ++ là công cụ thích ứng cho vệc xây dựng các chơng trình lớn nh các hệ soạn thảo chơng, trình dịch, các hệ cơ sở dữ liệu, những hệ thống truyền tin và nhiều ứng dụng phức tạp khác C++ hỗ trợ cho việc tạo ra cấu trúc phân cấp... các đối tợng Trong C++, một đối tợng là một phần tử dữ liệu đợc khai báo kiểu là một class Trong ví dụ trên, khai báo lớp Point mới chỉ xác định các thành phần của lớp Point chứ cha tạo ra một đối tợng cụ thể Lớp là một kiểu đối tợng trừu tợng, nên sau khi định nghĩa lớp chúng ta có thể khai báo các biến giống nh đối với kiểu đợc định nghĩa bởi ngời sử dụng Cấu trúc dữ liệu mẫu với C++ Khi các đối tợng... Tơng ứng bội trong thời gian dịch Hàm tải bội Toán tử tải bội Tơng ứng bội trong thời gian thực hiện Hàm ảo Cấu trúc dữ liệu mẫu với C++ II.2.1 Hàm tải bội Ngôn ngữ C không cho phép ngời lập trình sử dụng cùng một tên cho nhiều hàm trong một chơng trình Tuy vậy trong C++, việc định nghĩa này là hoàn toàn hợp lệ, các hàm này khác nhau về số lợng hoặc kiểu của các đối số cho hàm Các hàm nh vậy đợc gọi... các đối tợng Cấu trúc dữ liệu mẫu với C++ II.3 Kế thừa và sự mở rộng các lớp Khả năng sử dụng lại là đặc tính quan trọng của lập trình hớng đối tợng Việc sử dụng lại những đơn thể chơng trình, những lớp đã đợc phát triển tốt, đã đợc kiểm nghiệm không những tiếp kiệm đợc tiền của, thời gian mà còn làm tăng thêm những khả năng tơng thích, độ tin cậy của hệ thống C++ hỗ trợ rất mạnh cho những khái niệm... thông tin mà chúng ta cần thực hiện Để giải quyết vấn đề trên, C++ đa thêm thể khai báo protected (đợc bảo vệ) cho những thành phần của lớp cơ sở cần đợc kế thừa chỉ trong những lớp dẫn xuất trực tiếp Những thành phần đợc khai báo protected có thể đợc truy nhập bởi những thành phần trong cùng lớp và trong những lớp Cấu trúc dữ liệu mẫu với C++ dẫn xuất trực tiếp từ lớp cơ sở Nh vậy, để có những thành... và cũng truy nhập trực tiếp đợc đến các thành phần của lớp A mà không cần phải thông qua lớp B II.3.3 Kế thừa phân cấp Cấu trúc dữ liệu mẫu với C++ Kế thừa là sự phân cấp các lớp, các lớp kế thừa nhau theo một cấu trúc phân cấp đợc gọi là kế thừa phân cấp C++ hỗ trợ cho việc sử dụng cơ chế kế thừa để phân cấp các lớp mô tả những cấu trúc đợc thiết kế theo cách tiếp cận phân cấp Có thể mô tả tổng quá... đúp ở lớp con, lần thứ nhất là kế thừa từ cha, lần thứ hai kế thừa từ mẹ Nghĩa là lớp con sẽ có hai tập các thành phần kế thừa giống nhau Do vậy chúng ta phải loại bỏ d thừa Trong C++ cho phép loại Cấu trúc dữ liệu mẫu với C++ bỏ những thành phần d thừa này bằng cách khai báo lớp cơ sở ảo (virtual base class) Lúc đó chúng ta khai báo nh sau: class ONG_BA { }; class CHA: virtual ONG_BA // hoặc public . A Chơng I. Ngôn ngữ C++ và lập trình hớng đối tợng I.1. Lập trình hớng đối tợng là gì? 4 I.2. Các u điểm của lập trình hớng đối tợng 5 I.3. Đối tợng 6 Cấu trúc dữ liệu mẫu với C++ I.4. Các lớp đối. Cấu trúc dữ liệu mẫu với C++ Lời cảm ơn Trớc tiên, tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo h- ớng dẫn TS Đoàn Văn. có nhiều tham số khác nhau 36 III.2. Lớp mẫu 38 III.2.1 Định nghĩa 38 Cấu trúc dữ liệu mẫu với C++ III.2.2. Lớp mẫu có tham số 39 III.3. Kết luận 39 Chơng IV Cấu trúc dữ liệu và các lớp mẫu IV.

Ngày đăng: 05/10/2014, 05:16

Từ khóa liên quan

Mục lục

  • Hà nội tháng 6 năm 2000

    • Mục lục

    • Lời cảm ơn

    • Phần A

    • Chương I. Ngôn ngữ C++ và lập trình hướng đối tượng

      • Chương III. Hàm và lớp mẫu

      • Phần B

      • II.1.2. Tạo lập các đối tượng

      • II.1.3. Các thành phần dữ liệu

      • II.3. Kế thừa và sự mở rộng các lớp

      • II.3.1. Kế thừa đơn

        • II.3.7 Cấu tử trong các lớp dẫn xuất

        • II.3.8. Hàm ảo

          • Cách định nghĩa hàm ảo

          • Quy tắc gọi phương thức ảo

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan