Bài giảng Lập trình hướng đối tượng với Java - Chương 4: Tính kế thừa và đa hình
lượt xem 4
download
Bài giảng cung cấp cho người học các kiến thức: Tính kế thừa và đa hình. Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng với Java - Chương 4: Tính kế thừa và đa hình
- Chương 04 TÍNH KẾ THỪA VÀ ĐA HÌNH INHERITANCE - POLYMORPHISM Slide 1/33
- Ôn tập • Accsess modifier: chỉ thị mức độ cho phép bên ngoài truy cập vào một dữ liệu hay một hành vi của 1 lớp. • Khi thiết kế 1 lớp: Cần xem xét để chọn access modifier phù hợp đối với từng thành phần. • Nếu muốn kết thúc một lớp( lớp không con), một hành vi (không cho hiệu chỉnh), một dữ liệu (là hằng): Dùng chỉ thị final. • Dữ liệu static là dữ liệu toàn cục của chương trình. • Code static là code được thực thi ngay lúc lớp được tham khảo đến. • Hành vi static là hàm toàn cục. • Truy xuất thành phần static thông qua tên lớp hoặc một đối tượng thuộc lớp. Slide 2/33
- Ôn tập • Constructor: Hành vi được thực thi ngay lúc khởi tạo đối tượng. • Tập các constructor tạo ra tập các mẫu khởi tạo biến đối tượng. • Một đối tượng sống từ lúc đối tượng được khởi tạo (bằng new) cho đến khi khối chứa nó được thực thi xong. • Tầm vực của 1 đối tượng là vùng văn bản chương trình từ lúc định nghĩa biến đến hết khối chứa biến này. • Destructor: Hành vi được thực thi vào lúc đối tượng chết ( Java không hỗ trợ destructor). Slide 3/33
- Đặc tính truy xuất Modifier private friendly protected public Cùng class YES YES YES YES Cùng gói, khác NO YES YES YES class lớp con trong NO YES YES YES cùng gói với lớp cha Khác gói, khác NO NO NO YES lớp Lớp con khác NO NO YES YES gói với lớp cha Slide 4/33
- Mục tiêu • Giải thích được: – Thừa kế là gì trong OOP. – Các loại thừa kế trong các ngôn ngữ OOP. – Đa hình là gì trong OOP. • Phân biệt được kỹ thuật Overloading và Overriding. • Hiện thực được đặc điểm thừa kế trong OOP với Java. • Hiện thực được đặc điểm đa hình trong OOP với Java. • Sử dụng được toán tử instanceof và ép kiểu trong Java • Giải thích được những tình huống có thể xẩy ra khi ép kiểu. • Giải thích được loại tham số trong hàm của Java. Slide 5/33
- Nội dung 4.1- Tính kế thừa – Inheritance. 4.2- Các loại thừa kế. 4.3- Hiện thực lớp con trong Java. 4.4- Tính đa hình. 4.5- Kỹ thuật Overriding 4.6- Quan hệ qiữa các lớp 4.7- Toán tử instanceof 4.8- Vấn đề ép kiểu trong Java 4.9- Tham số của hàm trong Java Slide 6/33
- 4.1- Tính kế thừa – Inheriatance • Khả năng một lớp thừa hưởng data và code từ một hay nhiều lớp khác. • Kỹ thuật giúp tái sử dụng code Tiết kiệm công sức lập trình, công sức kiểm tra code. Slide 7/33
- 4.2- Các loại thừa kế. • Đơn thừa kế • Đa thừa kế ( thừa kế bội) • Mỗi ngôn ngữ OOP hỗ trợ khả năng thừa kế riêng. • C++ : đa thừa kế. • C# , Java : Đơn thừa kế Slide 8/33
- 4.3- Hiện thực lớp con trong Java. Lớp con là mở rộng của lớp cha class CLASSNAME extends FATHERCLASSNAME { DataType1 Property1 [=Value]; DataType2 Property1 [=Value]; CLASSNAME (DataType Arg,…) // constructor {… } [Modifier] DataType MethodName( DataType Arg,…) {…} } Slide 9/33
- Thí dụ về thừa kế 200 150 25 Quang 300 P03 150 25 Luan 200 P02 21 Hoa 100 P01 mng 300 emp 200 p 100 Slide 10/33
- Bài tập Phân tích phân cấp thừa kế cho các lớp: (làm tại lớp) • Hàng điện máy • Hàng sành sứ < mã hàng, tên hàng, nhà sản xuất, giá, loại nguyên liệu> • Hàng thực phẩm Viết chương trình tạo mỗi loại một mặt hàng cụ thể. xuất thông tin về các mặt hàng này (Lab) • Gợi ý: cách viết tương tự thí dụ vừa rồi. Slide 11/33
- 4.4- Tính đa hình - Polymorphism • Đa hình thái, nhiều cách phản ứng khác nhau cho cùng một hành vi. • Lớp A có hành vi M(). • Lớp B là con của lớp A, trong lớp B viết lại hành vi M(). • Có biến đối tượng obj. • Tại thời điểm t1: obj chỉ đến một thực thể A. obj.M() sẽ cho một phản ứng. • Tại thời điểm t2: obj chỉ đến một thực thể B. obj.M() sẽ cho một phản ứng khác. • Tính đa hình có được là nhờ kỹ thuật override hành vi giữa 2 lớp cha con. Slide 12/33
- 4.5- Kỹ thuật Overriding • Override: ghi đè, thay thế code một hành vi thừa kế từ lớp cha để lớp con phản ứng khác với phản ứng của lớp cha khi cùng được yêu cầu thực thi hành vi này. • Khác biệt giữa overloading và overriding: – Overloading: Kỹ thuật cho phép nhiều hành vi trùng tên nhưng khác chữ ký trong cùng một lớp. – Overriding: Kỹ thuật cho phép sửa code của một hành vi mà lớp con thừa kế từ lớp cha để lớp con phản ứng khác với lớp cha. Slide 13/33
- Thí dụ về overload và override overloading method: cùng tên, khác tham số, cùng lớp overriding method: cùng tên, cùng tham số, ở hai lớp cha con Slide 14/33
- Thí dụ... thêm đuôi thêm đầu Slide 15/33
- Bài tập (Lab) • Xây dựng thêm lớp MyArray3 kế thừa từ lớp MyArray2 có thêm các hành vi: – Add (int ar[]) để thêm cả mảng ar vào tập trị. – Remove(int i) để xoá phần tử ở vị trí i. – RemoveAll (int x) để xóa mọi xuất hiện của x trong tập trị. – IndexOf (int x) để tìm xuất hiện đầu của trị trong tập trị. – LastIndexOf (int x) để tìm xuất hiện cuối của trị trong tập trị. • Viết chương trình minh họa các hành vi này. Slide 16/33
- Thí dụ : Đối tượng lớp cha nhưng cụ thể lại là lớp con Biến đối tượng là tham khảo nên hoàn toàn có thể khai báo biến là lớp cha nhưng khởi tạo biến là đối tượng thuộc lớp con. Tính đa hình Slide 17/33
- 4.6- Quan hệ giữa các lớp • Hai lớp không có quan hệ. • Quan hệ cha con : tính thừa kế ( đã bàn rồi). • Quan hệ bao gộp: Lớp có thành phần dữ liệu là thể hiện của 1 lớp khác. – Lớp thành phần là lớp bên ngoài. – Lớp thành phần là lớp bên trong (lớp nội) Slide 18/33
- 4.6.1-Lớp có dữ liệu là một đối tượng của lớp ngoài Chương trình xuất hóa đơn Slide 19/33
- Lớp có dữ liệu là một đối tượng của lớp ngoài... Slide 20/33
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 119 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn