on thi cuoi ki oop [hufi]

8
1 ÔN TP THI GIA KMÔN LP TRÌNH HƯỚNG ĐỐI TƯỢNG (02DHTH) I. LÝ THUYT - Chương 3: Lớp và đối tượng. + Phân bit lớp và đối tượng. + Cú pháp xây dng lp. + Các loại phương thức có thto khi xây dng lp. Ý nghĩa, cú pháp từng loại phương thức. + Ý nghĩa các quyền truy xut thuộc tính và phương thức trong lp. + Các thành phn tĩnh (static). + Hàm chng + Np chng toán t. + Xlý mảng các đối tượng ca 1 lp. - Chương 4: Kế thừa và đa hình + kế thừa: đơn kế thừa, đa kế tha. + xây dng lp con kế tha lp cha. + thc hiện đa hình: các hàm override, new. + astract class + interface + lp lng + xlý mng, chui, arrayList, struct. II. BÀI TP Bài 1. Xem xét các đoạn code sau, nếu có li thì chữa cho đúng. a) Đoạn code 1: 1 class CN 2 { public string ten; 3 public string id; 4 public int tuoi; 5 public string quequan; 6 public CN(int id, string ten, tuoi, quequan) 7 { 8 ten = id = quequan= ""; 9 tuoi=0; 10 } 11 } 12 class MangCN : class CN 13 {

Upload: drakenguyen

Post on 15-Jun-2015

131 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: On thi cuoi ki oop [hufi]

1

ÔN TẬP THI GIỮA KỲ MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

(02DHTH)

I. LÝ THUYẾT - Chương 3: Lớp và đối tượng. + Phân biệt lớp và đối tượng. + Cú pháp xây dựng lớp. + Các loại phương thức có thể tạo khi xây dựng lớp. Ý nghĩa, cú pháp từng loại phương thức. + Ý nghĩa các quyền truy xuất thuộc tính và phương thức trong lớp. + Các thành phần tĩnh (static). + Hàm chồng + Nạp chồng toán tử. + Xử lý mảng các đối tượng của 1 lớp.

- Chương 4: Kế thừa và đa hình

+ kế thừa: đơn kế thừa, đa kế thừa.

+ xây dựng lớp con kế thừa lớp cha.

+ thực hiện đa hình: các hàm override, new.

+ astract class

+ interface

+ lớp lồng

+ xử lý mảng, chuỗi, arrayList, struct.

II. BÀI TẬP Bài 1. Xem xét các đoạn code sau, nếu có lỗi thì chữa cho đúng.

a) Đoạn code 1: 1 class CN 2 { public string ten; 3 public string id; 4 public int tuoi; 5 public string quequan; 6 public CN(int id, string ten, tuoi, quequan) 7 { 8 ten = id = quequan= ""; 9 tuoi=0; 10 } 11 } 12 class MangCN : class CN 13 {

Page 2: On thi cuoi ki oop [hufi]

2

14 CN[] a; 15 int n; 16 public int N 17 { 18 base(); 19 get { return n; } 20 set { n = value;} 21 } 22 public MangCN(): base() 23 { 24 n = 0; 25 a = new CN[100] {a,b,c}; 26 } 27 public void SapXep() 28 { 29 for (int i in n) 30 for (int j in n) 31 if (a[i].ten > a[j].ten) 32 {CN [] t = a[i]; a[i] = a[j];a[j] = t; } 33 } 34 } b) Đoạn codde 2 1 class Point2D 2 { 3 protected int x =5,y=7; 4 public static void Xuat2D() 5 { 6 Console.WriteLine("({0}, {0})", x, y); 7 } 8 } 9 class Point3D () extend Point2D 10 { 11 public int z=8; 12 public void Xuat3D() 13 { 14 Console.WriteLine("({0}, {1}, {2})", x ; y ; z); } 15 } 16 class PointApp 17 { 18 public static void Main() 19 { 20 Point2D p2 = new Point2D(); 21 p2.x = 1; 22 p2.y = 2; 23 p2.Xuat2D(); 24 Point3D p3 = new Point3D(2,5,8);

Page 3: On thi cuoi ki oop [hufi]

3

25 p3.x = 4; 26 p3.y = 5; 27 p3.z = 6; 28 p3.Xuat3D(); 29 Console.Write(p3.Xuat2D()); 30 } 31 } c) Đoạn code 3 1 abstract class XeHoi 2 { 3 protected int TocDo; 4 private string BienSo; 5 public string HangSX; 6 public XeHoi(int td, string BS, string HSX) 7 { TocDo = td; BienSo = BS; HangSX = HSX; } 8 public void virtual Xuat() 9 { 10 Console.Write("Xe: {0}, Bien so: {1}, Toc do: 11 {2} mh", this.HangSX, this.BienSo, this.TocDo); 12 } 13 public void Print() 14 { Console.WriteLine("Xe Hoi"); } 15 } 16 class XeKhach : XeHoi,Object 17 { 18 int SoHanhKhach; 19 public XeKhach (int td, float BS, string HSX, int SHK) : base(BS, td, HSX) 20 { SoHanhKhach = SHK; } 21 public new void Xuat():base.Xuat(); 22 { 23 Console.Write("Xe: {0}, Bien so: {1}, Toc do: {2} mh",HangSX, BienSo, TocDo); 24 Console.WriteLine(",{0} cho ngoi",SoHanhKhach); 25 } 26 public override void Print() 27 { Console.WriteLine("Xe khach"); } 28 } d) Đoạn code 4 1 public abstract class MyWindow 2 { 3 private int top, abstract left; 4 public MyWindow(int t, int l) 5 { top = t; left = l; } 6 public void DrawWindow( )

Page 4: On thi cuoi ki oop [hufi]

4

7 { 8 Console.WriteLine("...dang ve Window tai toa do {0}, {1}", top, left); 9 } 10 } 11 public class MyListBox: MyWindow, interface Window 12 { 13 abstract string listBoxContents; 14 public void MyListBox(int top,int left,int contents): base(top, left) 15 { listBoxContents = contents; } 16 17 public override void DrawWindow(int top, int left,int contents ):base () 18 { 19 Console.WriteLine ("...dang ve listbox {0} tai toa do: {1},{2}", listBoxContents, top, left); 20 } 21 } e) Đoạn code 5 1 public class HinhHoc 2 { 3 abstract public double DienTich(); 4 public virtual double ChuVi() { return ChuVi;} 5 } 6 public class HinhTron : abstract HinhHoc 7 { 8 double abstract float bankinh; 9 public double BanKinh () 10 { 11 get{ return bankinh;} set{ value = bankinh;} 12 } 13 public double DienTich() 14 { Consolde.Write( bankinh*bankinh*3.1416); } 15 public static override string ChuVi() 16 { return bankinh*2*3.1416; } 17 } f) Đoạn code 6 1 public abstract class HinhHoc 2 { 3 public double DienTich(); 4 public double ChuVi() { return 0;}

Page 5: On thi cuoi ki oop [hufi]

5

5 } 6 public class HinhChuNhat : HinhHoc 7 { double _dai, _rong; 8 public double ChieuDai 9 { get{ return ChieuDai;} 10 set{ ChieuDai = value;} 11 } 12 public double ChieuRong 13 { get{ return _rong;} 14 set{ _rong = value;} 15 } 16 public override string DienTich() 17 { return _dai*_rong;} 18 public double new ChuVi() 19 { return (_dai + _rong)*2;} 20 } 21 class Tester 22 { 23 static void Main(string[] args) 24 { 25 abstract HinhHoc h; h=new HinhHoc(); 26 HinhChuNhat n = new HinhChuNhat(3,4); 27 n._dai = 4; n._rong = 3; 28 h = n; 29 Console.WriteLine("Thong tin ve HCN "); 30 Console.WriteLine("Chu vi HCN:{0}", 31 h.ChuVi(4,3)); 32 Console.WriteLine("Dien tich HCN:{0}" 33 h.DienTich(4,3)); 34 Console.ReadLine(); 35 } g) Đoạn code 7 public interface class #Hinh { void nhap(); void xuat(); abstract void draw() {Console.WriteLine(“Draw hinh”);} } class HinhVuong:Hinh { int a = 4; public virtual void nhap() { Console.WriteLine(" Canh: ",a ); a = int.Parse(Console.ReadLine()); }

Page 6: On thi cuoi ki oop [hufi]

6

public override void xuat() { Console.WriteLine("Canh: " + a); } public new void draw(){Console.WriteLine(“Draw hinh”);} } static void Main(string[] args) { HinhVuong h = new HinhVuong(); Hinh a = new Hinh(); if (h as Hinh) Console.WriteLine(" ok"); else Console.WriteLine(" not ok"); Console.ReadLine();} h) Đoạn code 8: public abstract class XE { protected string hoten; protected int songaythue; int tienThue; public abstract int TienThue { get {return 0;} } public virtual void Xuat() { } public override void ID() { return "Xe"; } } public class XEKHACH:XE { public string loaixe; string bienso; public XEMAY(string ht,int nt,string lx,string bs):base () { hoten = ht; ngaythue = nt; loaixe=lx; bienso=bs; } public override void ID() { if (loaixe=="29 cho")return "XH_29Cho"; else return "XH_50Cho"; } public virtual int TienThue { get {

Page 7: On thi cuoi ki oop [hufi]

7

int T; if (loaixe.CompareTo("29 cho")==0) T = 1500000; else T = 2000000; if (ngaythue > 0) T = T + 1000000*( ngaythue -1); return T; } } public override void Xuat() { Console.WriteLine("Xe khach: " + hoten + "\t {0}" + ngaythue +"\t" + loaixe + "\t" + bienso +"\t {1}"+ TienThue); } } Bài 2. Xây dựng các iterface sau: a) Giao diện chứa các hàm tính diện tích đáy, diện tích xung quanh, diện tích toàn phần của các

