Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

54 14 0
Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

Đ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

Mục tiêu của bài học này nhằm giúp: Giải thích về khái niệm tái sử dụng mã nguồn, chỉ ra được bản chất, mô tả các khái niệm liên quan đến đến kết tập và kế thừa, so sánh kết tập và kế thừa, biểu diễn được kết tập và kế thừa trên UML,... Mời các bạn cùng tham khảo bài giảng để biết thêm nội dung chi tiết.

.c om ng th an co ng Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội cu u du o LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 06 Kết tập kế thừa CuuDuongThanCong.com https://fb.com/tailieudientucntt th cu u ◼ ng ◼ du o ◼ an co ◼ Giải thích khái niệm tái sử dụng mã nguồn Chỉ chất, mô tả khái niệm liên quan đến đến kết tập kế thừa So sánh kết tập kế thừa Biểu diễn kết tập kế thừa UML Giải thích nguyên lý kế thừa thứ tự khởi tạo, hủy bỏ đối tượng kế thừa Áp dụng kỹ thuật, nguyên lý kết tập kết thừa ngơn ngữ lập trình Java ng ◼ c om Mục tiêu học ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt ng co an th ng du o u Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập cu .c om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt ng co an th ng du o u Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập cu .c om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt co ng Tái sử dụng mã nguồn: Sử dụng lại mã nguồn viết an Lập trình cấu trúc: Tái sử dụng hàm/chương trình OOP: Khi mơ hình giới thực, tồn nhiều loại đối tượng có thuộc tính hành vi tương tự liên quan đến → Làm để tái sử dụng lớp viết? du o u ◼ ng th ◼ cu ◼ c om Tái sử dụng mã nguồn (Re-usability) ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt Các cách sử dụng lại lớp có: ng Sao chép lớp cũ thành lớp khác → Dư thừa khó quản lý có thay đởi Tạo lớp mới tập hợp sử dụng đối tượng lớp cũ có → Kết tập (Aggregation) Tạo lớp mới sở phát triển từ lớp cũ có → Kế thừa (Inheritance) u ◼ du o ng th ◼ an co ◼ cu ◼ c om Tái sử dụng mã nguồn (2) CuuDuongThanCong.com https://fb.com/tailieudientucntt th u cu ◼ du o ng ◼ an co ◼ Giảm thiểu cơng sức, chi phí Nâng cao chất lượng phần mềm Nâng cao khả mơ hình hóa giới thực Nâng cao khả bảo trì (maintainability) ng ◼ c om Ưu điểm tái sử dụng mã nguồn CuuDuongThanCong.com https://fb.com/tailieudientucntt ng co an th ng du o u Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập cu .c om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ: ng Quan hệ chứa/có ("hasa") phần (is-a-part-of) du o ◼ th Kết tập u ◼ Tứ giác gồm điểm → Kết tập co ◼ ng Điểm an ◼ cu ◼ c om Kết tập CuuDuongThanCong.com https://fb.com/tailieudientucntt Kết tập (aggregation) Tạo đối tượng lớp có sẵn lớp mới → thành viên lớp mới Kết tập tái sử dụng thông qua đối tượng ◼ Lớp cũ ◼ du o Lớp toàn thể (Aggregate/Whole), u ◼ ng Lớp mới cu ◼ th ◼ an co ◼ ng ◼ c om 2.1 Bản chất kết tập Lớp thành phần (Part) 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ (tiếp) cu u du o ng th an co ng c om public class Test { public static void main(String args[]){ Employee e = new Employee(); e.setName("John"); e.setSalary(3.0); } } 40 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ví dụ – Cùng gói cu u du o ng th an co ng public class Person { Date birthday; String name; } public class Employee extends Person { public String getDetail() { String s; String s = name + "," + birthday; s += ", " + salary; return s; } } CuuDuongThanCong.com 41 https://fb.com/tailieudientucntt .c om Ví dụ – Khác gói th an co ng package abc; public class Person { protected Date birthday; protected String name; } cu u du o ng import abc.Person; public class Employee extends Person { public String getDetail() { String s; s = name + "," + birthday + "," + salary; return s; } } CuuDuongThanCong.com 42 https://fb.com/tailieudientucntt Khởi tạo đối tượng: ◼ du o u ◼ Tự động gọi (không tường minh - implicit): Khi lớp cha CÓ phương thức khởi tạo mặc định Gọi trực tiếp (tường minh - explicit) cu ◼ ng th an ◼ Lớp cha khởi tạo trước lớp Các phương thức khởi tạo lớp gọi phương thức khởi tạo lớp cha câu lệnh ng ◼ co ◼ c om 3.4 Khởi tạo huỷ bỏ đối tượng Hủy bỏ đối tượng: ◼ Ngược lại so với khởi tạo đối tượng 43 CuuDuongThanCong.com https://fb.com/tailieudientucntt public class Test { public static void main(String arg[]) { HinhVuong hv = new HinhVuong(); } } cu u du o ng th an co ng public class TuGiac { protected Diem d1, d2; protected Diem d3, d4; public TuGiac(){ System.out.println ("Lop cha TuGiac()"); } //… } public class HinhVuong extends TuGiac { public HinhVuong(){ //Tu dong goi TuGiac() System.out.println ("Lop HinhVuong()"); } } c om 3.4.1 Tự động gọi constructor lớp cha CuuDuongThanCong.com 44 https://fb.com/tailieudientucntt co ng Câu lệnh phương thức khởi tạo lớp gọi phương thức khởi tạo lớp cha an th ng Điều bắt buộc lớp cha phương thức khởi tạo mặc định ◼ du o ◼ super(Danh_sach_tham_so); Đã viết phương thức khởi tạo lớp cha với số tham số Phương thức khởi tạo lớp khơng bắt buộc phải có tham số u ◼ cu ◼ c om 3.4.2 Gọi trực tiếp constructor lớp cha ◼ 45 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ public class Test { public static void main(String arg[]) { HinhVuong hv = new cu u du o ng th an co ng c om public class TuGiac { protected Diem d1, d2; protected Diem d3, d4; public TuGiac(Diem d1, Diem d2, Diem d3, Diem d4){ System.out.println("Lop cha TuGiac(d1, d2, d3, d4)"); HinhVuong(); this.d1 = d1; this.d2 = d2; } this.d3 = d3; this.d4 = d4; } } Lỗi } public class HinhVuong extends TuGiac { public HinhVuong(){ System.out.println ("Lop HinhVuong()"); } CuuDuongThanCong.com https://fb.com/tailieudientucntt 46 Gọi trực tiếp constructor lớp cha Phương thức khởi tạo lớp KHÔNG tham số cu u du o ng th an co ng c om public class TuGiac { protected Diem d1,d2,d3,d4; HinhVuong hv = new public TuGiac(Diem d1, Diem d2, HinhVuong(); Diem d3, Diem d4){ System.out.println("Lop cha TuGiac(d1, d2, d3, d4)"); this.d1 = d1; this.d2 = d2; this.d3 = d3; this.d4 = d4; } } public class HinhVuong extends TuGiac { public HinhVuong(){ super(new Diem(0,0), new Diem(0,1), new Diem(1,1),new Diem(1,0)); System.out.println("Lop HinhVuong()"); } 47 } CuuDuongThanCong.com https://fb.com/tailieudientucntt Gọi trực tiếp constructor lớp cha Phương thức khởi tạo lớp CÓ tham số cu u du o ng th an co ng c om public class TuGiac { protected Diem d1,d2,d3,d4; HinhVuong hv = public TuGiac(Diem d1, new HinhVuong( Diem d2, Diem d3, Diem d4){ new Diem(0,0), System.out.println ("Lop cha TuGiac(d1,d2,d3,d4)"); new Diem(0,1), new Diem(1,1), this.d1 = d1; this.d2 = d2; new Diem(1,0)); this.d3 = d3; this.d4 = d4; } } public class HinhVuong extends TuGiac { public HinhVuong(Diem d1, Diem d2, Diem d3, Diem d4){ super(d1, d2, d3, d4); System.out.println("Lop HinhVuong(d1,d2,d3,d4)"); } 48 CuuDuongThanCong.com https://fb.com/tailieudientucntt ng th an co ng c om public class TG { private String name; public TG(String name) { } } cu u du o public class HV extends TG{ public void test(){ } } 49 CuuDuongThanCong.com https://fb.com/tailieudientucntt ng co an th ng du o u Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập cu .c om Nội dung 51 CuuDuongThanCong.com https://fb.com/tailieudientucntt th ◼ an co ◼ Việc thêm/xóa nhân viên thực theo chế stack tongLuong() trả tổng lương nhân viên phịng inTTin() hiển thị thơng tin phịng thơng tin nhân viên phịng ng ◼ c om Bài tập: ◼ Viết mã nguồn cho lớp PhongBan với thuộc tính phương thức biểu đồ phương thức khởi tạo với số lượng tham số cần thiết, biết rằng: u -soNhanVien:byte du o -tenPhongBan:String ng PhongBan cu +SO_NV_MAX:byte = 100 +themNV(NhanVien):boolean NhanVien * -tenNhanVien:String -heSoLuong:double +LUONG_CO_BAN:double=750.000 +LUONG_MAX:double=20.000.000 +xoaNV():NhanVien +tangLuong(double):boolean +tongLuong():double +tinhLuong():double +inTTin() +inTTin() CuuDuongThanCong.com 52 https://fb.com/tailieudientucntt cu u du o ng th an co ng c om public class PhongBan { private String tenPhongBan; private byte soNhanVien; public static final SO_NV_MAX = 100; private NhanVien[] dsnv; public boolean themNhanVien(NhanVien nv){ if (soNhanVien < SO_NV_MAX) { dsnv[soNhanVien] = nv; soNhanVien++; return true; } else return false; } public NhanVien xoaNhanVien(){ if (soNhanVien > 0) { NhanVien tmp = dsnv[soNhanVien-1]; dsnv[soNhanVien-1] = null; soNhanVien ; return tmp; } else return null; } // (cont) CuuDuongThanCong.com https://fb.com/tailieudientucntt 53 cu u du o ng th an co ng c om // (cont.) public PhongBan(String tenPB){ dsnv = new NhanVien[SO_NV_MAX]; tenPhongBan = tenPB; soNhanVien = 0; } public double tongLuong(){ double tong = 0.0; for (int i=0;i

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

