intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Chương 7 - Nguyễn Minh Thành

Chia sẻ: Fczxxv Fczxxv | Ngày: | Loại File: PDF | Số trang:15

70
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình hướng đối tượng: Chương 7 Tính đa hình nhằm trình bày về tính đa hình và lớp trừa tượng, tính đa hình là khả năng để sử dụng chung 1 giao diện cho nhiều nội dung cài đặt khác nhau dựa vào phương thức ảo (virtual) và cơ chế kết nối trễ (late binding).

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 7 - Nguyễn Minh Thành

  1. 1 Tính Đa Hình Môn Lập Trình Hướng Đối Tượng – Chương 7 Nguyễn Minh Thành [M] : Thanhnm@itc.edu.vn
  2. 2 Nội Dung 1. Tính Đa Hình 2. Lớp Trừu Tượng
  3. 3 Đặt vấn đề • Một Vườn bách thú cần quản lý các loại vật nuôi : mèo, chó, chuột, khỉ… • Chương trình xây dựng một lớp cơ sở là Động vật. Các lớp còn lại là Mèo,Chó, Khỉ… kế thừa từ lớp động vật. • Yêu cầu : ▫ Làm sao để lưu danh sách bao gồm nhiều loài vật dùng lúc trên 1 mảng dữ liệu ? ▫ Làm sao gọi phương thức Lấy Tuổi Thọ của đúng lớp cơ sở tương ứng ?
  4. 4 Định Nghĩa Tính Đa Hình • Tính đa hình là khả năng để sử dụng chung 1 giao diện cho nhiều nội dung cài đặt khác nhau dựa vào phương thức ảo (virtual) và cơ chế kết nối trễ (late binding). • Nói cách khác, đây là cơ chế cho phép gởi một loại thông điệp tới nhiều đối tượng khác nhau mà mỗi đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng của chúng.
  5. 5 Định Nghĩa Tính Đa Hình • Tính đa hình là khả năng để sử dụng chung 1 giao diện cho nhiều nội dung cài đặt khác nhau dựa vào phương thức ảo (virtual) và cơ chế kết nối trễ (late binding). • Nói cách khác, đây là cơ chế cho phép gởi một loại thông điệp tới nhiều đối tượng khác nhau mà mỗi đối tượng lại có cách xử lý riêng theo ngữ cảnh tương ứng của chúng.
  6. 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(); }
  7. 7 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’); } }
  8. 8 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’); } }
  9. 9 Ví dụ static void Main() { Animal a = new Cat(); // ????? a.Speak(); //?????? }
  10. 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
  11. 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 class DANXUAT : COSO { { protected kiểu data1; private kiểu data3; protected kiểu data2; public override void Method1() public abstract void {…} Method1(); public override void Method2() public abstract void {…} Method2(); } }
  12. 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 string listBoxContents; public ListBox(int top, int left, string contents) : base(top, left) { listBoxContents = contents; } public override void DrawWindow( ) { Console.WriteLine("Writing string to the listbox: {0}", listBoxContents); } }
  13. 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); } } public class Tester { static void Main( ) { Window[] winArray = new Window[3]; winArray[0] = new 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. 14 FAQs
  15. 15 Hết chương 7 Môn Lập Trình Hướng Đối Tượng
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2