Câu hỏi thêm

Một phần của tài liệu Giáo trình hướng dẫn các chương trình lập trình trên web để xây dưng phần mềm part 4 pps (Trang 29 - 33)

Câu hỏi 1: Sự đặt biệt hóa được sử dụng trong C# thông qua tính gì? Câu hỏi 2: Khái niệm đa hình là gì? Khi nào thì cần sử dụng tính đa hình?

Câu hỏi 3: 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?

Câu hỏi 4: Từ khóa new được sử dụng làm gì trong các lớp?

Câu hỏi 5: Một phương thức ảo trong lớp cơ sở có nhất thiết phải được phủ quyết trong lớp dẫn xuất hay không?

Câu hỏi 6: Lớp trừu tượng có cần thiết phải xây dựng hay không? Hãy cho một ví dụ về một lớp trừu tượng cho một số lớp.

Câu hỏi 7: Lớp cô lập là gì? Có thể khai báo protected cho các thành viên của nó được không?

Câu hỏi 8: Lớp Object cung cấp những phương thức nào mà các lớp khác thường xuyên kế thừa để sử dụng.

Câu hỏi 9: Thế nào là boxing và unboxing? Hãy cho biết hai ví dụ về quá trình này?

Bài tập

Bài tập 1: Hãy mở rộng ví dụ trong chương xây dựng thêm các đối tượng khác kế thừa lớp Window như: Label, TextBox, Scrollbar, toolbar, menu,...

Bài tập 2: Hãy xây dựng các lớp đối tượng trong câu hỏi 3, 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).

Bài tập 3: Xây dựng các lớp đối tượng hình học như: điểm, đoạn thẳng, đường tròn, hình chữ nhật, hình vuông, tam giác, hình bình hành, hình thoi. Mỗi lớp có các thuộc tính riêng để xác định được hình vẽ biểu diễn của nó như đoạn thẳng thì có điểm đầu, điểm cuối.... Mỗi lớp thực thi một phương thức Draw() phủ quyết Draw() của lớp cơ sở gốc của các hình mà nó dẫn xuất. Hãy xây dựng lớp cơ sở của các lớp trên và thực thi đa hình với phương thức Draw(). Sau đó tạo lớp Tester cùng với hàm Main() để thử nghiệm đa hình giống như bài tập 2 ở trên.

Bài tập 4: Chương trình sau đây có lỗi. Hãy sửa lỗi biên dịch và chạy chương trình. Cho biết lệnh nào gây ra lỗi. Và nguyên nhân gây ra lỗi?

---

using System;

abstract public class Animal {

public Animal(string name) {

this.name = name; }

// đưa tên của đối tượng abstract public void Who(); // biến thành viên protected protected string name; }

// lớp Dog dẫn xuất từ lớp Animal public class Dog : Animal

{

// hàm khởi dựng lấy hai tham số

public Dog(string name, string color) : base(name) {

this.color = color; }

// phủ quyết phương thức trừu tượng Who() public override void Who( )

{

Console.WriteLine(“Gu gu! Toi la {0} co mau long {1}”, name, color); }

// biến private của lớp private string color; }

public class Cat : Animal {

// hàm khởi dựng lấy hai tham số

public Cat(string name, int weight) : base(name) { (adsbygoogle = window.adsbygoogle || []).push({});

this.weight = weight; }

// phủ quyết phương thức trừu tượng Who() public override void Who( )

{

Console.WriteLine(“Meo meo! Toi la {0} can nang {1}”, name, weight); }

// biến private của lớp private int weight; }

{

static void Main() {

Animal[] Arr = new Animal[3]; Arr[0] = new Dog(“Lu Lu”, “Vang”); Arr[1] = new Cat(“Mun”, 5);

Arr[2] = new Animal(“Noname”); for( int i=0; i <3 ; i++)

{Arr[i].Who(); Arr[i].Who(); } } } ---

Một phần của tài liệu Giáo trình hướng dẫn các chương trình lập trình trên web để xây dưng phần mềm part 4 pps (Trang 29 - 33)