Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
191,23 KB
Nội dung
1 Tính Đa Hình Môn Lập Trình Hướng Đối Tượng – Chương Nguyễn Minh Thành [M] : Thanhnm@itc.edu.vn Nội Dung Tính Đa Hình Lớp Trừu Tượng Đặt vấn đề • Một Vườn bách thú cần quản lý loại vật nuôi : mèo, chó, chuột, khỉ… • Chương trình xây dựng lớp sở Động vật Các lớp lại Mèo,Chó, Khỉ… kế thừa từ lớp động vật • Yêu cầu : ▫ Làm để lưu danh sách bao gồm nhiều loài vật dùng lúc mảng liệu ? ▫ Làm gọi phương thức Lấy Tuổi Thọ lớp sở tương ứng ? Định Nghĩa Tính Đa Hình • Tính đa hình khả để sử dụng chung giao diện cho nhiều nội dung cài đặt khác dựa vào phương thức ảo (virtual) chế kết nối trễ (late binding) • Nói cách khác, chế cho phép gởi loại thông điệp tới nhiều đối tượng khác mà đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng chúng 5 Định Nghĩa Tính Đa Hình • Tính đa hình khả để sử dụng chung giao diện cho nhiều nội dung cài đặt khác dựa vào phương thức ảo (virtual) chế kết nối trễ (late binding) • Nói cách khác, chế cho phép gởi loại thông điệp tới nhiều đối tượng khác mà đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng chúng 6 Ví dụ • Nhận xét đoạn code sau static void Main() { AnPham a = new AnPham(); a.LayRa(); TapChi t = new TapChi(); t.LayRa(); a = t; a.LayRa(); } Ví dụ Class Animal { //Định nghĩa Dữ liệu public Animal() { } public virtual void Speak() { Console.Write(‘Animal’); } } Class Cat : Animal { //Định nghĩa Dữ liệu public Cat() { } public override void Speak() { Console.Write(‘Meoooo’); } } Ví dụ Class Dog : Animal { //Định nghĩa Dữ liệu public Dog() { } public virtual void Speak() { Console.Write(‘Gooooo’); } } Class Bear : Animal { //Định nghĩa Dữ liệu public Bear() { } public override void Speak() { Console.Write(‘Gruuuuuud’); } } Ví dụ static void Main() { Animal a = new Cat(); // ????? a.Speak(); //?????? } 10 Ví dụ static void Main() { Animal[] a = new Animal[3]; a[0] = new Cat(); a[1] = new Dog(); a[2] = new Bear(); for(int i=0;i[...]... ListBox(1,2,"First List Box"); winArray[1] = new ListBox(3,4,"Second List Box"); winArray[2] = new Button(5,6); for (int i = 0;i < 3; i++) { winArray[i].DrawWindow( ); } } } 14 FAQs 15 Hết chương 7 Môn Lập Trình Hướng Đối Tượng ...11 Lớp trừu tượng • Lớp trừu tượng là lớp không cần cài đặt bất kì một phương thức nào • Lớp trừu tượng làm cơ sở cho các lớp kế thừa mà nó không thể có bất kỳ một thể hiện nào tồn tại • Lớp trừu tượng chứa các phương thức trừu tượng abstract class COSO { protected kiểu data1; protected kiểu data2; public abstract void... left, string contents) : base(top, left) { listBoxContents = contents; } public override void DrawWindow( ) { Console.WriteLine("Writing string to the listbox: {0}", listBoxContents); } } 13 Lớp trừu tượng (tt) public class Button : Window { public Button( int top, int left): base(top, left) {} public override void DrawWindow( ) { Console.WriteLine("Drawing a button at {0}, {1}\n", top, left); } }... data2; public abstract void Method1(); public abstract void Method2(); } class DANXUAT : COSO { private kiểu data3; public override void Method1() {…} public override void Method2() {…} } 12 Lớp trừu tượng (tt) abstract class Window { protected int top, left; public Window(int top, int left) { this.top = top; this.left = left; } abstract public void DrawWindow( ); } class ListBox : W indow { private ... Button(5,6); for (int i = 0;i < 3; i++) { winArray[i].DrawWindow( ); } } } 14 FAQs 15 Hết chương Môn Lập Trình Hướng Đối Tượng ... //?????? } 11 Lớp trừu tượng • Lớp trừu tượng lớp không cần cài đặt phương thức • Lớp trừu tượng làm sở cho lớp kế thừa mà có thể tồn • Lớp trừu tượng chứa phương thức trừu tượng abstract class... kết nối trễ (late binding) • Nói cách khác, chế cho phép gởi loại thông điệp tới nhiều đối tượng khác mà đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng chúng 5 Định Nghĩa Tính Đa Hình