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

Bài giảng Lập trình hướng đối tượng trong C #: Chương 5 - GV. Phạm Mạnh Cương

22 17 2

Đ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 22
Dung lượng 101,5 KB

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

Nội dung

Mục tiêu chính trong Bài giảng Lập trình hướng đối tượng trong C # Chương 5 Thiết kế và đa hình nhằm trình bày về thừa kế là gì? cài đặt thừa kế, nêu khái niệm đa hình.

Trang 1

CHƯƠNG 5

THỪA KẾ VÀ ĐA HÌNH

Trang 2

Nội dung chính

Trang 3

1 Thừa kế là gì?

phương thức của A, ngoại trừ các thành phần private

Trang 4

Một số kiểu thừa kế

Trang 8

public int x,y;

public void Xuat2D()

public static void Main() {

Point2D p2 = new Point2D(); p2.x = 1;

Trang 9

public int x,y;

//phuong thuc tao lap cua lop co so co tham so

public Point2D(int a, int b)

}

Trang 10

//Vi phuong thuc tao lap cua lop co so co tham so nen

//phuong thuc tao lap cua lop dan xuat cung phai co tham so

public Point3D(int a, int b, int c):base (a,b)

public static void Main() {

Point2D p2 = new Point2D(1, 2); Console.Write("Toa do cua diem 2

Trang 11

3 Đa hình

lớp A nhưng có thêm một số cài đặt riêng

của một kiểu mà không quan tâm đến chi tiết.

Trang 12

Tạo phương thức đa hình

 Tạo phương thức đa hình , ta cần đặt từ khoá virtual

trong phương thức của lớp cơ sở

 Ví dụ:

public virtual void DrawWindow( )

Trang 13

Tạo phương thức đa hình

 Trong lớp kế thừa để nạp chồng lại mã nguồn của lớp cơ sở ta dùng từ khoá

override khi khai báo phương thức và nội dung bên trong viết bình thường

 Ví dụ về nạp chồng phương thức DrawWindow:

public override void DrawWindow( )

{

base.DrawWindow( ); // gọi phương thức của lớp co sở

Console.WriteLine ("Writing string to the listbox: {0}“, listBoxContents);

}

Dùng hình thức đa hình phương thức này thì tuỳ kiểu khai báo của đối tượng nào thì nó dùng phương thức của lớp đó.

Trang 14

Tạo phiên bản với từ khoá new và override

trong lớp cơ sở nhưng ta không muốn nạp chồng lại phương thức virtual trong lớp cơ sở ta dùng từ khoá new

đánh dấu trước khi từ khoá virtual trong lớp kế thừa.

public class ListBox : Window

{

public new virtual void Sort( ) { }

Trang 15

Lớp trừu tượng

nó phải được cài đặt lại ở tất các các lớp kế thừa Lớp trừu tượng chỉ thiết lập một 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.

Cú pháp khai báo phương thức trừu tượng:

abstract public void TênPhươngThức( );

Trang 16

Ví dụ

Xây dựng lớp HinhHoc với phương thức tính chu vi,

diện tích là phương thức trừu tượng hoặc phương

thức ảo.

Sau đó định nghĩa các lớp HinhChuNhat (hình chữ nhật), HinhTron (hình tròn) kế thừa từ lớp HinhHọc

với các thành phần dữ liệu và phương thức tính chu

vi, diện tích cụ thể của từng loại đối tượng.

Trang 17

Ví dụ 1

// lop hinh hoc (truu tuong)

abstract public class HinhHoc

{

abstract public double DienTich();

virtual public double ChuVi()

{

return 0;

}

}

// lop hinh tron ke thua tu lop hinh hoc

public class HinhTron : HinhHoc {

double _bankinh;

public double BanKinh {

get{ return _bankinh;}

set{ _bankinh = value;}

}

public override double DienTich() {

return _bankinh*_bankinh*3.1416; }

public override double ChuVi() {

return _bankinh*2*3.1416;

}

}

Trang 18

Ví dụ 1(tt)

// lop hinh chu nhat ke thua tu lop hinh hoc

public class HinhChuNhat : HinhHoc

{

double _dai, _rong;

public double ChieuDai

{

get{ return _dai;}

set{ _dai = value;}

}

public double ChieuRong

{

get{ return _rong;}

set{ _rong = value;}

static void Main(string[] args) {

Trang 19

// constructor takes two integers to

// fix location on the console

public Window(int top, int left)

abstract public void DrawWindow( );

// these members are private and thus invisible

// to derived class methods We'll examine this

// later in the chapter

protected int top;

protected int left;

}

// ListBox derives from Window public class ListBox : Window {

// constructor adds a parameter public ListBox(int top, int left, string contents):

base(top, left) // call base constructor {

listBoxContents = contents;

} // an overridden version implementing the // abstract method

public override void DrawWindow( ) {

Console.WriteLine("Writing string to the listbox: {0}“, listBoxContents);

} private string listBoxContents;

// new member variable

}

Trang 20

// implement the abstract method

public override void DrawWindow( )

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

} } }

Trang 21

Chú ý

Phân biệt giữa từ khóa new và override

(virtual) hoặc phương thức trừu tượng (abstract) của lớp cơ sở,

nó được dùng với mục đích đa hình.

thành viên của lớp dẫn xuất

– Khi cần viết lại một phương thức trong lớp kế thừa mà đã có trong lớp cơ sở, nhưng ta không muốn nạp chồng lại phương thức

khoá virtual trong lớp kế thừa.

Trang 22

Giới hạn của lớp trừu tượng

Ví dụ trên, phương thức trừu tượng DrawWindow() của lớp trừu tượng Window được lớp ListBox kế

thừa

Như vậy, các lớp sau này kế thừa từ lớp ListBox đều phải thực hiện lại phương thức DrawWindow(), đây

là điểm giới hạn của lớp trừu tượng

 Hơn nữa, như thế sau này không bao giờ ta tạo

được lớp Window đúng nghĩa Do vậy, nên chuyển

lớp trừu tượng thành giao diện trừu tượng.

Ngày đăng: 11/05/2021, 02:23

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm