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 3 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

om du on g th a n co ng c 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 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 Mục tiêu học ◼ om c th a cu u ◼ du on g ◼ n 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 ◼ ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt .c du on g u cu th a n ng Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập co om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt .c du on g u cu th a n ng Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập co om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt co ng c Tái sử dụng mã nguồn: Sử dụng lại mã nguồn viết n th a u ◼ 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 on g ◼ cu ◼ om Tái sử dụng mã nguồn (Re-usability) ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt Tái sử dụng mã nguồn (2) 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) th a du on g ◼ u ◼ n co ◼ c om Các cách sử dụng lại lớp có: cu ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt Ưu điểm tái sử dụng mã nguồn om c th a du on g u ◼ cu ◼ n 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 ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt .c du on g u cu th a n ng Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập co om Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt Kết tập Kết tập ◼ c co n th a ◼ Tứ giác gồm điểm → Kết tập du on g ◼ ng Điểm Quan hệ chứa/có ("hasa") phần (is-a-part-of) u ◼ om Ví dụ: cu ◼ CuuDuongThanCong.com https://fb.com/tailieudientucntt 2.1 Bản chất kết tập c 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 ◼ ◼ th a Lớp toàn thể (Aggregate/Whole), Lớp cũ ◼ du on g Lớp mới u ◼ cu ◼ n co ◼ om Kết tập (aggregation) ng ◼ Lớp thành phần (Part) 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ (tiếp) cu u du on g th a n 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 cu u du on g th a n co ng c 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; } } om Ví dụ – Cùng gói CuuDuongThanCong.com 41 https://fb.com/tailieudientucntt .c ng co n th a package abc; public class Person { protected Date birthday; protected String name; } om Ví dụ – Khác gói cu u du on g 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 3.4 Khởi tạo huỷ bỏ đối tượng ◼ c 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 ◼ du on g th a n ◼ 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 ◼ om Khởi tạo đối tượng: co ◼ 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 .c public class Test { public static void main(String arg[]) { HinhVuong hv = new HinhVuong(); } } cu u du on g th a n 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()"); } } om 3.4.1 Tự động gọi constructor lớp cha CuuDuongThanCong.com 44 https://fb.com/tailieudientucntt 3.4.2 Gọi trực tiếp constructor lớp cha co ng c om 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 n th a Điều bắt buộc lớp cha khơng có phương thức khởi tạo mặc định ◼ du on g ◼ 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 ◼ ◼ 45 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ public class Test { public static void main(String arg[]) { HinhVuong hv = new cu u du on g th a n 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 on g th a n 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 on g th a n 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 om du on g th a n co ng c public class TG { private String name; public TG(String name) { } } cu u public class HV extends TG{ public void test(){ } } 49 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c du on g u cu th a n ng Tái sử dụng mã nguồn Kết tập (Aggregation) Kế thừa (Inheritance) Ví dụ tập co om Nội dung 51 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c -soNhanVien:byte u -tenPhongBan:String th a PhongBan du on g ◼ n 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 ◼ 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: 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 +inTTin() +inTTin() +tongLuong():double CuuDuongThanCong.com +tinhLuong():double https://fb.com/tailieudientucntt 52 cu u du on g th a n 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 on g th a n 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: 28/12/2021, 19:14

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