Bài tập lập trình hướng đối tượng c++ cơ bản

     

Tài liệu bài tập xây dựng hướng đối tượng người sử dụng C++ cơ bản: bài tập xây dựng 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: nai lưng Xuân Thức - 1- tranxuanthuc.pci


Bạn đang xem: Bài tập lập trình hướng đối tượng c++ cơ bản

gmail.com bài bác tập thiết kế hướng đối tượng C++ I. DẠNG BÀI TẬP MÔ TẢ BẰNG LỜI. Toàn cục các lớp, các mối quan hệ tình dục giữa các lớp được đề bài bác mô tả bởi lời một cách chi tiết. Dạng này dễ ợt xác định được các lớp của bài xích và mối quan hệ giữa chúng, các thuộc tính với phương thức trong mỗi lớp. Vì vậy ta dễ dãi vẽ một sơ đồ cho từng bài (nếu cần). Sau đấy là một số bài bác tập ví dụ: bài xích 1.1: xây cất lớp Person gồm các thông tin: Họ với tên, Ngày sinh, Quê quán. Sau đó, xây đắp 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 tồn tại 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 làm nhập: nhập các 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. Xây đắp chương trình bao gồm nhập vào mộ...


*
59 trang | chia sẻ: khủng long | Lượt xem: 2303 | Lượt tải: 1
*

