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 6 Trường Đại học Ngoại ngữ Tin học

45 286 1

Đ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 45
Dung lượng 764,17 KB

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

Nội dung

Bài giảng Lập trình hướng đối tượng Chương 6 Đa hình cung cấp cho người học các kiến thức Khái niệm Đa hình, các bước xây dựng chương trình có tính đa hình, từ khóa ‘base’, phương thức trừu tượng (abstract method), từ khóa ‘new’ với phương thức.

Trang 1

Click to edit Master subtitle style

ĐA HÌNH

Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM

CHƯƠNG 6:

Trang 2

Khái niệm Đa hình

Các bước xây dựng chương trình có tính đa hình

Từ khóa ‘base

Phương thức trừu tượng (abstract method)

NỘI DUNG

Trang 3

Đóng gói (Encapsulation ) và Giao diện ( Interface )

Ẩn chi tiết của lớp (Đóng gói), chỉ cung cấp các phương

thức cần thiết để dùng (Giao diện)

Thừa kế (Inheritance )

Tạo lớp mới thừa kế lớp đã có

Đa hình (Polymorphism )

Khả năng tạo ra các lớp dẫn xuất, cài đặt cùng một method

của lớp cơ sở theo những cách khác nhau (tùy từng lớp

dẫn xuất)

3 nguyên tắc lập trình hướng đối tượng

Trang 4

KHÁI NIỆM ĐA HÌNH

Trang 5

Đa hình ( poly morphism)

poly = many morphism = forms

Đa hình là hiện tượng các đối tượng thuộc các lớp

theo các cách khác nhau hoặc nhiều kiểu tồn tại của một đối tượng

Trang 6

Khái niệm Đa hình

LandRover object

LandRover object

Ford object

Ford object

Honda object

Honda object

Move

LandRover dùng 2.0 L engine

để move

Ford dùng V engine để move

Honda dùng i-vtec để move

Trang 7

Khái niệm Đa hình

• Đa hình phương thức: Cùng một phương thức có

thể được thực hiện khác nhau trên các loại đối tượng khác nhau

 Cùng nguyên mẫu phương thức cho các lớp

khác nhau: overriding phương thức

• Đa hình đối tượng: nhìn nhận đối tượng theo nhiều

kiểu khác nhau

Trang 8

Phân biệt Overloading vs Overriding?

Overloading (nạp chồng) phương thức: giữ tên

và giá trị trả về, chỉ thay đổi đối số

Overriding (ghi đè) phương thức: giữ nguyên tên, giá trị trả về và đối số (không thay đổi nguyên mẫu phương thức)

Trang 9

Đa hình phương thức

Các lớp dẫn xuất cài đặt cùng một phương thức của lớp cơ sở, nhưng mỗi lớp dẫn xuất có cách cài đặt khác nhau

Trang 10

Nhờ đặc tính của thừa kế giúp:

Tạo lớp mới dựa trên lớp đã có (lớp cơ sở), thừa hưởng những gì lớp cơ sở có

Thêm một số Field và Method mới vào lớp mới

Cài đặt lại phương thức đã được lớp cơ sở cung cấp

Trang 11

CÁC BƯỚC XÂY DỰNG

TÍNH ĐA HÌNH

Trang 12

Các bước xây dựng tính đa hình

Trang 13

Lớp cơ sở : Lớp Car

Các bước xây dựng tính đa hình

public class Car {

public virtual void Move() {

Console.WriteLine("Car: Move");

} }

Trang 15

Lớp dẫn xuất: có thể cung cấp một cách cài

đặt khác của phương thức ở lớp cơ sở

Các bước xây dựng tính đa hình

Trang 16

Để cài đặt lại phương thức

Tạo một hàm giống như lớp cơ sở (copy) Thêm từ khóa override trước phương thức

Các bước xây dựng tính đa hình

public class LandRover : Car

Trang 17

Nếu trong lớp cơ sở không có từ khóa virtual

trước phương thức chúng ta muốn override, thì

virtual: “tôi cho phép bạn làm gì khác với phương thức này”

override: “bạn cho phép tôi, tôi sẽ làm một số

điều khác biệt với nó”

Các bước xây dựng tính đa hình

Trang 18

Chú ý:

Chúng ta không phải bắt buộc phải override các phương thức lớp cơ sở

Nếu không override thì sao?

Các bước xây dựng tính đa hình

Trang 19

Các bước xây dựng tính đa hình

public class Ford : Car

Console.WriteLine(“Move: Honda (i-vtec)"); }

}

Trang 20

Lớp LandRover, Ford, Honda thừa kế từ lớp Car

nên có thể dùng như lớp Car

Các bước xây dựng tính đa hình

Car car1 = new Car ();

Car car2 = new LandRover ();

Car car3 = new Ford ();

Car car4 = new Honda ();

Trang 21

Chúng ta có thể gọi phương thức Move() Tùy

được gọi

Gọi cùng phương thức (cùng signature) các

phương thức khác nhau được chạy

Các bước xây dựng tính đa hình

Move: Honda (i-vtec) Press any key to continue

Trang 22

Từ khóa ‘base’:

Truy cập các constructor của lớp cơ sở (đã học)

Truy cập các thành viên không private từ lớp cơ sở

cập thành viên lớp cơ sở

Xem lại từ khóa ‘base’

Trang 23

Khi override phương thức, chúng ta có thể dùng base để truy cập phiên bản gốc của method này

Xem lại từ khóa ‘base’

public override void Move()

{

base.Move();

Console.WriteLine("Move: LandRover (2.0 L engine)");

}

Trang 25

PHƯƠNG THỨC TRỪU TƯỢNG