nhóm hình lập phương, hình trụ tròn, hình nón cụt. b) Giao diện chứa các hàm tính chu vị, diện tích, nhập/xuất thông tin của các hình trên mặt

phẳng: hình tam giác, vuông, chữ nhật, hình tròn. c) Giao diện chứa các hàm cộng, trừ, nhân, chia cho các đối tượng số: số thực, số nguyên, phân

số, số ảo. d) Giao diện chứa các hàm nhập/xuất, phát tiếng kêu, di chuyên, cách săn mồi của các đối tượng

con vật: chim, cá, bò, rắn,… Bài 3. a) Hãy xây dựng lớp Con vật với các thuộc tính và phương thức (sv tự xét tính trừu tượng của

hàm) sau: + Thuộc tính: tên, loài. + Phương thức: xác định loài, đếm số chân, tính trọng lượng, nhập/xuất thông tin. b) Hãy xây dựng lớp Con Cá kế thừa con vật, bổ sung thêm cá thuộc tính và hàm cần thiết kế

thừa trên Con vật.

Bài 4.

a) Xây dựng interface chứa các phương thức xuất trạng thái Xe: khởi động, dừng, đã khởi động. b) Xây dựng lớp Xe kế thừa interface trên, chứa thuộc tính trạng thái để chỉ trạng thái xe khởi

động hoặc chưa cùng các phương thức thực thi từ lớp cha. c) Xây dựng lớp Xe Hơi kế thừa Xe. Ngoài các thành phần đã có, xe khách có thêm thuộc tính

số hành khách, cùng các hàm nhập/xuất thông tin xe.

Bài 5. Xây dựng lớp Đa thức chứa thông tin đa thức 1 biến. Viết các hàm cần thiết:

+ tính cộng, trừ 2 đa thức.

+ nhân đa thức với 1 số nguyên.

+ sắp xếp đa thức theo thứ tự giảm dần của số mũ.

Page 8: On thi cuoi ki oop [hufi]

8

+ thu gọn đa thức (trong đa thức có nhiều đơn thức cùng số mũ thì tính toán để thay bằng 1 đơn thức).

Bài 5. Xây dựng chương trình Paint vẽ hình và tính chu vi, diện tích các Hình Học cơ bản

a) Xây dựng interface chứa các thao tác chính: draw, rotate, zoom, colorChange, calPerimeter, calArea. b) Xây dựng abstract class Hinh chứa các thông tin và phương thức:

- tên, số cạnh, màu. - Hàm: nhập/xuất thông tin, thuộc tính get/set.

c) Xây dựng lớp Hình chữ nhật kế thừa interface và abstract class trên. Thực thi các phần đã kế thừa.

Bài 6.

a) Xây dựng lớp Dãy số mô tả dãy số cùng các thông tin và phương thức: dãy số và số phần tử; nhập, xuất và tạo dãy số ngẫu nhiên.

b) Xây dựng interface Sắp xếp chứa phương thức sắp tăng và sắp giảm. c) Xây dựng 3 lớp: InterChangeSort, BubbleSort, SelectionSort kế thừa Dãy số và interface Sắp

xếp với các phương thức thực thi theo giải thuật tương ứng. ----------------------------------------------HẾT-----------------------------------------------------