Bạn đang xem trước 20 trang chủng loại tài liệu Bài tập thiết kế hướng đối tượng người dùng C++ cơ bản, để cài đặt tài liệu gốc về máy bạn click vào nút download ở trên
Bài tập xây dựng 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: è Xuân Thức - 1- tranxuanthuc.pci
gmail.com bài xích tập lập trình sẵn hướng đối tượng C++ I. DẠNG BÀI TẬP MÔ TẢ BẰNG LỜI. Toàn bộ các lớp, các mối quan hệ nam nữ giữa những lớp được đề bài xích mô tả bởi lời một biện pháp chi tiết. Dạng này dễ ợt 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 mỗi lớp. Do vậy ta tiện lợi vẽ một sơ đồ cho từng 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: xây đắp lớp Person gồm các thông tin: Họ cùng tên, Ngày sinh, Quê quán. Sau đó, xây đắp 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 tồn tại các thông tin về: Ngành học, Năm giỏi nghiệp (int) và những phương thức: cách làm 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. Xây đắp chương trình chính nhập vào trong 1 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ư tốt nghiệp vừa mới đây nhất (năm giỏi 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: trằn Xuân Thức - 2- tranxuanthuc.pci
gmail.com bài bác tập thiết kế hướng đối tượ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 tập thiết kế 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 bác tập thiết kế hướng đối tượ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 xây dựng 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: trằn Xuân Thức - 30- tranxuanthuc.pci


Xem thêm: Hướng Dẫn Cách Xóa Ảnh, Video Đại Diện Trên Facebook Đơn Giản, Nhanh Chóng

gmail.com bài xích tập lập trình sẵn hướng đối tượng người sử 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 có thể có 2 phương pháp như cùng với hàm toán tử. Như vậy, hai bí quyết viết sau là tương đương: SoPhuc y = x.operator-(); SoPhuc y = -x; b. Setup phương thức toán tử hai ngôi Như đang biết, trong phương thức toán tử, con trỏ this luôn là một đối số mặc định. Như vậy, với cách làm toán tử nhì ngôi, vắt vì có hai đối vào, ta chỉ cần một đối, đối còn lại là bé trỏ this. Tựa như như cách thức toán tử một ngôi, ta nhấn thấy: - phương thức toán tử nhì ngôi có một đối vào. Đối vào còn lại đó là con trỏ this. - bé trỏ this luôn là đối mặc đị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 đương tg.Phanthuc = Phanthuc + y.Phanthuc; tg.Phanao = Phanao + y.Phanao; tg.Phanthuc = this -> Phanthuc + y.Phanthuc; tg.Phanao = this -> Phanao + y.Phanao; - Khi thực hiện phương thức toán tử hai ngôi ta cũng có thể có 2 giải pháp 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. Setup một số cách tiến hành toán tử: bài xích 4.2. Hãy thành lập lớp phân số với các thuộc tính Tử số và mẫu mã số và các phương thức: Toán tử nhập (>>) cùng xuất (>(istream và x,PS & y); friend ostream & operator>(istream & x,PS & y) cout>y.TS; cout>y.MS; return x; ostream & operatorx; couty; cout>(istream & x,PS và y); friend ostream & operator>(istream & x,PS và y) cout>y.TS; cout>y.MS; return x; ostream và operatorx; couty; cout>(istream và x,SP và y); friend ostream và operator>(istream và x,SP & y) cout>y.T; cout>y.A; return x; ostream & operatorx; couty; cout>) với xuất (>(istream & x,MT và y); friend ostream và operator>(istream & x,MT & 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 C++ cout>y.m; for(int i=0;i>y.a; return x; ostream và operatory; z=-y; cout>) và xuất (>(istream và x,MT và y); friend ostream & operator>(istream và x,MT và 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 & operator>(istream & x,TT và y) cout>y.a; cout>y.b; cout>y.c; return x; ostream & operatorx; CN: è cổ Xuân Thức - 45- tranxuanthuc.pci
gmail.com bài bác tập lập trình sẵn 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 và x,Time & 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: trần Xuân Thức - 49- 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++ 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 thuộc 3 lớp A, B, C cùng một nhỏ trỏ p. Thuộc lớp A. Lúc đó, tuy nhiên p trỏ tới đối tượng người sử dụng của lớp B, C phần đa khi viết phường  nhap() thì thủ tụ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 người sử dụng C++ p. = và d2; p->nhap();//van la phuong thuc nhap() cua lop A phường = & d3; p->nhap();//van la phuong thuc nhap() cua lop A 2. Cách tiến hành ảo và ý nghĩa sâu sắc của cách tiến hành ảo trong tương đối nhiều trường hợp, ta mong muốn: Khi con trỏ đối tượng p nằm trong lớp A vẫn chứa add của một đối tượng người tiêu dùng thuộc lớp B hoặc C mà ta viết: p.  nhap(); thì sẽ truy vấn tới cách thức nhap() của lớp B hoặc C. ước ao được bởi vậy thì cách thức nhap() của 3 lớp A, B, C phải là thủ tục ảo. Các phương thức viết theo kiểu thông thường đều là các phương thức tĩnh. Cách làm nhap() trong lấy ví dụ như trên là cách tiến hành tĩnh. Giải pháp chuyển thủ tục tĩnh thành cách tiến hành ảo: giải pháp 1: Thêm keyword virtual vào trước phương thức tĩnh của cả tất cả các lớp (cơ sở cùng dẫn xuất). VD: Đoạn trình sau chuyển cách thức tĩnh nhap() thành cách tiến hành ả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: è cổ Xuân Thức - 52- tranxuanthuc.pci
gmail.com bài tập lập trình sẵn 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 keywords virtual vào trước cách làm 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; ; khi đó, trong công tác chính, nếu p. Trỏ tới đối tượng người sử dụng của lớp như thế nào thì cách làm nhap() của đối tượng người sử dụng thuộc lớp đó sẽ tiến hành gọi khi ta viết p  nhap(); void main() A d1, *p; B d2; CN: trần Xuân Thức - 53- 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++ C d3; p = và d2; p->nhap();//phuong thuc nhap() cua lop B duoc goi phường = & d3; p->nhap();//phuong thuc nhap() cua lop C duoc goi 3. Cách thức ảo với sự liên kết động Trong ví dụ trên, cùng một lời gọi phương thức : phường  nhap(); nhưng hoàn toàn có thể truy cập tới cách làm ảo của lớp A hoặc B hoặc C. Lời gọi p.  nhap(); khớp ứ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 nhỏ trỏ nằm trong lớp cơ sở, cùng một lời gọi phương thức nhưng lời gọi đó lại tương ứng với rất nhiều phương thức không giống nhau. Ta hotline đó là việc tương ứng bội tuyệt tính nhiều hình. Lời gọi p.  nhap(); rất 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 điện thoại tư vấn đó không liên kết cứng cho tới một phương thức nhap() nào nhưng mà sự link đó là động. Như vậy, khi sử dụng phương thức ảo thì ta hoàn toàn có thể liên kết động xuất phát điểm từ 1 lời gọi cách làm tới những phương thức cùng tên, cùng cỗ đối số. Tính chất như vậy của phương thức ảo gọi là sự kết nối động. 4. Lấy ví dụ như về áp dụng phương thức ảo xây dựng lớp Cây gồm các thuộc tính: Chiều cao, độ tuổi, chu vi tán và các phương thức: - cách làm nhập: nhập những giá trị cho những thuộc tính của lớp Cây. - cách tiến hành xuất: xuất những giá trị của những thuộc tính trực thuộc lớp Cây lên màn hình. Xây dựng lớp Cây cảnh, ngoài các thuộc tính của lớp Cây còn tồn tại các ở trong tính: giá thành, chủng các loại và các phương thức: - cách thức nhập: nhập những giá trị cho các 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 những thuộc tính ở trong lớp hoa lá cây cảnh lên màn hình. Viết chương trình bao gồm khai báo 2 đối tượng người sử dụng thuộc 2 lớp trên với một con trỏ ở trong lớp Cây. Dùng bé 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: trần Xuân Thức - 54- tranxuanthuc.pci
gmail.com bài xích tập xây dựng hướng đối tượng người sử 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à những thành phần ảo trong vô số nhiều trường hợp, ta chỉ muốn dùng bé trỏ của lớp đại lý để truy cập tới những phương thức ảo của các lớp dẫn xuất. Quanh đó ra, khôn xiết ít khi sử dụng con trỏ lớp các đại lý để truy vấn tới cách làm ảo của chính lớp này. Tuy nhiên, để con trỏ của lớp cơ sở có thể truy cập các 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 bao gồm phương thức ảo này. Tự đây mở ra 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 hình thức mà ko được dùng. Khi ấy thân của cách làm ảo này sẽ không cần có bất cứ dòng lệnh nào. Một thủ tục ảo của lớp cơ sở mà vào thân của chính nó không thực thi một lệnh làm sao (trừ return) hotline là phương thức thuần ảo. Lớp cơ sở có phương thức thuần ảo gọi là lớp cửa hàng trừu tượng. Khi xây đắp phần mềm hướng đối tượng, ta luôn khẳng định được các lớp rất có thể có trong ứng dụng và cây sản phẩm bậc diễn đạt sự kế thừa của những lớp. Tín đồ ta thường tạo nên các lớp các đại lý trừu tượng, trong số ấy có các phương thức thuần ảo. Các phương thức bởi thế không tiến hành một các bước nào nhưng chỉ dùng làm tạo cách thức ảo cho các phương thức cùng tên trong số lớp dẫn xuất. Từ bỏ đó, chỉ việc khai báo một con trỏ thuộc lớp các đại lý trừu tượng này, ta có thể dùng con trỏ kia để truy cập tới những phương thức ảo của các lớp dẫn xuất. Tự đây, tạo nên sự linh hoạt trong truy vấn các lớp dẫn xuất. Phương thức ảo chỉ được tạo thành sau khi đã tạo ra đối tượng, vị vậy, cách tiến hành khởi tạo chẳng thể là cách thức ảo nhưng cách tiến hành huỷ bỏ rất có thể là cách làm ảo. Bên cạnh ra, cách tiến hành toán tử cũng có thể là phương thức ảo. Ưu yếu điểm của phương thức ảo: - Chương trình thực hiện nhiều cách làm ảo đang linh hoạt rộng trong sự truy vấn các phương thức cùng tên của những lớp dẫn xuất. - Việc thực hiện chương trình sẽ lừ đừ hơn. - Tốn nhiều bộ nhớ hơn vì chưng phải tạo thành một bảng chỉ mục của những phương thức ảo. CN: è Xuân Thức - 56- tranxuanthuc.pci
gmail.com bài xích tập lập trình hướng đối tượng C++ bao giờ dùng phương thức ảo? Ta chỉ xây cất các lớp gồm phương thức ảo khi: - có sự thừa kế giữa những lớp. - Các phần bên trong cây trang bị bậc có các phương thức cùng tên, cùng đối số, lớp cơ sở ban sơ (lớp gốc) buộc phải 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 phải có phương thức ảo. Bài 5.1. Kiến tạo lớp cửa hàng Xe có thuộc tính năm sản xuất, trọng lượng và phương thức tính giá bán thành: chi tiêu = (năm tiếp tế * 0.2 + trọng lượng), phương thức khởi tạo ra khởi gán những giá trị cho các thuộc tính của lớp Xe, thủ tục Xuất đưa những thông tin của xe pháo và ngân sách lên màn hình. Tạo ra lớp dẫn xuất Xe thiết lập kế thừa toàn bộ các ở trong tính và cách tiến hành trên của lớp Xe, trong khi còn có thêm nằm trong tính Trọng sở hữu và các phương thức: phương thức khởi tạo: khởi gán các giá trị nằm trong tính mang lại xe tải. Cách thức Tính giá thành: giá cả = Trọng cài đặt *200. Cách tiến hành xuất, đưa các thông tin và túi tiền của xe sở hữu lên màn hình. Xây đắp chương trình chính sử dụng một con trỏ đối tượng người sử dụ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 dùng thuộc lớp Xe và in những thông tin vừa nhập lên màn hình kèm theo ngân sách chi tiêu của Xe. Vẫn 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 download 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 cộ tải. #include #include #include #include class xe cộ { 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: trần Xuân Thức - 57- tranxuanthuc.pci


Xem thêm: Sửa Lỗi "Cài Đặt Cốc Cốc Không Cài Đặt Được Cốc Cốc Cốc Không Thành Công"

gmail.com bài tập xây dựng hướng đối tượng C++ coutTT; void gt() { float G=0; G=TT*200; coutnhap(); coutnhap(); coutxuat(); p->gt(); CN: nai lưng Xuân Thức - 58- tranxuanthuc.pci