Hình ảnh liên quan

◼ OOP: Khi mô hình thế giới thực, tồn tại nhiều loại đối tượng có  các thuộc tính và hành vi tương   tự hoặc liên quan đến nhau - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

hi.

mô hình thế giới thực, tồn tại nhiều loại đối tượng có các thuộc tính và hành vi tương tự hoặc liên quan đến nhau Xem tại trang 5 của tài liệu.
◼ Nâng cao khả năng mô hình hóa thế giới thựchóa thế giới thực - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

ng.

cao khả năng mô hình hóa thế giới thựchóa thế giới thực Xem tại trang 7 của tài liệu.
Ưu điểm của tái sử dụng mã nguồn ◼ Giảm thiểu công sức, chi phí - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

u.

điểm của tái sử dụng mã nguồn ◼ Giảm thiểu công sức, chi phí Xem tại trang 7 của tài liệu.
◼ Hình vuông → Kế thừa→Kế thừa - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

Hình vu.

ông → Kế thừa→Kế thừa Xem tại trang 20 của tài liệu.
3.1. Tổng quan về kế thừa - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

3.1..

Tổng quan về kế thừa Xem tại trang 20 của tài liệu.
◼ Cấu trúc phân cấp hình cây, biểu diễn mối quan hệ kế thừa giữa các lớp. - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

u.

trúc phân cấp hình cây, biểu diễn mối quan hệ kế thừa giữa các lớp Xem tại trang 26 của tài liệu.
Hình - Bài giảng Lập trình hướng đối tượng – Bài 06: Kết tập và kế thừa

nh.

Xem tại trang 27 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan