1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng lập trình hướng đối tượng chương 4 đa hình

17 208 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 819,3 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đa hình polymorphism Là 1 đặc điểm chính của pp lthđt  Đa hình cho phép 1 đối tượng sẽ thể hiện đúng hành vi tính chất của đối tượng mà nó trỏ gán đến  Cụ thể khi ta gán 1 đối tượng x

Trang 1

LẬP TRÌNH

HƯỚNG ĐỐI TƯỢNG

Trang 2

Chương 4

Đa hình

polymorphism

Trang 3

Đa hình (polymorphism)

 Là 1 đặc điểm chính của pp lthđt

 Đa hình cho phép 1 đối tượng sẽ thể hiện đúng hành vi tính chất của đối tượng mà nó trỏ (gán) đến

 Cụ thể khi ta gán 1 đối tượng x của lớp cha bằng đối tượng y của lớp con thì đối tượng x phải thể hiện hành vi tính chất của đối tượng y

Trang 4

Ví dụ

 Lớp động vật có phương thức kêu (xuất ra dòng

chữ “aaa”)

 Lớp mèo kế thừa từ lớp động vật, cũng có phương thức kêu (xuất ra dòng chữ “meo meo”)

 Khi ta khai báo động vật là một con mèo thì nó phải kêu meo meo

 Dv1 là instance của động vật

 M1 là instance của mèo

 Dv1=M1

 khi gọi Dv1.keu() kết quả như thế nào?

Trang 5

Cài đặt Đa hình

 Các phương thức của lớp con có cùng tên với phương thức của lớp cha thì khi cài đặt đa hình ta thực hiện

– Thêm từ khoá virtual vào trước khai báo phương thức của lớp cha

– Thêm từ khoá override vào trước khai

báo phương thức trùng tên của lớp con

Trang 6

Ghi chú

 virtual: hàm ảo

 override: hàm che (dùng để che hàm

ảo của lớp cha và thực hiện hàm che trước)

Trang 7

public class DONGVAT

{

string ten;

int cannang;

public DONGVAT()

{

ten="";

cannang=0;

}

public DONGVAT(string ten,int cannang)

{

this.ten=ten;

this.cannang=cannang;

}

virtual public void keu() //ảo

{

Console.Write("\n AAA!!!");

}

virtual public void xuat()

{

Console.Write("\nTen: "+ten+"\nCan nang: "+cannang+" Kg"); }

}

Trang 8

class MEO:DONGVAT

{

string maulong;

public MEO():base()

{

maulong = "";

}

public MEO(string ten, int cannang, string maulong): base(ten, cannang) {

this.maulong = maulong;

}

override public void keu()

{

Console.Write("\n MEO MEO!!!");

}

override public void xuat()

{

base.xuat();

Console.Write("\n mau long:{0}", maulong);

}

}

Trang 9

class CHO:DONGVAT

{

string maulong;

public CHO ():base()

{

maulong = "";

}

public CHO (string ten, int cannang, string maulong): base(ten, cannang) {

this.maulong = maulong;

}

override public void keu()

{

Console.Write("\n GAU GAU!!!");

}

override public void xuat()

{

base.xuat();

Console.Write("\n mau long:{0}", maulong);

}

}

Trang 10

class Program

{

static void Main(string[] args) {

DONGVAT[] dv = new DONGVAT[3];//mang 3 dong vat dv[0] = new DONGVAT();

dv[0].keu();

dv[1] = new CHO("Lulu",15,"vang");

dv[1].keu();

dv[2] = new MEO("Doremon",3,"xanh");

dv[2].keu();

}

}

Trang 11

Lớp object

 gốc của tất cả các lớp

 Override Tostring()

Trang 12

Lớp sealed

 Không cho kế thừa

Trang 13

Lớp lồng

 Là lớp nằm trong 1 lớp khác nhằm hỗ trợ cục bộ lớp chứa nó

Trang 14

public class Fraction

{

private int numerator; // biến thành viên private

private int denominator;

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); }

}

}

Trang 15

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 );

}

}

Trang 16

Hàm trừu tượng

Lớp trừu tượng(Abstract)

 Hàm trừu tượng là hàm không có sự thực thi

– Khai báo abstract kieu tenham() ;

– Ví dụ hàm keu() của lớp động vật không thực thi,

– abstract void keu() ;

 Lớp trừu tượng là lớp không có đối tượng cụ thể,

nó dùng để cho các lớp khác kế thừa nó

 Ví dụ

– Lớp chó, lớp mèo … kế thừa lớp động vật

– Lớp tam giác, hình tròn… kế thừa từ lớp hình học

 Lớp trừu tượng chứa ít nhất một hàm trừu tượng

 Khai báo lớp trừu tượng bằng cách thêm từ khoá abstract vào trước tên lớp

Trang 17

Ví dụ sv tự cài đặt

 lớp động vật là lớp trừu tượng có hàm trừu tượng keu();

 Lớp chó, mèo: kế thừa từ lớp động vật

 Lớp hình học là lớp trừu tượng có hàm trừu tượng: tinhdientich();, tinhchuvi();

 Lớp tam giác, hình chữ nhật kế thừa từ lớp hình học…

Ngày đăng: 03/12/2015, 22:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN