LËp Tr×nh Híng §èi Tîng(oop) CÊu tróc d÷ liÖu mÉu víi C++ more information and additional documents connect with me here http //facebook com/ngphutien/ file đồ án kèm theo Cau truc du lieu voi C++ r[.]
Cấu trúc liệu mẫu với C++ Lời cảm ơn Trước tiên, 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< Viện Công Nghệ Thông Tin thuộc trung tâm Khoa Học Tự Nhiên Công Nghệ Quốc Gia đà tận tình giúp đỡ hoàn thành luận văn Tôi xin chân thành cảm ơn thầy, cô giáo khoa Công Nghệ Thông Tin trường ĐHDL Đông Đô đà giảng dạy giúp đỡ em trình học tập trường Cuối cùng, xin chân thành cảm ơn người thân gia đình bạn bè đà giúp đỡ, động viên trình học tập Hà nội tháng năm 2000 more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ Mơc lơc Lêi cảm ơn Phần A Chương I Ngôn ngữ C++ lập trình hướng đối tượng I.1 Lập trình hướng đối tượng gì? I.2 Các ưu điểm lập trình hướng đối tượng I.3 Đối tượng .6 I.4 Các lớp đối tượng I.5 Trõu tượng hoá liệu bao gói thông tin I.6 Thõa kÕ I.7 T¬ng øng béi .9 I.8 Truyền thông báo 10 I.9 Những ứng dụng lập trình hướng đối tượng 11 Chương II Thiết kế cài đặt 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 lớp đối tượng 14 II.1.3 Các thành phần 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 mở rộng 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 sở ảo 29 more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ II.3.7 CÊu tư c¸c líp dÉn xt 30 II.3.8 Hàm ảo 32 Chương III Hàm 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 36 III.2 Líp mÉu 38 III.2.1 Định nghĩa .38 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 liệu lớp mẫu IV Cấu trúc 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 Lưu 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 more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc liệu mẫu với C++ 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 more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 Cấu trúc liệu mẫu với C++ Chương I Ngôn ngữ C++ lập trình hướng đối tượng I.1 Lập trình hướng đối tượng gì? Lập trình hướng đối tượng dựa tảng đối tượng Đối tượng xây dựng sở gắn cấu trúc liệu với phép toán thể cách mà suy nghĩ, bao quát giới thực [3] Lập trình hướng đối tượng cho phép kết hợp tri thức bao quát trình với khái niệm trừu tượng sử dụng máy tính Lập trình hướng đối tượng phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật giải, xây dựng chương trình, cách tiếp cận để phân chia chương trình thành đơn thể (modul) cách tạo vùng nhớ cho liệu lẫn hàm chúng sử dụng mẫu để tạo đơn thể cần thiết Đối tượng xem vùng phân chia chia nhớ máy tính để lưu trữ liệu tập hàm tác động liệu gắn với chúng Khái niệm Hướng đối tượng xây dựng tảng khái niệm Lập trình có cấu trúc Sự trừu tượng hoá liệu thay đổi chỗ chương trình hướng đối tượng thiết kế xoay quanh liệu mà ta làm việc nó, theo thân chức 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 trình phát triển chương trình không cho phép liệu chuyển động tự hệ thống Dữ liệu gắn chặt với hàm thành vùng riêng mà hàm tác động lên bảo vệ cấm hàm ngoại lai truy nhập tuỳ tiện Tuy nhiên đối tượng trao đổi thông tin với thông qua việc trao đổi thông báo.[5] more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 Cấu trúc liệu mẫu với C++ Tóm lại, so sánh lập trình cấu trúc lấy chương trình làm tảng: Chương trình = Cấu trúc liệu + Giải Thuật Trong lập trình hướng đối tượng có : Đối tượng =Dữ Liệu + Hành vi liệu Lập trình hướng đối tượng có đặc tính chủ yếu sau: Tập trung vào liệu thay cho hàm Chương trình chia thành tập lớp đối tượng Cấu trúc liệu thiết kế cho đặc tả đối tượng Các hàm xác định vùng kiệu đối tượng gắn với cấu trúc liệu Dữ liệu bao bọc, che dấu không cho phép hàm ngoại lai truy nhập tự Các đối tượng trao đổi thông tin với qua hàm Dữ liệu hàm dễ dàng bổ xung vào đối tượng cần thiết Chương trình thiết kế theo cách tiếp cận bottom-up I.2 Các ưu điểm lập trình hướng đối tượng Thông qua nguyên lý thừa kế, loại bỏ đoạn chương trình lặp lại, dư thừa trình mô tả lớp khả sử dụng lớp đà xây dựng Chương trình xây dựng từ đơn thể (module) trao đổi với nên việc thiết kế lập trình thực theo quy trình more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ định dựa vào kinh nghiệm kỹ thuật trước Điều đảm bảo rút ngắn thời gian xây dựng hệ thống tăng xuất lao động Nguyên lý che dấu thông tin giúp người lập trình tạo chương trình an toàn không bị thay đổi chương trình khác Có thể xây dựng ánh xạ đối tượng toán vào đối tượng chương trình Cách tiếp cận thiết kế đặt trọng tâm vào liệu giúp ta xây dựng mô hình chi tiết gần với dạng cài đặt Những hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành hệ thống lớn Kỹ thuật truyền thông báo việc tao trao đổi thông tin đối tượng giúp cho việc mô tả giao diện với hệ thống bên đơn giản Có thể quản lý độ phức tạp sản phẩm phần mềm I.3 Đối tượng Đối tượng thực thể xác định thời hạn hệ thống hướng đối tượng hoạt động Như đối tượng người, vật, thiết bị, bảng liệu cần xử lý chương trình Mỗi đối tượng gồm có: tập thuộc tính (attribute) tập hàm (function) để xử lý thuộc tính đó.[5] Một đối tượng minh hoạ sau : Đối Tượng Thuộc Tính Hàm Hình Cấu trúc tổng quát đối tượng more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc liệu mẫu với C++ Chẳng hạn xét đối tượng hình chữ nhật bao gồm thuộc tính (x1,y1) toạ độ góc bên trái, d, r chiều dài chiều rộng 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 hàm hiển thị Như đối tượng hình chữ nhật mô tả sau: Đố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 Mô tả đối tượng hình chữ nhật I.4 Các lớp đối tượng Một tập liệu hàm tập đối tượng xem kiểu liệu định nghĩa người sử dụng Kiểu liệu gọi lớp (class), tập thuộc tính hàm mô tả giới thực, đối tượng thể lớp Lớp khái niệm trung tâm lập trình hướng đối tượng, mở rộng cấu trúc (struct) C ghi (record) Pascal Trong lập trình hướng đối tượng, lớp đồng với kiểu liệu trừu tượng Lớp khái niệm tĩnh, nhận biết từ văn chương trình Ngược lại đối tượng khái niệm động, xác định nhớ 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 tạo để xử lý thông tin, thực nhiệm vụ thiết kế sau bị huỷ bỏ đối tượng hết vai trò Khi lớp định nghĩa, có thĨ t¹o sè more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc liệu mẫu với C++ lượng đối tượng tuỳ ý lớp Như lớp tập hợp đối tượng kiểu Sự khác biệt lớp đối tượng giống khác biệt tập hợp phần tử phần tử tập hợp.[5] I.5 Trừu tượng hoá liệu bao gói thông tin Việc đóng gói liệu hàm vào đơn vị cấu trúc xem nguyên tắc (che dấu) thông tin, tổ chức cho giới bên không truy nhập vào mà cho phép hàm lớp lớp có quan hệ thừa với quền truy nhập Chính hàm thành phần lớp đóng vai trò giao diện liệu đối tượng phần lại chương trình Nguyên tắc bao gói liệu để ngăn cấm truy nhập trực tiếp lập trình gọi che dấu thông tin Trừu tượng hoá cách biểu diễn đặc tính bỏ qua chi tiết vụn vặt giải thích Để xây dựng lớp 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 sử dụng liệu trừu tượng Ví dụ định nghĩa lớp danh sách thuộc tính trừu tượng kích thước, hình dáng mầu hàm xác định thuộc tính để mô tả đối tượng không gian hình học I.6 Thừa Kế Thừa kế trình đối tượng lớp quyền sử dụng số tính chất đối tượng lớp khác Nguyên lý thừa kế hỗ trợ cho việc tạo cấu trúc phân cấp lớp Nó thực dựa nguyên lý tổng quát hoá chi tiết hoá đặc tính đối tượng lớp more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ 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ớp đà xây dựng (lớp cha hay lớp sở) chúng bổ sung thêm tính chất để tạo lớp (lớp hay lớp dẫn xuất) mô tả chi tiết nhóm đối tượng cụ thể (theo nguyên lý chi tiết hoá) từ nhóm lớp có số đặc tính giống gộp chung đặc tính lại để tạo lớp mới, gọi lớp trừu tượng (nguyên lý tổng quát hoá) Khái niệm kế thừa hiểu chế chép ảo không đơn điệu Trong thực tế, việc xảy tựa lớp sở vào lớp dẫn xuất điều không cài đặt tường minh (gọi chép ảo) việc chép xác định lớp sở (sao chép không đơn điệu) Một lớp kế thừa tính chất hay nhiều lớp sở mức khác nhau, có năm dạng kế thừa sử dụng 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 kế thừa phức hợp (chương sau nói rõ dạng kế thừa này).[3] I.7 Tương ứng bội Tương ứng bội khái niệm có khả phép toán thực nhiều dạng khác Hành vi phép toán tương ứng bội phụ thuộc vào kiểu liệu mà sử dụng để xử lý Tương ứng bội đóng vai trò quan trọng việc tạo đối tượng có cấu trúc bên khác có khả dùng chung giao diện bên (như tên gọi) Điều có nghĩa lớp phép toán định nghĩa theo thuật toán khác nhau, có khả sử dụng theo cách giống nhau.Tương ứng bội mở rộng khái niệm sử dụng lại nguyên lý kế thừa Liên kết động dạng liên kết hàm, thủ tục chương trình thực lời gọi tới hàm, thủ tục ®ã Nh vËy, liªn kÕt ®éng néi dung cđa đoạn chương trình ứng với thủ tục, hàm thùc hiƯn c¸c lêi gäi tíi c¸c thđ tơc hàm Nó cho phép can thiệp vào hoạt động thực thể mà không cần biên dịch lại toàn chương trình, truyền nhận thông tin từ đối tượng giống đối tượng đà có Liên kết động liên more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ case 'I': Ins();break; case 'D': Del();break; case 'L': Erase();break; case 'R': Restore();break; case 'O': File();break; case 'S': Save();break; case 'A': SaveAs();break; case 'F': Find();break; case '0': SortAsc();break; case '1': SortDesc();break; case 'H':Help();break; case 'X': if(Exit()) flag=1; break; } return flag; } void Store(SV & sta) { if(stack.GetCount()==STK_LEN) stack.Flush(); if(strlen(sta.ma)) stack.Put(sta); } // void Restore() { SV sv; char txt[100]; if( !stack.GetCount()) msg="Khong ban ghi nao de phuc hoi "; if(stack.Get(sv))return; Input ques(10,10,"Ban co muon hoi phuc(C\\K) "); strcat(ques.disp,sv.hoten); strcat(ques.disp,"(ma so: "); strcat(ques.disp,sv.ma); strcat(ques.disp,")"); char *str=ques.Text(1); if(str[0]=='c' || str[0]=='C') { list.Append(sv); list.ToTail(); } else stack.Put(sv); ques.Hide(); Act(); } // - more information and additional documents connect with me here: http://facebook.com/ngphutien/ file đồ án kèm theo: Cau truc du lieu voi C++.rar 259 KB https://mega.co.nz/#!FgU3nAKa!-VgkoAGeGZtP3Q2LwN2LKMQXE4Uj67Q4nbAJrT4aGB8 CÊu tróc d÷ liƯu mÉu víi C++ void Key() { char *txt; Display guide(10,2,"Chon cach tim kiem",LIGHTGREEN); Display guid1(10,3,"1: Theo ma hoc sinh",YELLOW); Display guid2(10,4,"2: Theo ten hoc sinh",YELLOW); guide.Show(); guid1.Show(); guid2.Show(); Display choice(10,6,"Chon : ",MAGENTA); choice.Show(); char ch='0'; int mx,my; while(ch=='0') { if(kbhit()){ch=getch();ch=toupper(ch);} if(Click(mx,my)) { my-=2; if((my==3)&&(mx>10)&&(mx10)&&(mx