Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 208 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
208
Dung lượng
1,39 MB
Nội dung
Bài tập lập trình hướng đối tượng với C# Năm 2008 MỤC LỤC Chương I: ĐỐI TƯỢNG VÀ LỚP A TÓM TẮT LÝ THUYẾT Khai báo lớp Sử dụng đối tượng lớp: Từ khóa this 10 Sử dụng từ khóa mức độ truy cập 11 Bộ khởi dựng( constructor): Error! Bookmark not defined Bộ chép( copy constructor): Error! Bookmark not defined Hàm hủy bỏ (destructor) 12 Sử dụng thành viên tĩnh static: 14 Nạp chồng phương thức .17 10 Đóng gói dữ liệu thông qua thuộc tính: .17 B BÀI TẬP MẪU 19 Xây dựng lớp 19 Sử dụng lớp 22 Lớp lồng cách truy xuất 32 Chương trình khai báo nhiều lớp .34 Từ khóa this 39 Hàm thiết lập hàm thiết lập chép, hàm chép cho lớp vector 45 Sử dụng hàm thiết lập chép hàm hủy bỏ 50 Kiểu dữ liệu mảng, phương thức có giá trị trả , constructor chép 54 Sử dụng thành phần tĩnh 59 10 Hàm khởi tạo private để cấm tạo thể đối tượng 62 11 Nạp chồng phương thức .64 12 Gói ghém dữ liệu thông qua thuộc tính .74 C CÂU HỎI LÝ THUYẾT VÀ TRẮC NGHIỆM 80 D BÀI TẬP TỰ GIẢI 82 E BÀI TẬP TỔNG HỢP: 87 Chương II: NẠP CHỒNG TOÁN TỬ A TÓM TẮT LÝ THUYẾT 90 Toán tử: 90 Chồng toán tử: 90 Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 Cú pháp nạp chồng toán tử: .90 Toán tử ngôi: .92 Toán tử hai ngôi: 92 Hỗ trợ ngôn ngữ NET khác: .92 Phạm vi sử dụng toán tử: 93 Một số trường hợp nên sử dụng toán tử nạp chồng: 94 Yêu cầu sử dụng toán tử: .94 10 Ưu nhược điểm chồng toán tử 95 B BÀI TẬP MẪU 95 I BÀI TẬP TRẮC NGHIỆM, LÝ THUYẾT 95 II CÂU HỎI LÝ THUYẾT VÀ BÀI TẬP MẪU 98 Chồng toán tử (+) hai vector 98 Chồng toán tử 102 Xây dựng lớp sophuc nạp chồng toán tử +, - đổi dấu số phức 104 Xây dựng lớp phân số với tên phanso nạp chồng toán tử lớp .107 Xây dựng lớp vector thực yêu cầu sau: 112 C CÂU HỎI TRẮC NGHIỆM LÝ THUYẾT .118 D BÀI TẬP TỰ GIẢI 119 Chương III: KẾ THỪA VÀ ĐA HÌNH: A TÓM TẮT LÝ THUYẾT .124 Kế thừa: 124 Từ khoá base: 125 Từ khoá new: 126 Tính đa hình : 126 Ghi đè: 126 Nghiêm cấm kế thừa: .127 Cách truy xuất protected: 127 Lớp trừu tượng: 127 Sự khác giữa phương thức đa hình với phương thức trừu tượng: .128 10 Gốc tất lớp (Lớp Object): .128 11 Kiểu Boxing Unxing 129 12 Lớp lồng nhau: 130 Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 B BÀI TẬP MẪU 131 I Kế thừa .131 Xây dựng lớp dẫn xuất thừa kế từ lớp sở .131 Mức độ truy cập Protected .139 Cách truy nhập từ khóa internal public 146 Lớp sở đối tượng thành phần 152 II Nghiêm cấm kế thừa 160 III Tính đa hình 162 IV Lớp trừu tượng 169 V Xây dựng lớp lồng 173 C MỘT SỐ CÂU HỎI LÝ THUYẾT: 176 D CÂU HỎI TỰ TRẢ LỜI 179 E BÀI TẬP TỰ GIẢI: 182 Chương IV: GIAO DIỆN A TÓM TẮT LÍ THUYẾT 189 Khái niệm giao diện 189 Cài đặt giao diện .189 Truy xuất phương thức giao diện 190 Toán tử is: .190 Toán tử as 190 Thực thi phủ giao diện 191 Thực giao diện cách tường minh 191 B BÀI TẬP MẪU 191 I Sử dụng giao diện 191 II Mở rộng giao diện thực thi nhiều giao diện lớp 194 III Xây dựng lớp thực thi phủ giao diện 197 IV Xây dựng lớp thực thi giao diện cách tường minh 202 C CÂU HỎI VÀ TRẢ LỜI 205 D CÂU HỎI VÀ BÀI TẬP TỰ LÀM 206 Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 LỜI MỞ ĐẦU Ngày khoa học phát triển nhanh, đặc biệt bùng nổ công nghệ thông tin Tin học thay đổi phát triển giờ, ngày Ngôn ngữ lập trình Các ngôn ngữ đời thay khắc phục những hạn chế cho ngôn ngữ cũ Ngôn ngữ lập trình công cụ giúp người thể vấn đề thực tế máy tính cách hữu hiệu Với phát triển tin học, ngôn ngữ dần tiến hoá để đáp ứng thách thức thực tế C# mệnh danh ngôn ngữ lập trình hướng đối tượng mạnh ngôn ngữ lập trình NET hãng Microsoft Cuốn sách cung cấp cho bạn những kiến thức liên quan đến việc định nghĩa cài đặt lập trình hướng đối tượng ngôn ngữ C# ứng dụng thực tiễn áp dụng chúng cho mô hình đối tượng cách hiệu Giáo trình bao gồm chương: Chương 1: Đối tượng lớp Chương 2: Nạp chồng toán tử lớp Chương 3: Kế thừa đa hình Chương 4: Giao diện Với chương có trình bày tóm tắt lý thuyết có tập giải mẫu theo nội dung Cuối chương hệ thống tập tự giải (có hướng dẫn) để giúp bạn tiện thực hành Tuy sách phần hoàn thành xong, thời gian kiến thức có hạn chắn không tránh khỏi những sai lầm thiếu sót Vì mong nhận đóng góp thầy cô bạn bè để sách hoàn thiện Chúng xin chân thành cảm ơn tới cha, mẹ, anh, chị, em; thầy Nguyễn Hữu Đông thầy cô khoa Công nghệ thông tin trường ĐHSPKT Hưng Yên tạo điều kiện cho chúng em hoàn thành đề tài Xin cám ơn giúp đỡ bạn bè Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 CHƯƠNG I ĐỐI TƯỢNG VÀ LỚP Mục tiêu: Sau tìm hiểu xong chương người học nắm nội dung sau: ● Khai báo lớp ● Khai báo sử dụng đối tượng lớp ● Từ khóa this ● Các thuộc tính truy cập ● Hàm thiết lập ● Hàm thiết lập chép ● Hàm hủy bỏ ● Sử dụng thành viên tĩnh ● Nạp chồng phương thức ● Đóng gói dữ liệu thông qua thuộc tính A TÓM TẮT LÝ THUYẾT Khai báo lớp Một lớp bao gồm có thuộc tính phương thức Để khai báo lớp ta sử dụng từ khóa class với cấu trúc sau đây: Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 [Thuộc tính truy cập] class { Khai báo thuộc tính lớp Khai báo phương thức lớp } Các thuộc tính truy cập gồm có từ khóa sau (sẽ trình bày chi tiết phần sau): public, private, internal, protected, internal protected Trong C#, cho phép khai báo class lồng Thông thường khai báo lớp lồng ứng dụng có quy mô lớn Class lồng cho phép sử dụng nội class chứa nó có tầm vực public Cấu trúc khai báo class lồng sau: class class1 { // khai báo thuộc tính // khai báo phương thức public class class2 { // khai báo thành phần liệu // khai báo phương thức } } } Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 Sử dụng đối tượng lớp: Để sử dụng lớp ta phải khai báo đối tượng lớp Khi đối tượng lớp tạo có đầy đủ thuộc tính, phương thức lớp sử dụng thuộc tính phương thức lớp Các thành phần lớp đuợc sử dụng lớp, trừ trường hợp lớp có hàm khởi dựng static Để khai báo đối tượng lớp ta dùng từ khóa new khai báo theo cấu trúc sau: = new ([các giá trị khởi tạo có]) Để truy nhập đến phương thức ta thông qua tên biến đối tượng toán tử chấm “.”: ([danh sách đối số có]) Đối với lớp lồng nhau, để truy cập đến những thuộc tính phương thức class lồng khai báo cần lớp chứa đựng Muốn sử dụng biến lớp chứa biến lớp dùng để chứa phải khai báo static phải khai báo đối tượng chứa Ví dụ1: Bạn khai báo lớp diem với đầy đủ thuộc tính phương thức (giả sử có phương thức hien()), bạn muốn tạo đối tuợng tên A lớp sử dụng phương thức điểm A phải khai báo A la biến đối tượng sau: diem A = new diem (); A.hien(); Ví dụ 2: Định nghĩa lớp pheptoan lớp có chứa lớp tinhhieu, muốn sử dụng đối tượng lớp tinhhieu bắt buộc bạn phải khai báo rõ lớp chứa lớp pheptoan sau: pheptoan.tinhhieu = new pheptoan.tinhhieu(); Tài liệu hướng dẫn thực hành Môn LTHDT với C# Bài tập lập trình hướng đối tượng với C# Năm 2008 sau việc truy xuất đến phương thức lớp tiến hành bình thường lớp không sử dụng phương thức lớp chứa sử dụng thành phần dữ liệu tĩnh lớp chứa mà Từ khóa this Từ khóa this dùng để tham chiếu đến chính thân đối tượng đó.this trỏ ẩn nằm bên phương thức lớp thân chúng tham chiếu đến hàm biến khác đối tượng Từ khóa this C# tương tự this C++ Có ba cách để sử dụng từ khóa this - Sử dụng this để phân biệt rõ thành viên thể tham số phương thức ta sử dụng biến thể tên tham số phương thức trùng Tuy nhiên muốn có đựơc rõ ràng, minh bạch dùng tên biến thành viên tên tham số khác từ đầu Ví dụ: Trong lớp pheptoan có biến thành viên int y, int y phương thức public int setXY(int x, int y) { this.x=x; this.y=y; } this.x, this.y để tham chiếu đến thành phần dữ liệu lớp x, y Còn x, y bên phải phép gán chính hai đối số truyền vào phương thức setXY - Sử dụng this để trao đối tượng hiên hành thông số cho hàm hành khác Khi đối tượng đương nhiên trở thành tham số phương thức Ví dụ: với hai lớp class1 có chứa phương thức thietlapdoituong(), lớp class2 có chứa phương thức Tài liệu hướng dẫn thực hành Môn LTHDT với C# 10 Bài tập lập trình hướng đối tượng với C# Năm 2008 saochepdoituong() muốn truyền tham số cho đối tượng lớp class1 sử dụng từ khóa thí sau: public void saochepdoituong (class1 a) { a.thietlapdoituong(this); } - Sử dụng this để thao tác với indexer thường sử dụng dãy, indexer tập hợp Bộ khởi dựng( constructor/ Phương thức khởi tạo/ thiết lập) Cú pháp: public className([ds tham số]){ // Khởi tạo cho thành phần liệu lớp } className: Tên lớp Chú ý: Phương thức khởi tạo phương thức có tên trùng với tên lớp kiểu trả Sử dụng từ khóa mức độ truy cập + public : Không có giới hạn, truy xuất nơi thân lớp khai báo bên hay nội khối assembly + private: riêng tư có phạm vi hoạt động lớp mà khai báo Các phương thức bên lớp truy xuất đến + protected: Các thành viên lớp khai báo protected có phương thức bên lớp lớp dẫn xuất từ lớp truy cập đến + internal: Các phương thức, biến thành viên khai báo từ khóa Internal truy cập tất những phương thức lớp khối hợp ngữ assembly với lớp + protected internal: Các biến thành viên khai báo từ khóa lớp A truy xuất Tài liệu hướng dẫn thực hành Môn LTHDT với C# 11 Bài tập lập trình hướng đối tượng với C# Năm 2008 phương thức thuộc lớp A phương thức lớp dẫn xuất từ lớp A lớp khối hợp ngữ với lớp A - Khối hợp ngữ Assembly hiểu khối chia xẻ dùng lại CLR Khối hợp ngữ tập hợp tập tin vật lý lưu trữ thư mục bao gồm tập tin tài nguyên Các thuộc tính truy cập áp dụng cho thuộc tính, phương thức lớp thân lớp Khi định nghĩa thuộc tính truy cập lớp internal, protected định nghĩa lớp lồng mà Hàm hủy bỏ (destructor) Dùng để giải phóng vùng nhớ cấp phát cho đối tượng mà đối tuợng không tham chiếu đến Hàm hủy bỏ hàm giá trị trả có tên trùng tên với class có thêm kí tự “~”ở trước Muốn khai báo destructor khai báo với cú pháp sau: class className{ public ~className() {Ư public classname { public classname() { // code of constructor // công việc cần thực } ~ classname() { // code of descontructor // công việc cần thực } } Tuy nhiên, ngôn ngữ C# cú pháp khai báo shortcut liên kết đến phương thức kết thúc Finalize kết với lớp sở, viết Tài liệu hướng dẫn thực hành Môn LTHDT với C# 12 Bài tập lập trình hướng đối tượng với C# Năm 2008 } public Nhanviensx(int hsl) { this.hsl=hsl ; } public virtual void nhap() { Console.Write("Nhap vao ho ten:"); ten=Console.ReadLine(); Console.Write("Nhap vao he so luong:"); hsl=float.Parse(Console.ReadLine()); } public virtual void hien() { Console.WriteLine("Thong tin can hien thi"); Console.WriteLine("Ho ten nhan vien:{0}",ten ); Console.WriteLine("He so luong:{0}",hsl ); } public virtual double luong() { return hsl*lcb ; } } class tester { static void Main(string[] args) { Nhanviensx A = new Nhanviensx(); A.nhap(); A.hien(); Console.WriteLine("Luong cua nhan vien la:{0}", A.luong()); Console.ReadLine(); } } Tài liệu hướng dẫn thực hành Môn LTHDT với C# 196 Bài tập lập trình hướng đối tượng với C# Năm 2008 Kết sau chạy chương trình: Nhập vào họ tên: Nguyễn Văn A Nhập vào hệ số lương: Thông tin cần hiển thị Họ tên nhân viên: Nguyễn Văn A Hệ số lương: Lương nhân viên là: 2250 III Xây dựng lớp thực thi phủ giao diện Bài a) Xây dựng lớp “DaySo” để mô tả dãy số, gồm phương thức sau: - Phương thức “nhap” dùng để nhập dãy số từ bàn phím - Phương thức “print” dùng để in dãy số hình - Hàm tạo DaySo(int n) dùng để khởi tạo mảng gồm n phần tử b) Xây dựng giao diện Sort sau: interface Sort { public void Sort(); } c) Xây dựng lớp “QuickSort”, “SelectionSort”, “InsertSort” cách kế thừa từ lớp DaySo triển khai giao diện Sort để thực hiệp việc xếp: nổi bọt, chọn trực tiếp, chèn trực tiếp a, Hướng dẫn: Giả sử bạn muốn thiết kế phương thức xếp chung để xếp phần tử Phần tử mảng đối tượng dãy số, ma trận, lớp hoc viên Các đối tượng xếp thuật toán khác Vậy bạn cần xác định phương thức xếp chung nhằm thực xếp đối tượng Cách thức xếp đối tượng thuật toán tự định.Ta thấy toán vừa yêu cầu kế thừa vừa thực thi giao Tài liệu hướng dẫn thực hành Môn LTHDT với C# 197 Bài tập lập trình hướng đối tượng với C# Năm 2008 diện Đây chính tiến sử dụng giao diện so với lớp trừu tượng Các đối tượng toán bạn đọc xác định thấy rõ phần đề Các thuộc tính phương thức class dayso { public int[] a; protected int n; public dayso() public dayso(int n) public void nhap() public void print() } interface sort { void sapxep(); } class quicksort:dayso, sort { public void sapxep() } class selectsort:dayso,sort { public void sapxep() } class inserttionsort:dayso,sort { public void sapxep() } Lưu ý: Lớp dayso có thuộc tính n mảng a hai thuộc tính lớp dẫn xuất kế thừa gọi để thực thi Do hai thuộc tính phải khai báo Public b, Bài giải mẫu: using System; Tài liệu hướng dẫn thực hành Môn LTHDT với C# 198 Bài tập lập trình hướng đối tượng với C# Năm 2008 class dayso { public int[] a; protected int n; public dayso() { a = new int[5]; } public dayso(int n) { a = new int[n]; } public void nhap() { Console.Write("Nhap vao so phan tu cua day so:"); n = int.Parse(Console.ReadLine()); Console.WriteLine("Nhap vao thong tin cua day so:"); for (int i = 0; i < n; i++) { Console.Write("a[{0}]=", i); a[i] = int.Parse(Console.ReadLine()); } } public void print() { for (int i = 0; i < n; i++) Console.Write("{0}\t",a[i]); Console.WriteLine(); } } interface sort { void sapxep(); } class quicksort:dayso,sort Tài liệu hướng dẫn thực hành Môn LTHDT với C# 199 Bài tập lập trình hướng đối tượng với C# Năm 2008 { public void sapxep() { int i, j,x,tmp; x=a[(n)/2]; i = n-1; j = n; { while (a[i] < x) i++; while (a[j] > x) j ; if (i =0 && a[pos] > k) { a[pos + 1] = a[pos]; pos ; } a[pos + 1] = k; } } } class Tester { static void Main() { //sort a = new quicksort(); //selectsort a = new selectsort(); inserttionsort a = new inserttionsort(); a.nhap(); Console.Clear(); Console.WriteLine("Day truoc sap xep :"); a.print(); Console.WriteLine("Day sau sap xep :"); a.sapxep(); a.print(); Console.ReadKey(); } } Tài liệu hướng dẫn thực hành Môn LTHDT với C# 201 Bài tập lập trình hướng đối tượng với C# Năm 2008 Kết sau chạy chương trình: Dãy trước xếp: Dãy sau xếp: 2 Lưu ý: Ta phủ tất phương thức giao diện lớp thực thi phủ vài không phủ phương thức IV Xây dựng lớp thực thi giao diện cách tường minh Ví dụ: Xây dựng lớp Document, thực thi hai giao diện Italk, Istorable Giao diện Italk có phương thức Read() Italk Giao diện Istorable có phương thức Read() Write() a, Hướng dẫn: Bài toán gồm có :1 lớp Class Document, giao diện Italk, Istorable Ta thấy lớp Document thực thi hai giao diện, hai giao diện có phương thức Read () Vậy làm để máy tính bạn đọc biết lớp Document thi hành phương thức Read() giao diện Để giải vấn đề cách thực giao diện cách tường minh Xây dựng giao diện lớp interface Istorable { void Read(); void Write(); } interface Italk { void Read(); void Italk(); Tài liệu hướng dẫn thực hành Môn LTHDT với C# 202 Bài tập lập trình hướng đối tượng với C# Năm 2008 } class Document:Italk, Istorable { public Document(string s) void Istorable.Read() // Cài đặt phương thức Read() Istorable public void Write() puclic void Italk() void Italk.Read() // Cài đặt phương thức Read() ITalk } Lưu ý: Chúng ta phải ép kiểu thành giao diện để gọi Phương thức Read() Istorable Italk Thực thi giao diện cách tường minh cho phương thức Read() cách gọi tên giao diện b, Bài giải mẫu: using System; namespace bt { interface Istorable { void Read(); void Write(); } interface ITalk { void ITalk(); void Read(); } class Document:Istorable,ITalk { public Document(string s) { Console.WriteLine("Tao van ban {0}",s); } void Istorable.Read() { Tài liệu hướng dẫn thực hành Môn LTHDT với C# 203 Bài tập lập trình hướng đối tượng với C# Năm 2008 Console.WriteLine("Thuc thi Istorable.Read()"); } public void Write() { Console.WriteLine("Thuc thi Istorable.Write()"); } void ITalk.Read() { Console.WriteLine("Thuc thi ITalk.Read()"); } public void ITalk() { Console.WriteLine("Thuc thi ITalk.ITalk"); } } class tester { static void Main(string[] args) { Document thedoc = new Document("Bai tap C#"); Istorable isdoc = thedoc as Istorable; if (isdoc != null) { isdoc.Read(); } ITalk itdoc = thedoc as ITalk; if (itdoc != null) { itdoc.Read(); } thedoc.Write(); thedoc.ITalk(); Console.ReadLine(); } } Tài liệu hướng dẫn thực hành Môn LTHDT với C# 204 Bài tập lập trình hướng đối tượng với C# Năm 2008 } Kết sau chạy chương trình: Tạo văn Bài tập C# Thực thi Istorable.Read() Thực thi Italk.Read() Thực thi Istorable.Write() Thực thi Italk.ITalk C CÂU HỎI VÀ TRẢ LỜI Câu 1: So sánh giữa lớp giao diện? Trả lời: Giao diện khác với lớp số điểm sau: giao diện không cung cấp thực thi mã nguồn Điều thực lớp thực thi giao diện Một giao diện đưa để nói có cung cấp số xác nhận hướng dẫn cho những điều xảy không vào chi tiết Một điều khác nữa tất thành viên giao diện giả sử public ngầm định Nếu cố thay đổi thuộc tính truy cập thành viên giao diện nhận lỗi Giao diện chứa những phương thức, thuộc tính, kiện, mục Và không chứa dữ liệu thành viên, khởi dựng, hủy Chúng không chứa thành viên static Câu 2: Sự khác giữa giao diện lớp trừu tượng? Trả lời: Sự khác kế thừa Một lớp kế thừa nhiều giao diện lúc, kế thừa nhiều lớp trừu tượng Câu 3: Các lớp thực thi giao diện phải làm gì? Trả lời: Các lớp thực thi giao diện phải cung cấp phần thực thi chi tiết cho phương thức, thuộc tính, mục, kiện khai báo giao diện Câu 4: Có cách gọi phương thức khai báo giao diện? Tài liệu hướng dẫn thực hành Môn LTHDT với C# 205 Bài tập lập trình hướng đối tượng với C# Năm 2008 Trả lời: Có cách gọi phương thức khai báo giao diện: - Thông qua lớp sở tham chiếu đến đối tượng lớp dẫn xuất - Thông qua giao diện tạo từ lớp sở tham chiếu đến đối tượng dẫn xuất - Thông qua đối tượng dẫn xuất - Thông qua giao diện tạo từ đối tượng dẫn xuất Câu 5: Các thành viên giao diện có những thuộc tính truy cập nào? Trả lời: Mặc định thành viên giao diện public Vì mục tiêu giao diện xây dựng cho lớp khác sử dụng Nếu thay đổi thuộc tính internal, protected hay private gây lỗi Câu 6: Chúng ta tạo thể giao diện cách trực tiếp không? Trả lời: Không thể tạo thể giao diện trực tiếp khai báo new Chúng ta tạo thể giao diện thông qua phép gán với đối tượng thực thi giao diện D CÂU HỎI VÀ BÀI TẬP TỰ LÀM Câu hỏi: Câu 1: Toán tử is dùng làm giao diện? Câu 2: Toán tử as có lợi toán tử is mặt sử dụng liện quan đến giao diện ? Câu 3: Giao diện kiểu dữ liệu tham chiếu hay kiểu giá trị? Câu 4: Khi thực thi giao diện với cấu trúc Thì truy cập thành viên giao diện thông qua đối tượng hay thông qua tham chiếu giao diện tốt nhất? Câu 5: Số giao diện kế thừa cho lớp? Câu 6: Việc thực thi giao diện tường minh thực thi nào? Trong trường hợp cần thực tường minh? Bài tập: Bài Trong giao diện sau sai đâu? public interface House Tài liệu hướng dẫn thực hành Môn LTHDT với C# 206 Bài tập lập trình hướng đối tượng với C# Năm 2008 { @Deprecated void open(); void openFrontDoor(); void openBackDoor(); } Bài Hoàn thành chương trình sau: interface Closable { void close(); } class File implements Closable { @Override public void close() { // close this file } } Điều xảy ra? Bạn giải thích sao? Bài 3: Hãy viết giao diện khai báo thuộc tính ID chứa chuỗi giá trị Viết lớpEmployee thực thi giao diện Bài 4: Đoạn mã nguồn sau có lỗi sử lỗi cho biết có lỗi Sau sửa lỗi viết lớp Circle thực thi giao diện này? public interface osi { long with; long height; double area(); int side(); } Bài 5: Chương trình sau có lỗi sửa lỗi, biên dịch chạy lại chương trình Hãy giải thích chương trình lại lỗi Tài liệu hướng dẫn thực hành Môn LTHDT với C# 207 Bài tập lập trình hướng đối tượng với C# Năm 2008 using system; interface Ipoint { int x { get; set; } int y { get; set; } } class MyPoint { private int myX; private int myY; public MyPoint(int x,int y) { myX=x; myY=y; } public int x { get { return myX ;} set { myX=value ;} } public int y { get {return myY;} set {myY=value ;} } Tài liệu hướng dẫn thực hành Môn LTHDT với C# 208 Bài tập lập trình hướng đối tượng với C# Năm 2008 } class tester { private static void printpoint(Ipoint p) { Console.WriteLine("x={0},y={1}", p.x, p.y); } static void Main() { MyPoint p = new MyPoint(2, 3); Console.Write("My point "); printpoint(p); Ipoint p2 = new Ipoint(); printpoint(p2); Console.ReadLine(); } } Bài 6: Trong cách khai báo sau cách khai báo giao diện Cách khai báo sai sửa lại cho interface A { void print () {}; } interface B { void print(); } abstract interface C { print(); } abstract interface D { abstract void print() {} Tài liệu hướng dẫn thực hành Môn LTHDT với C# 209 Bài tập lập trình hướng đối tượng với C# Năm 2008 } Bài 7: Xây dựng giao diện IDisplay có khai báo thuộc tính Name kiểu chuỗi Hãy viết hai lớp Dog Cat thực thi giao diện IDisplay, cho biết thuộc tính Name tên đối tượng Tài liệu hướng dẫn thực hành Môn LTHDT với C# 210 ... với c pháp sau: class className{ public ~className() {Ư public classname { public classname() { // code of constructor // c ng vi c cần th c } ~ classname() { // code of descontructor // c ng... toàn c c số ngôn ngữ lập trình kh c ( pascal, C, C+ +, Visual Basic …) vi c sử dụng biến với m c đích “toàn c c trở nên điều Biến toàn c c ngôn ngữ kh c hiểu toàn c c ứng dụng C# toàn c c theo... dụng c quy mô lớn Class lồng cho phép sử dụng nội class chứa nó c tầm v c public C u tr c khai báo class lồng sau: class class1 { // khai báo thu c tính // khai báo phương th c public class class2