(ABSTRACT METHOD)

Trang 26

Loại bỏ những thông tin cụ thể, giữ lại các thông tin chung

Mức độ trừu tượng hoá được thể hiện trên cây

kế thừa

Trừu tượng là gì?

Trang 27

Mức độ trừu tượng càng cao  thông tin chung

và phương thức chung càng tổng quát

Có thể tồn tại những phương thức không thể xác định thực hiện như thế nào

Ví dụ:

Lớp Hình chữ nhật, Hình tam giác, Hình tròn có thể trừu tượng thành Lớp Hình học nói chung

 Muốn tính diện tích cho một Hình học?

Vấn đề trừu tượng

Trang 28

Khi một phương thức trong lớp cơ sở không làm gì cả, viết hàm này như thế nào?

Cung cấp cài đặt giả cho phương thức (dummy implementation)

Không cài đặt phương thức (dùng từ khóa abstract)

• Thêm từ khóa abstract trước lớp

• Thêm từ khóa abstract trước phương thức không cài đặt

Abstract method

abstract public class Car

{

Trang 29

Lớp có chứa phương thức abstract thì bắt buộc phải

khai báo lớp đó là lớp abstract

Khi lớp là abstract, thì không thể tạo đối tượng (chúng

ta cần tạo đối tượng của các lớp dẫn xuất không trừu tượng)

Abstract method

Car car1 = new Car(); // error

Car car2 = new LandRover();

Car car3 = new Ford();

Car car4 = new Honda();

Trang 30

Lớp trừu tượng có thể có các virtual method,

method thông thường khác

method, chúng ta vẫn dùng từ khóa ‘override

override:

override cho virtual method

Abstract method

Trang 31

Lớp HinhTron (hình tròn) gồm các thông tin:

Bán kính

Lớp HinhChuNhat(hình chữ nhật) gồm các

thông tin:

Chiều ngang Chiều đứng

Hãy sử dụng kỹ thuật kế thừa và đa hình để viết chương trình cho phép nhập thông tin của đối tượng hình tròn và hình chữ nhật Sau đó tính

và in thông tin diện tích của mỗi hình

Bài tập ví dụ

Trang 32

Xác định lớp và thông tin của lớp

Lớp HinhTron

Thuộc tính: r (bán kính), s (diện tích) Phương thức: Nhap (nhập thông tin), TinhDienTich (tính diện tích)

Trang 33

Áp dụng kỹ thuật kế thừa  Xác định các điểm chung của các lớp

Trang 34

Tạo lớp mới từ những điểm chung này

Trang 35

Sơ đồ lớp

Bài tập ví dụ …

Trang 36

public abstract void Nhap();

public abstract void TinhDienTich();

}

Trang 37

//và property get, set tại đây

public override void Nhap()

Trang 38

//và property get, set tại đây

public override void Nhap()

Trang 39

Có 3 trường hợp cùng chung phương thức giữa lớp cơ sở và lớp dẫn xuất trong kế thừa:

TH1: Chung hoàn toàn cách thức cài đặt

Chỉ cài đặt phương thức này ở lớp cơ sở

TH2: Chung một phần cách thức cài đặt

Lớp cơ sở (virtual) – Lớp dẫn xuất (override)

TH3: Chỉ chung nguyên mẫu phương thức nhưng khác cách thức cài đặt

Lớp cơ sở (abstract) – Lớp dẫn xuất (override)

!!! Trường hợp này lớp cơ sở chuyển sang lớp abstract

Cú pháp phương thức chung

Trang 40

Thiết kế chương trình quản lý danh sách các hình

học, gồm các loại hình sau:

Hình chữ nhật: chiều ngang và chiều đứng

Hình tròn: bán kính

Hình tam giác: chiều dài 3 cạnh a, b và c

Chức năng: cho phép nhập, xuất danh sách các hình trong một mảng một chiều Cho biết số lượng và hình có diện tích lớn nhất của từng loại

Bài tập

Trang 41

TỪ KHÓA NEW VỚI PHƯƠNG THỨC

Trang 42

Chúng ta có thể đặt từ khóa ‘new’ trước

phương thức

Ý nghĩa: “Tôi là phương thức mới trong lớp dẫn

xuất, hoàn toàn không có liên quan gì đến

Từ khóa ‘new’ với phương thức

public class LandRover : Car {

{ Console.WriteLine(“Move: LandRover (2.0 L engine)");

} }

Trang 44

Đa hình nghĩa là chúng ta có thể tạo các lớp dẫn xuất cài đặt cùng một phương thức như trong lớp cơ sở nhưng theo những cách khác nhau

Phương thức trong lớp cơ sở được đánh dấu

ĐIỂM CHÍNH

Trang 45

Lớp được đánh dấu abstract

Không thể dùng để tạo đối tượng Phương thức đánh dấu abstract

• Không có cài đặt

• Lớp dẫn xuất phải cài đặt

Đây là phương thức mới Phương thức này không liên quan đến phương thức cùng tên trong lớp cơ sở

ĐIỂM CHÍNH

Ngày đăng: 15/05/2017, 10:22

HÌNH ẢNH LIÊN QUAN

Sơ đồ lớp - Bài giảng Lập trình hướng đối tượng Chương 6  Trường Đại học Ngoại ngữ  Tin học
Sơ đồ l ớp (Trang 35)
Hình chữ nhật: chiều ngang và chiều đứng - Bài giảng Lập trình hướng đối tượng Chương 6  Trường Đại học Ngoại ngữ  Tin học
Hình ch ữ nhật: chiều ngang và chiều đứng (Trang 40)

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