BÀI TẬP HƯỚNG ĐỐI TƯỢNG C++ CO LOI GIAI

Tài liệu bài xích tập xây dựng hướng đối tượng người sử dụng C++ cơ bản: bài bác tập lập trình hướng đối tượng người sử dụng C++ BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP PHÚC YÊN BÀI TẬP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++ CƠ BẢN THỰC HIỆN: TRẦN XUÂN THỨC CN: è cổ Xuân Thức - 1- tranxuanthuc.pci

Bạn đang xem: Bài tập hướng đối tượng c++ co loi giai

gmail.com bài xích tập lập trình hướng đối tượng người tiêu dùng C++ I. DẠNG BÀI TẬP MÔ TẢ BẰNG LỜI. Cục bộ các lớp, các mối dục tình giữa những lớp được đề bài mô tả bằng lời một phương pháp chi tiết. Dạng này thuận tiện xác định được các lớp của bài xích và quan hệ giữa chúng, những thuộc tính cùng phương thức trong những lớp. Thế nên ta thuận lợi vẽ một sơ đồ cho mỗi bài (nếu cần). Sau đấy là một số bài xích tập ví dụ: bài bác 1.1: xuất bản lớp Person gồm những thông tin: Họ với tên, Ngày sinh, Quê quán. Sau đó, kiến tạo lớp dẫn xuất “Kỹ sư” ngoài những thông tin của lớp Person, lớp kỹ sư còn có các tin tức về: Ngành học, Năm giỏi nghiệp (int) và các phương thức: cách tiến hành nhập: nhập những thông tin của kỹ sư. Phương thức xuất: xuất những thông tin lên màn hình. Chế tạo chương trình bao gồm nhập vào mộ...


*
59 trang | phân tách sẻ: khủng long thời tiền sử | Lượt xem: 2858 | Lượt tải: 1
*

Bạn sẽ xem trước trăng tròn trang mẫu mã tài liệu Bài tập lập trình hướng đối tượng người tiêu dùng C++ cơ bản, để download tài liệu nơi bắt đầu về máy chúng ta click vào nút tải về ở trên
Bài tập thiết kế hướng đối tượng người dùng C++ BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP PHÚC YÊN BÀI TẬP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++ CƠ BẢN THỰC HIỆN: TRẦN XUÂN THỨC CN: trần Xuân Thức - 1- tranxuanthuc.pci
gmail.com bài bác tập thiết kế hướng đối tượng người tiêu dùng C++ I. DẠNG BÀI TẬP MÔ TẢ BẰNG LỜI. Toàn thể các lớp, các mối dục tình giữa những lớp được đề bài mô tả bằng lời một bí quyết chi tiết. Dạng này thuận lợi xác định được những lớp của bài xích và mối quan hệ giữa chúng, những thuộc tính và phương thức trong những lớp. Vì thế ta dễ dàng vẽ một sơ đồ cho mỗi bài (nếu cần). Sau đây là một số bài xích tập ví dụ: bài 1.1: thành lập lớp Person gồm các thông tin: Họ với tên, Ngày sinh, Quê quán. Sau đó, tạo lớp dẫn xuất “Kỹ sư” ngoài những thông tin của lớp Person, lớp kỹ sư còn có các thông tin về: Ngành học, Năm tốt nghiệp (int) và những phương thức: cách tiến hành nhập: nhập các thông tin của kỹ sư. Cách tiến hành xuất: xuất các thông tin lên màn hình. Desgin chương trình bao gồm nhập vào một trong những danh sách các kỹ sư. In danh sách của những kỹ sư lên screen và thông tin của các kỹ sư giỏi nghiệp gần đây nhất (năm tốt nghiệp béo nhất). #include #include #include #include class Person public: char HT<30>; char NS<30>; char Q<30>; ; class Kysu:public Person public: char NH<30>; int NTN; void nhap(); void xuat(); ; void Kysu::nhap() coutNTN; void Kysu::xuat() CN: è Xuân Thức - 2- tranxuanthuc.pci
gmail.com bài bác tập lập trình hướng đối tượng người tiêu dùng C++ coutn; for(i=0;iMax) Max=a.NTN; coutTL; coutSkim; cout>Tdo; void Mkim::xuat() coutTL; coutDPG; cout>TD; void Mlaser::xuat() coutn; coutm; coutDtoan; cout>Dly; CN: è cổ Xuân Thức - 6- tranxuanthuc.pci
gmail.com bài bác tập xây dựng hướng đối tượng C++ cout>Dhoa; void Diem::xuat() coutn; for(int i=0;iGT; void May::xuat() coutTD; cout>DLR; cout>DLHDD; void Maytinh::xuat() May::xuat(); coutn; for(i=0;iGT; void May::xuat() coutTD; cout>DLR; cout>DLHDD; CN: trằn Xuân Thức - 12- tranxuanthuc.pci
gmail.com bài tập lập trình hướng đối tượng người tiêu dùng C++ void Maytinh::xuat() May::xuat(); coutn; for(i=0;iGiagoc; coutGiam; Giave=Giagoc-(Giagoc*Giam)/100; CN: nai lưng Xuân Thức - 15- tranxuanthuc.pci
gmail.com bài xích tập lập trình hướng đối tượng người sử dụng C++ void VeNL::xuat() Ve::xuat(); coutGiam; Giave=Giagoc-(Giagoc*Giam)/100; void VeTE::xuat() Ve::xuat(); coutTuoi; void Person::xuat() coutn; for(i=0;iKhoa; void Lop::xuat() coutST; cout>Diem; void Mon::xuat() coutn; for(int i=0;in; for(int i=0;iTuoi; coutn; for(int i=0;iSL; coutn; for(int i=0;iDT; void KH::xuat() coutGia; cout>SL; CN: è Xuân Thức - 30- tranxuanthuc.pci

Xem thêm:

gmail.com bài xích tập thiết kế hướng đối tượng người dùng C++ void Sach::xuat() coutn; for(int i=0;iCMND; coutSN; void Phong::xuat() coutDC; a.nhap(); cout>n; for(int i=0;i Phanthuc; tg.Phanao = -this -> Phanao; - Khi sử dụng phương thức toán tử một ngôi ta cũng đều có 2 biện pháp như với hàm toán tử. Như vậy, hai cách viết sau là tương đương: SoPhuc y = x.operator-(); SoPhuc y = -x; b. Setup phương thức toán tử nhị ngôi Như đã biết, trong thủ tục toán tử, bé trỏ this vẫn là một đối số khoác định. Như vậy, với cách tiến hành toán tử nhị ngôi, nắm vì gồm hai đối vào, ta chỉ cần một đối, đối còn sót lại là nhỏ trỏ this. Tương tự như cách tiến hành toán tử một ngôi, ta dìm thấy: - cách tiến hành toán tử nhị ngôi có 1 đối vào. Đối vào còn lại chính là con trỏ this. - bé trỏ this luôn là đối mang định của các phương thức toán tử. Như vậy, hai phương pháp viết sau là tương tự tg.Phanthuc = Phanthuc + y.Phanthuc; tg.Phanao = Phanao + y.Phanao; tg.Phanthuc = this -> Phanthuc + y.Phanthuc; tg.Phanao = this -> Phanao + y.Phanao; - Khi sử dụng phương thức toán tử nhị ngôi ta cũng có 2 bí quyết như cùng với hàm toán tử. Như vậy, hai phương pháp viết sau là tương đương: SoPhuc T = x.operator+(y); SoPhuc T = x + y 3. Cài đặt một số cách tiến hành toán tử: bài 4.2. Hãy thi công lớp phân số với các thuộc tính Tử số và chủng loại số và các phương thức: Toán tử nhập (>>) cùng xuất (>(istream & x,PS & y); friend ostream và operator>(istream & x,PS & y) cout>y.TS; cout>y.MS; return x; ostream và operatorx; couty; cout>(istream & x,PS và y); friend ostream & operator>(istream và x,PS & y) cout>y.TS; cout>y.MS; return x; ostream & operatorx; couty; cout>(istream & x,SP & y); friend ostream và operator>(istream và x,SP & y) cout>y.T; cout>y.A; return x; ostream & operatorx; couty; cout>) cùng xuất (>(istream & x,MT và y); friend ostream & operator>(istream và x,MT và y) cout>y.n; CN: nai lưng Xuân Thức - 41- tranxuanthuc.pci
gmail.com bài xích tập thiết kế hướng đối tượng người tiêu dùng C++ cout>y.m; for(int i=0;i>y.a; return x; ostream và operatory; z=-y; cout>) và xuất (>(istream & x,MT và y); friend ostream & operator>(istream và x,MT & y) cout>y.n; cout>y.m; for(int i=0;i>y.a; return x; } ostream & operatory; z=-y; cout>(istream & x,TT & y); friend ostream và operator>(istream & x,TT & y) cout>y.a; cout>y.b; cout>y.c; return x; ostream và operatorx; CN: trằn Xuân Thức - 45- tranxuanthuc.pci
gmail.com bài tập lập trình hướng đối tượng C++ couty; coutn; for(int i=0;i>a; } } void Mang::xuat() for(int i=0;i>), xuất (>B //nhập: 1, 59, 6 C=A+B; Cout>(istream & x,Time và y); friend ostream và operator>(istream và x,Time & y) cout>y.g; cout>y.p; cout>y.gi; return x; ostream và operator=60) z.gi=z.gi%60; z.p=z.p+1; if(z.p>=60) z.p=z.p%60; z.g=z.g+1; return z; void Time::operator++() gi=gi+1; if(gi==60) gi=0; p=p+1; CN: è cổ Xuân Thức - 49- tranxuanthuc.pci
gmail.com bài tập lập trình hướng đối tượng người dùng C++ if(p==60) p=0; g=g+1; int Time::operatory.g) return 0; else if(py.p) return 0; else if(gi>B; C=A+B; couta; } }; class B: public A int b; public: void nhap() cout>b; ; class C: public B int c; public: void nhap() cout>c; ; trên hàm main(), ta khai báo 3 đối tượng người tiêu dùng thuộc 3 lớp A, B, C và một con trỏ p thuộc lớp A. Khi đó, mặc dù p trỏ tới đối tượng của lớp B, C đầy đủ khi viết phường  nhap() thì phương thức nhap() của lớp A vẫn được gọi. Void main() A d1, *p; B d2; C d3; CN: nai lưng Xuân Thức - 51- tranxuanthuc.pci
gmail.com bài bác tập thiết kế hướng đối tượng C++ p = & d2; p->nhap();//van la phuong thuc nhap() cua lop A p. = & d3; p->nhap();//van la phuong thuc nhap() cua lop A 2. Phương thức ảo và chân thành và ý nghĩa của cách tiến hành ảo trong vô số nhiều trường hợp, ta ao ước muốn: Khi nhỏ trỏ đối tượng người dùng p thuộc lớp A đang chứa add của một đối tượng thuộc lớp B hoặc C nhưng mà ta viết: phường  nhap(); thì sẽ truy cập tới thủ tục nhap() của lớp B hoặc C. Hy vọng được do vậy thì cách thức nhap() của 3 lớp A, B, C đề nghị là cách làm ảo. Các phương thức viết theo kiểu thông thường đều là những phương thức tĩnh. Cách làm nhap() trong lấy một ví dụ trên là thủ tục tĩnh. Cách chuyển cách tiến hành tĩnh thành cách làm ảo: cách 1: Thêm từ khóa virtual vào trước thủ tục tĩnh của cả toàn bộ các lớp (cơ sở và dẫn xuất). VD: Đoạn trình sau chuyển thủ tục tĩnh nhap() thành thủ tục ảo: class A int a; public: virtual void nhap() cout>a; ; class B: public A int b; public: virtual void nhap() cout>b; ; class C: public B int c; CN: è Xuân Thức - 52- tranxuanthuc.pci
gmail.com bài tập thiết kế hướng đối tượng người tiêu dùng C++ public: virtual void nhap() cout>c; ; biện pháp 2: chỉ cần thêm keyword virtual vào trước thủ tục tĩnh của lớp cơ sở. Class A int a; public: virtual void nhap() cout>a; ; class B: public A int b; public: void nhap() cout>b; ; class C: public B int c; public: void nhap() cout>c; ; lúc đó, trong lịch trình chính, nếu phường trỏ tới đối tượng của lớp nào thì cách thức nhap() của đối tượng thuộc lớp đó sẽ được gọi khi ta viết phường  nhap(); void main() A d1, *p; B d2; CN: nai lưng Xuân Thức - 53- tranxuanthuc.pci
gmail.com bài xích tập lập trình hướng đối tượng người dùng C++ C d3; p. = và d2; p->nhap();//phuong thuc nhap() cua lop B duoc goi p. = & d3; p->nhap();//phuong thuc nhap() cua lop C duoc goi 3. Cách tiến hành ảo với sự kết nối động Trong ví dụ như trên, và một lời gọi cách làm : p  nhap(); nhưng hoàn toàn có thể truy cập tới phương thức ảo của lớp A hoặc B hoặc C. Lời gọi p  nhap(); tương ứng với 3 thủ tục nhap() khác nhau. Khi ta sử dụng phương thức ảo, rõ ràng là: cùng một bé trỏ trực thuộc lớp cơ sở, cùng một lời gọi cách thức nhưng lời gọi đó lại tương ứng với rất nhiều phương thức khác nhau. Ta hotline đó là sự việc tương ứng bội giỏi tính nhiều hình. Lời gọi p.  nhap(); có thể kết nối tới thủ tục nhap() của lớp A hoặc lớp B, hoặc lớp C. Điều đó tức là lời call đó không links cứng cho tới một phương thức nhap() nào mà sự link đó là động. Như vậy, khi áp dụng phương thức ảo thì ta rất có thể liên kết động xuất phát điểm từ 1 lời gọi phương thức tới các phương thức cùng tên, cùng bộ đối số. đặc điểm như vậy của cách làm ảo gọi là việc kết nối động. 4. Lấy ví dụ về sử dụng phương thức ảo xây cất lớp Cây gồm các thuộc tính: Chiều cao, độ tuổi, chu vi tán và những phương thức: - phương thức nhập: nhập những giá trị cho các thuộc tính của lớp Cây. - cách làm xuất: xuất các giá trị của những thuộc tính thuộc lớp Cây lên màn hình. Thi công lớp Cây cảnh, ngoài những thuộc tính của lớp Cây còn có các ở trong tính: giá thành, chủng nhiều loại và các phương thức: - thủ tục nhập: nhập những giá trị cho những thuộc tính của lớp Cây cảnh. - cách thức xuất: xuất các giá trị của các thuộc tính trực thuộc lớp cây cảnh lên màn hình. Viết chương trình chính khai báo 2 đối tượng người sử dụng thuộc 2 lớp trên cùng một nhỏ trỏ ở trong lớp Cây. Dùng con trỏ này để nhập, xuất những thuộc tính của hai đối tượng trên. Class Cay { public: float Chieucao; float Dotuoi; float CVTan; public: virtual void nhap() CN: è cổ Xuân Thức - 54- tranxuanthuc.pci
gmail.com bài tập thiết kế hướng đối tượng người dùng C++ coutChieucao; cout>Dotuoi; cout>CVTan; virtual void xuat() coutChieucao; cout>Dotuoi; cout>CVTan; cout>Giathanh; coutnhap();//Nhap cua lop Cay p=&b; p->nhap();//Nhap cua lop Caycanh p=&a; p->xuat();//Xuat cua lop Cay p=&b; p->xuat();//Xuat cua lop Caycanh getch(); 5. Lớp cửa hàng trừu tượng và các thành phần ảo trong vô số trường hợp, ta chỉ ý muốn dùng bé trỏ của lớp cơ sở để truy vấn tới những phương thức ảo của các lớp dẫn xuất. Bên cạnh ra, hết sức ít khi sử dụng con trỏ lớp cơ sở để truy vấn tới cách tiến hành ảo của chủ yếu lớp này. Tuy nhiên, để bé trỏ của lớp cơ sở hoàn toàn có thể truy cập những phương thức ảo của các lớp dẫn xuất thì lớp cửa hàng cũng phải gồm phương thức ảo này. Trường đoản cú đây xuất hiện một khả năng: cách tiến hành ảo của lớp cơ sở rất có thể chỉ được định nghĩa hiệ tượng mà ko được dùng. Khi ấy thân của cách thức ảo này không cần có bất cứ dòng lệnh nào. Một cách tiến hành ảo của lớp cửa hàng mà vào thân của chính nó không xúc tiến một lệnh làm sao (trừ return) hotline là cách thức thuần ảo. Lớp cơ sở gồm phương thức thuần ảo gọi là lớp đại lý trừu tượng. Khi xây dựng phần mềm phía đối tượng, ta luôn khẳng định được các lớp hoàn toàn có thể có trong ứng dụng và cây thứ bậc diễn tả sự kế thừa của những lớp. Tín đồ ta thường tạo thành các lớp cửa hàng trừu tượng, trong số ấy có các phương thức thuần ảo. đầy đủ phương thức bởi vậy không tiến hành một quá trình nào mà chỉ dùng để tạo phương thức ảo cho những phương thức thuộc tên trong số lớp dẫn xuất. Từ bỏ đó, chỉ việc khai báo một nhỏ trỏ ở trong lớp các đại lý trừu tượng này, ta rất có thể dùng nhỏ trỏ đó để truy cập tới những phương thức ảo của những lớp dẫn xuất. Trường đoản cú đây, tạo ra sự linh hoạt trong truy vấn các lớp dẫn xuất. Thủ tục ảo chỉ được tạo thành sau khi đã hình thành đối tượng, bởi vì vậy, phương thức khởi tạo cấp thiết là cách làm ảo nhưng phương thức huỷ bỏ có thể là phương thức ảo. Ngoài ra, cách làm toán tử cũng có thể là cách làm ảo. Ưu nhược điểm của thủ tục ảo: - Chương trình thực hiện nhiều thủ tục ảo vẫn linh hoạt hơn trong sự truy vấn các cách làm cùng tên của những lớp dẫn xuất. - Việc xúc tiến chương trình sẽ chậm rì rì hơn. - Tốn nhiều bộ nhớ hơn do phải tạo ra một bảng chỉ mục của những phương thức ảo. CN: nai lưng Xuân Thức - 56- tranxuanthuc.pci
gmail.com bài bác tập lập trình sẵn hướng đối tượng người sử dụng C++ bao giờ dùng cách thức ảo? Ta chỉ thiết kế các lớp có phương thức ảo khi: - gồm sự kế thừa giữa các lớp. - Các lớp bên trong cây thiết bị bậc có các phương thức cùng tên, thuộc đối số, lớp cơ sở ban đầu (lớp gốc) đề xuất cũng phải bao gồm phương thức này. - thực chất của cây lắp thêm bậc đòi hỏi cần có phương thức ảo. Bài bác 5.1. Kiến thiết lớp đại lý Xe gồm thuộc tính năm sản xuất, trọng lượng và cách làm tính giá chỉ thành: ngân sách = (năm chế tạo * 0.2 + trọng lượng), cách tiến hành khởi tạo khởi gán những giá trị cho những thuộc tính của lớp Xe, thủ tục Xuất đưa những thông tin của xe và chi phí lên màn hình. Thi công lớp dẫn xuất Xe mua kế thừa toàn bộ các thuộc tính và cách làm trên của lớp Xe, ngoài ra còn gồm thêm nằm trong tính Trọng cài và các phương thức: cách tiến hành khởi tạo: khởi gán những giá trị nằm trong tính mang lại xe tải. Phương thức Tính giá chỉ thành: chi tiêu = Trọng download *200. Cách thức xuất, đưa những thông tin và giá cả của xe cài đặt lên màn hình. Thi công chương trình chính áp dụng một bé trỏ đối tượng thuộc lớp Xe. Thực hiện con trỏ này nhằm nhập thông tin cho đối tượng người tiêu dùng thuộc lớp Xe và in các thông tin vừa nhập lên màn hình kèm theo giá thành của Xe. Vẫn áp dụng con trỏ này để nhập thông tin cho đối tượng người dùng thuộc lớp Xe cài đặt và in các thông tin vừa nhập lên màn hình kèm theo giá cả của xe pháo tải. #include #include #include #include class xe { public: int NamSX; float TL; Xe(int x1,float x2) NamSX=x1; TL=x2; Xe() NamSX=TL=0; virtual void nhap() cout>NamSX; cout>TL; virtual void gt() float GT=0; GT=(NamSX*0.2+TL); CN: è Xuân Thức - 57- tranxuanthuc.pci
gmail.com bài xích tập xây dựng hướng đối tượng người tiêu dùng C++ coutTT; void gt() { float G=0; G=TT*200; coutnhap(); coutnhap(); coutxuat(); p->gt(); CN: è cổ Xuân Thức - 58- tranxuanthuc.pci