Giáo trình hướng dẫn tạo ra những kiểu dữ liệu mới bằng việc tạo ra các lớp đối tượng theo phương thức đa hình p6
Số trang: 5
Loại file: pdf
Dung lượng: 866.67 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Để đảm bảo rằng lớp này có tất cả các chức năng tương tự như các lớp được xây dựng sẵn, nghĩa là chúng ta cho phép thực hiện các phép toán số học trên các thể hiện của phân số chúng ta (như các phép toán cộng phân số, nhân hai phân số,...) và chuyển đổi qua lại giữa phân số và kiểu dữ liệu xây dựng sẵn như kiểu nguyên (int).
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn tạo ra những kiểu dữ liệu mới bằng việc tạo ra các lớp đối tượng theo phương thức đa hình p6 Ngôn Ngữ Lập Trình C#public class Fraction{ public Fraction( int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } public override string ToString() { StringBuilder s = new StringBuilder(); s.AppendFormat(“{0}/{1}”,numerator, denominator); return s.ToString(); } internal class FractionArtist { public void Draw( Fraction f) { Console.WriteLine(“Drawing the numerator {0}”, f.numerator); Console.WriteLine(“Drawing the denominator {0}”, f.denominator); } } // biến thành viên private private int numerator; private int denominator;}public class Tester{ static void Main() { Fraction f1 = new Fraction( 3, 4); Console.WriteLine(“f1: {0}”, f1.ToString()); Fraction.FractionArtist fa = new Fraction.FractionArtist(); fa.Draw( f1 ); }}-----------------------------------------------------------------------------Lớp Fraction trên nói chung là không có gì thay đổi ngoại trừ việc thêm một lớp lồng bêntrong và lược đi một số phương thức không thích hợp trong ví dụ này. Lớp lồng bên trong 148 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C# chỉ cung cấp một phương thức thành viên duy nhất, phương thức Draw(). ĐiềuFractionArtistthú vị trong phương thức Draw() truy cập dữ liệu thành viên private là f.numerator vàf.denominator. Hai viến thành viên private này sẽ không cho phép truy cập nếuFractionArtist không phải là lớp lồng bên trong của lớp Fraction.Lưu ý là trong hàm Main() khi khai báo một thể hiện của lớp lồng bên trong, chúng ta phảixác nhận tên của lớp bên ngoài, tức là lớp Fraction: Fraction.FractionArtist fa = new Fraction.FractionArtist();Thậm chí khi lớp FractionArtist là public, thì phạm vị của lớp này vẫn nằm bên trong của lớpFraction.Câu hỏi và trả lờiCâu hỏi 1: Có cần thiết phải chỉ định từ khóa override trong phương thức phủ quyết của lớpdẫn xuất hay không?Trả lời 1: Có, chúng ta phải khai báo rõ ràng từ khóa override với phương thức phủ quyếtphương thức ảo (của lớp cơ sở ) bên trong lớp dẫn xuất.Câu hỏi 2: Lớp trừu tượng là thế nào? Có thể tạo đối tượng cho lớp trừu tượng hay không?Trả lời 2: Lớp trừu tượng không có sự thực thi, các phương thức của nó được tạo ra chỉ làhình thức, tức là chỉ có khai báo, do vậy phần định nghĩa bắt buộc phải được thực hiện ở cáclớp dẫn xuất từ lớp trừu tượng này. Do chỉ là lớp trừu tượng, không có sự thực thi nên chúngta không thể tạo thể hiện hay tạo đối tượng cho lớp trừu tượng này.Câu hỏi 3: Có phải khi tạo một lớp thì phải kế thừa từ một lớp nào không?Trả lời 3: Không nhất thiết như vậy, tuy nhiên trong C#, thì tất cả các lớp được tạo điều phảidẫn xuất từ lớp Object. Cho dù chúng có được khai báo tường minh hay không. Do đó Objectlà lớp gốc của tất cả các lớp được xây dựng trong C#. Một điều thú vị là các kiểu dữ liệu giátrị như kiểu nguyên, thực, ký tự cũng được dẫn xuất từ Object.Câu hỏi 4: Lớp lồng bên trong một lớp là như thế nào?Trả lời 4: Lớp lồng bên trong một lớp hay còn gọi là lớp nội được khai báo với từ khóainternal, chứa bên trong phạm vi của một lớp. Lớp nội có thể truy cập được các thành viênprivate của lớp mà nó chứa bên trongCâu hỏi 5: Có thể kế thừa từ một lớp cơ sở được viết trong ngôn ngữ khác ngôn ngữ C#?Trả lời 5: Được, một trong những đặc tính của .NET là các lớp có thể kế thừa từ các lớpđược viết từ ngôn ngữ khác. Do vậy, trong C# ta có thể kế thừa một lớp được viết từ ngônngữ khác của .NET. Và những ngôn ngữ khác cũng có thể kế thừa từ các lớp C# mà ta tạo ra.Câu hỏi thêmCâ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? 149 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C#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ớpdẫ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ộtlớ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ó đượckhô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ậpBà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ớpWindow 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ựatrê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 để chobiết tên của nó (như Xe_Toyota thì myName là “Toi la Toyota”...). Các đối tượng có phươngthứ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ốicù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 đốitượ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ớithiệ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ìnhchữ 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ẳn ...
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn tạo ra những kiểu dữ liệu mới bằng việc tạo ra các lớp đối tượng theo phương thức đa hình p6 Ngôn Ngữ Lập Trình C#public class Fraction{ public Fraction( int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } public override string ToString() { StringBuilder s = new StringBuilder(); s.AppendFormat(“{0}/{1}”,numerator, denominator); return s.ToString(); } internal class FractionArtist { public void Draw( Fraction f) { Console.WriteLine(“Drawing the numerator {0}”, f.numerator); Console.WriteLine(“Drawing the denominator {0}”, f.denominator); } } // biến thành viên private private int numerator; private int denominator;}public class Tester{ static void Main() { Fraction f1 = new Fraction( 3, 4); Console.WriteLine(“f1: {0}”, f1.ToString()); Fraction.FractionArtist fa = new Fraction.FractionArtist(); fa.Draw( f1 ); }}-----------------------------------------------------------------------------Lớp Fraction trên nói chung là không có gì thay đổi ngoại trừ việc thêm một lớp lồng bêntrong và lược đi một số phương thức không thích hợp trong ví dụ này. Lớp lồng bên trong 148 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C# chỉ cung cấp một phương thức thành viên duy nhất, phương thức Draw(). ĐiềuFractionArtistthú vị trong phương thức Draw() truy cập dữ liệu thành viên private là f.numerator vàf.denominator. Hai viến thành viên private này sẽ không cho phép truy cập nếuFractionArtist không phải là lớp lồng bên trong của lớp Fraction.Lưu ý là trong hàm Main() khi khai báo một thể hiện của lớp lồng bên trong, chúng ta phảixác nhận tên của lớp bên ngoài, tức là lớp Fraction: Fraction.FractionArtist fa = new Fraction.FractionArtist();Thậm chí khi lớp FractionArtist là public, thì phạm vị của lớp này vẫn nằm bên trong của lớpFraction.Câu hỏi và trả lờiCâu hỏi 1: Có cần thiết phải chỉ định từ khóa override trong phương thức phủ quyết của lớpdẫn xuất hay không?Trả lời 1: Có, chúng ta phải khai báo rõ ràng từ khóa override với phương thức phủ quyếtphương thức ảo (của lớp cơ sở ) bên trong lớp dẫn xuất.Câu hỏi 2: Lớp trừu tượng là thế nào? Có thể tạo đối tượng cho lớp trừu tượng hay không?Trả lời 2: Lớp trừu tượng không có sự thực thi, các phương thức của nó được tạo ra chỉ làhình thức, tức là chỉ có khai báo, do vậy phần định nghĩa bắt buộc phải được thực hiện ở cáclớp dẫn xuất từ lớp trừu tượng này. Do chỉ là lớp trừu tượng, không có sự thực thi nên chúngta không thể tạo thể hiện hay tạo đối tượng cho lớp trừu tượng này.Câu hỏi 3: Có phải khi tạo một lớp thì phải kế thừa từ một lớp nào không?Trả lời 3: Không nhất thiết như vậy, tuy nhiên trong C#, thì tất cả các lớp được tạo điều phảidẫn xuất từ lớp Object. Cho dù chúng có được khai báo tường minh hay không. Do đó Objectlà lớp gốc của tất cả các lớp được xây dựng trong C#. Một điều thú vị là các kiểu dữ liệu giátrị như kiểu nguyên, thực, ký tự cũng được dẫn xuất từ Object.Câu hỏi 4: Lớp lồng bên trong một lớp là như thế nào?Trả lời 4: Lớp lồng bên trong một lớp hay còn gọi là lớp nội được khai báo với từ khóainternal, chứa bên trong phạm vi của một lớp. Lớp nội có thể truy cập được các thành viênprivate của lớp mà nó chứa bên trongCâu hỏi 5: Có thể kế thừa từ một lớp cơ sở được viết trong ngôn ngữ khác ngôn ngữ C#?Trả lời 5: Được, một trong những đặc tính của .NET là các lớp có thể kế thừa từ các lớpđược viết từ ngôn ngữ khác. Do vậy, trong C# ta có thể kế thừa một lớp được viết từ ngônngữ khác của .NET. Và những ngôn ngữ khác cũng có thể kế thừa từ các lớp C# mà ta tạo ra.Câu hỏi thêmCâ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? 149 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C#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ớpdẫ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ộtlớ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ó đượckhô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ậpBà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ớpWindow 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ựatrê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 để chobiết tên của nó (như Xe_Toyota thì myName là “Toi la Toyota”...). Các đối tượng có phươngthứ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ốicù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 đốitượ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ớithiệ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ìnhchữ 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ẳn ...
Tìm kiếm theo từ khóa liên quan:
giáo trình đại học tài liệu mạng giáo trình cơ điện giáo trình thiết kế tài liệu kế toánGợi ý tài liệu liên quan:
-
Giáo trình phân tích một số loại nghiệp vụ mới trong kinh doanh ngân hàng quản lý ngân quỹ p5
7 trang 470 0 0 -
MARKETING VÀ QUÁ TRÌNH KIỂM TRA THỰC HIỆN MARKETING
6 trang 290 0 0 -
122 trang 208 0 0
-
QUY CHẾ THU THẬP, CẬP NHẬT SỬ DỤNG CƠ SỞ DỮ LIỆU DANH MỤC HÀNG HÓA BIỂU THUẾ
15 trang 197 1 0 -
BÀI GIẢNG KINH TẾ CHÍNH TRỊ MÁC - LÊNIN - TS. NGUYỄN VĂN LỊCH - 5
23 trang 194 0 0 -
Giáo trình chứng khoán cổ phiếu và thị trường (Hà Hưng Quốc Ph. D.) - 4
41 trang 188 0 0 -
Giáo trình hướng dẫn phân tích các thao tác cơ bản trong computer management p6
5 trang 184 0 0 -
BÀI GIẢNG LÝ THUYẾT MẠCH THS. NGUYỄN QUỐC DINH - 1
30 trang 166 0 0 -
Giáo trình phân tích giai đoạn tăng lãi suất và giá trị của tiền tệ theo thời gian tích lũy p10
5 trang 162 0 0 -
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - NGÂN HÀNG ĐỀ THI HẾT HỌC PHẦN HỌC PHẦN: TOÁN KINH TẾ
9 trang 160 0 0