Câu 1: Xây dựng lớp phân số: • Định nghĩa các properties cho phép đọc và ghi. • Xây dựng constructor rỗng (mặt định cho các properties bằng 0) • Xây dựng constructor với tham số là tử số (mẫu số mặt định =1) • Xây dựng constructor với tham số là tử số và mẫu số • Xây dựng constructor với tham số là một lớp phân số • Xây dựng phương thức xét đây có phải là một phân số không (phân số thì mẫu phải khác 0) • Xây dựng phương thức nhập, xuất phân số • Xây dựng các toán tử o Cộng phân số với số nguyên o Cộng phân số với một phân số o Nhân phân số với số nguyên o Nhân phân số với phân số Một điểm dịch vụ cần quản lý các thông tin cho thuê xe đạp và xe máy. Với xe đạp cần lưu họ tên người thuê, số giờ thuê. Tiền thuê xe đạp được tính như sau: 10000 (đồng) cho giờ đầu tiên, 80000 cho mỗi giờ tiếp theo. Với mỗi xe máy cần lưu họ tên người thuê, số giờ thuê, loại xe (100 phân khối, 250 phân khối), biển số. Tiền thuê xe máy được tính như sau: Đối với giờ đầu tiên, loại xe 100 phân khối tính 15000; loại xe 250 phân khối tính 20000. Đối với những giờ tiếp theo tính 10000 cho cả hai loại xe máy. Viết chương trình xây dựng các lớp cần thiết sau đó nhập danh sách các thông tin thuê xe đạp và xe máy, sau đó xuất ra các thông tin sau: • Xuất tất cả các thông tin thuê xe (tên từng khách hàng,cả số tiền thuê tương ứng). • Tính tổng số tiền cho thuê xe đạp và xe máy. • Xuất tất cả các thông tin liên quan đến việc thuê xe đạp. • Tính tổng số tiền cho thuê xe máy loại 250 phân khối. Xây dựng lớp HinhHoc với phương thức tính chu vi, diện tích là phương thức trừu tượng hoặc phương thức ảo. Sau đó định nghĩa các lớp HinhChuNhat (hình chữ nhật), HinhTron (hình tròn) kế thừa từ lớp HinhHọc với các thành phần dữ liệu và phương thức tính chu vi, diện tích cụ thể của từng loại đối tượng. Hãy xây dựng cây phân cấp các lớp đối tượng sau: Xe_Toyota, Xe_Dream, Xe_Spacy, Xe_BMW, Xe_Fiat, Xe_DuLich, Xe_May, Xe? Hãy xây dựng các lớp đối tượng, thiết lập các quan hệ kế thừa dựa trên cây kế thừa mà bạn xây dựng. Mỗi đối tượng chỉ cần một thuộc tính là myNane để cho biết tên của nó (như Xe_Toyota thì myName là “Toi la Toyota”...). Các đối tượng có phương thức Who() cho biết giá trị myName của nó. Hãy thực thi sự đa hình trên các lớp đó. Cuối cùng tạo một lớp Tester với hàm Main() để tạo một mảng các đối tượng Xe, đưa từng đối tượng cụ thể vào mảng đối tượng Xe, sau đó cho lặp từng đối tượng trong mảng để nó tự giới thiệu tên (bằng cách gọi hàm Who() của từng đối tượng). Vào dịp cuối năm, cán bộ trong một cơ quan được xét khen thưởng theo mức độ hoàn thành công việc của cán bộ. Cán bộ có hai dạng là biên chế và hợp đồng. Điều kiện khen thưởng của dạng biên chế là mức xếp loại A hoặc B. Thông tin cần quản lý đối với cán bộ biên chế là mã số, họ tên, ngày sinh, mức xếp loại (có 3 mức là A, B, C). Điều kiện khen thưởng của dạng hợp đồng là hoàn thành nhiệm vụ được giao ở mức tốt hoặc khá. Thông tin cần quản lý đối với cán bộ hợp đồng là mã số, họ tên, ngày sinh, mức độ hoàn thành nhiệm vụ (có 3 mức là tốt, khá, trung bình). Hãy viết chương trình nhập dữ liệu và in danh sách khen thưởng cho không quá 100 cán bộ biên chế và 30 cán bộ hợp đồng. Trong đó, hàm khen thưởng được viết dưới dạng hàm ảo. Xét chương trình cho phép quản lý sinh viên với ba hệ đào tạo khác nhau: hệ cử nhân tài năng, hệ chính quy và hệ chất lượng cao. Học bổng của sinh viên chính quy được tính như sau: • Nếu điểm trung bình >= 8.0 thì học bổng = 1000000 • Nếu điểm trung bình >= 9.0 thì học bổng = 1500000 Học bổng của sinh viên cử nhân tài năng được tính như sau: • Nếu điểm trung bình >= 8.0 thì học bổng = 1500000 • Nếu điểm trung bình >= 9.0 thì học bổng = 2000000 Học bổng của sinh viên chất lượng cao được tính như sau: • Nếu điểm trung bình >= 8.0 thì học bổng = 2000000 • Nếu điểm trung bình >= 9.0 thì học bổng = 2500000 Hãy viết chương trình cho phép nhận vào các sinh viên cần quản lý và tính tổng số tiền học bổng Trường sẽ phát cho sinh viên.
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1, Câu 1: Xây dựng lớp phân số: • Định nghĩa properties cho phép đọc ghi • Xây dựng constructor rỗng (mặt định cho properties 0) • Xây dựng constructor với tham số tử số (mẫu số mặt định =1) • Xây dựng constructor với tham số tử số mẫu số • Xây dựng constructor với tham số lớp phân số • Xây dựng phương thức xét có phải phân số khơng (phân số mẫu phải khác 0) • Xây dựng phương thức nhập, xuất phân số • Xây dựng tốn tử o Cộng phân số với số nguyên o Cộng phân số với phân số o Nhân phân số với số nguyên o Nhân phân số với phân số private int _Tu, _Mau; // private members (Định nghĩa properties cho phép đọc ghi) public int Tu { get { return _Tu; } set { _Tu = value; } } public int Mau { get { return _Mau; } set { _Mau = value; } } public PhanSo(int Tu) // (Xây dựng constructor rỗng (mặt định cho properties 0)) { this._Tu = Tu; this.Mau = 1; } public PhanSo(PhanSo ps) // ( Xây dựng constructor với tham số lớp phân số) { _Tu = ps.Tu; _Mau = ps.Mau; } public PhanSo() // (Xây dựng constructor rỗng (mặt định cho properties 0)) { this._Tu = 0; this._Mau = 0; } public bool isPhanSo() // (Xây dựng phương thức xét có phải phân số khơng (phân số mẫu phải khác 0)) { if (_Mau != 0) return true; else return false; } public void NhapPhanSo() // ( Xây dựng phương thức nhập, xuất phân số ) { String tam; Console.Write("Nhap tu so:"); tam = Console.ReadLine(); Tu = int.Parse(tam); Console.Write("Nhap mau so:"); tam = Console.ReadLine(); Mau = int.Parse(tam); } public void XuatPhanSo() { Console.WriteLine("TU={0}, Mau={1}", Tu, Mau); } public static PhanSo operator +(PhanSo PS1, int so) // (Cộng phân số với số nguyên) { int TuMoi = PS1.Mau * so + PS1.Tu; int MauMoi = PS1.Mau; return new PhanSo(TuMoi, MauMoi); } public static PhanSo operator +(PhanSo PS1, PhanSo PS2) // (Cộng phân số với phân số) { int MauMoi = PS1.Mau * PS2.Mau; int TuMoi = PS2.Mau * PS1.Tu + PS1.Mau * PS2.Tu; return new PhanSo(TuMoi, MauMoi); } public static PhanSo operator *(PhanSo PS1, int so) // (Nhân phân số với số nguyên) { int TuMoi = PS1.Tu * (int)so; int MauMoi = PS1.Mau; return new PhanSo(TuMoi, MauMoi); } public static PhanSo operator *(PhanSo PS1, PhanSo PS2) // (Nhân phân số với phân số) { int TuMoi = PS1.Tu * PS2.Tu; int MauMoi = PS1.Mau*PS2.Mau; return new PhanSo(TuMoi, MauMoi); } Câu 2: Viết chương trình hàm main cho phép • Nhập giá trị tử, mẫu • Tạo phân số A từ giá trị • Tạo phân số B từ constructor rỗng • Nhập giá trị cho phân số B • Nhân A cho • Xuất A • Tính tổng A, B xuất kết //Nhập giá trị tử, mẫu int T, M; String tam; Console.Write("Nhap tu:"); tam = Console.ReadLine(); T = int.Parse(tam); Console.Write("Nhap mau:"); tam = Console.ReadLine(); M = int.Parse(tam); PhanSo A = new PhanSo(T, M); //Tạo phân số A từ giá trị PhanSo B = new PhanSo(); //Tạo phân số B từ constructor rỗng B.NhapPhanSo(); //Tạo phân số B từ constructor rỗng A = A * 2; A.XuatPhanSo(); PhanSo tong = A + B; //Tính tổng A, B xuất kết tong.XuatPhanSo(); Bài tập: Viết class hinhtron có thuộc tính: R,dientich,chuvi Viết class hinhcau kế thừa hinhtron, viết lại dientich, thêm thetich Trong hàm main viết : Tạo đối hinhcau, in dientich, thetich hình cầu using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HINHTRONSV { class hinhtron { private float _bankinh; public float R { get { return _bankinh; } set { _bankinh = value; } } public float D { get { return * R; } } public double dientich { get { return R * R * Math.PI; } } public double chuvi { get { return * R * Math.PI; } } public hinhtron(float R) { this.R = R; } public void nhap() { Console.WriteLine("nhap ban kinh:"); R = float.Parse(Console.ReadLine()); } } class hinhcau : hinhtron { public hinhcau(float R) : base(R) { } public new double dientich { get { return *R * R * Math.PI; } } public double thetich { get { return (4 * R * R * R * Math.PI) / 3; } } } class Program { static void Main(string[] args) { hinhcau hc = new hinhcau(5); Console.WriteLine("DT={0},TT={1}", hc.dientich, hc.thetich); } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class MyWindow { protected int top, left; //Toa goc tren ben trai public MyWindow(int t, int l) { top = t; left = l; } // Phuong thuc ao public virtual void DrawWindow() { Console.WriteLine(" dang ve Window tai toa {0}, {1}", top, left); } } public class MyListBox : MyWindow { string listBoxContents; public MyListBox(int top, int left, string contents) : base(top, left) { listBoxContents = contents; } //public new void DrawWindow() public override void DrawWindow( ) { Console.WriteLine(" dang ve listbox {0} tai toa do: {1},{2}", listBoxContents, top, left); } } public class MyButton : MyWindow { public MyButton(int top, int left) : base(top, left) { } //public new void DrawWindow() public override void DrawWindow( ) { Console.WriteLine(" dang ve button tai toa do: {0},{1}", top, left); } } class Program { static void Main(string[] args) { MyWindow[] winArray = new MyWindow[3]; MyWindow MW = new MyWindow(1, 1); MyListBox ML = new MyListBox(2, 2, "LB"); MyButton MB = new MyButton(3, 3); MW.DrawWindow(); ML.DrawWindow(); MB.DrawWindow(); winArray[0] = MW; winArray[1] = ML; winArray[2] = MB; winArray[0].DrawWindow(); winArray[1].DrawWindow(); winArray[2].DrawWindow(); } } } Một điểm dịch vụ cần quản lý thông tin cho thuê xe đạp xe máy Với xe đạp cần lưu họ tên người thuê, số thuê Tiền thuê xe đạp tính sau: 10000 (đồng) cho đầu tiên, 80000 cho Với xe máy cần lưu họ tên người thuê, số thuê, loại xe (100 phân khối, 250 phân khối), biển số Tiền thuê xe máy tính sau: Đối với đầu tiên, loại xe 100 phân khối tính 15000; loại xe 250 phân khối tính 20000 Đối với tính 10000 cho hai loại xe máy Viết chương trình xây dựng lớp cần thiết sau nhập danh sách thông tin thuê xe đạp xe máy, sau xuất thơng tin sau: • Xuất tất thông tin thuê xe (tên khách hàng,cả số tiền th tương ứng) • Tính tổng số tiền cho thuê xe đạp xe máy • Xuất tất thông tin liên quan đến việc th xe đạp • Tính tổng số tiền cho thuê xe máy loại 250 phân khối using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CUAHANG { abstract public class XE { protected string hoten; protected int giothue; public virtual int TienThue { get { return 0; } } abstract public void Xuat(); public virtual string LOAI() 10