Bài giảng Cơ sở lập trình máy tính Chương 4 Kế thừa – Đa hình nhằm trình bày về thiết kế đối tượng, kế thừa và đa hình, lợi thế của lập trình hướng đối tượng, định nghĩa và ví dụ về kế thừa, mối quan hệ tổng quát hóa và chuyên biệt hóa.
Trang 1Kế thừa – Đa hình Chương 4:
Giảng viên: Ths Nguyễn Thị Khiêm Hòa
Trang 2Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Nội dung
Thiết kế đối tượng
Kế thừa
Đa hình
Trang 3Lợi thế của lập trình hướng đối tượng
Lấy đối tượng làm trung tâm
Không lệ thuộc thứ tự thuật toán
Linh hoạt Tái sử dụng
Che giấu dữ liệu
Trang 4Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Tại sao phải kế thừa
Dung lượng lưu trữ lớn
Thay đổi phần chung khó khăn
Trang 5Khái niệm kế thừa
Định nghĩa lớp mới dựa trên những lớp đã có
Lớp cơ sở: lớp dùng để định nghĩa lớp mới
Lớp dẫn xuất: lớp được định nghĩa từ lớp đã có
Lớp dẫn xuất thừa hưởng TẤT CẢ từ lớp cơ sở
Trang 6Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Trang 7Ví dụ kế thừa
class GiaoVien
{ protected string Hotengv;
protected double luonggv;
protected int gvnghi;
public GiaoVien(string HoTen,double Luong, int nn) { Hotengv = HoTen;
luonggv = luong;
gvnghi = nn;
}
public void giangDay(){}
public double tinhLuong(){}
}
Trang 8Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Ví dụ kế thừa
class GVCN : GiaoVien
{ private string LopCN;
public GVCN(string HoTen, double luong,int nn, string lop): base(HoTen, luong, nn)
Trang 9Mối quan hệ tổng quát hóa và chuyên biệt hóa
Kế thừa là mối quan hệ đặc biệt
Các lớp dẫn xuất kế thừa các thuộc tính và phương
thức của lớp cơ sở và cho phép tái sử dụng các
đoạn code
Các lớp dẫn xuất là thành phần chuyên biệt hóa
Trang 10Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Gọi Constructor của lớp cơ sở
Từ khóa base được dùng trong lớp dẫn xuất để gọi constructor của lớp cơ sở
public class Animal
{ protected string _name;
public Animal(string name)
Trang 11Bài tập
Xây dựng lớp tài khoản thẻ, kế thừa lớp tài khoản
Thực hiện
Trang 12Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Định nghĩa lại phương thức
Kế thừa một phần:
Không kế thừa “máy móc” tất cả
Lớp dẫn xuất có thể thay đổi những gì đã kế thừa
Định nghĩa lại phương thức đã kế thừa
Trang 13Đa hình
Đa hình
Xây dựng phương thức ảo
Gọi lớp cơ sở từ lớp dẫn xuất
Phương thức trừu tượng (abstract)
Trang 14Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Eat ()
Eat ()
Eat ()
Trang 15Xây dựng phương thức ảo
Phương thức ảo (Virtual) là việc định nghĩa lại
(Override) một phương thức của lớp cơ sở trong
Trang 16Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Xây dựng phương thức ảo
public class Animal
{ public virtual string Eat()
Trang 17Sử dụng thành phần của lớp cơ sở trong lớp dẫn xuất
Trang 18Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Lớp và phương thức trừu tượng (Abstract)
Lớp trừu tượng là một lớp cơ sở khái quát
Chứa các phương thức trừu tượng được thực hiện trong lớp dẫn xuất
Có thể chứa các thành phần không trừu tượng (non-abstract)
Phương thức trừu tượng không thực hiện trong lớp cơ sở
Trang 19Lớp và phương thức trừu tượng (Abstract)
public abstract class Animal
Trang 20Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Bài tập
Xây dựng lớp Animal là lớp trừu tượng, và định nghĩa lại trong các lớp dẫn xuất các phương thức này
Thực hiện
1 hour
Trang 21Bài tập
Xây dựng các lớp đối tượng liên quan tài khoản ngân hàng (Bank Account)
Thực hiện
Trang 22Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM
Xây dựng Sealed Class
Sealed class không cho phép kế thừa
public sealed class MyClass {
// class members
}
Trang 23Q & A