1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Session06 package, interface, inheritance

13 42 0

Đ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 13
Dung lượng 1,36 MB

Nội dung

2/23/2018 CƠNG NGHỆ JAVA Package CH6 KẾ THỪA, ĐĨNG GĨI TRONG JAVA Giảng viên: ThS Lê Nhật Tùng www.lenhattung.com 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com Package Package • Một gói thư viện tập hợp lớp, giao tiếp, kiểu liệt kê thích • Nó cung cấp chức bảo vệ truy cập quản lý khơng gian tên • Thao tác gói có kỹ thuật: • Một gói nhóm lớp giao tiếp có quan hệ với tổ chức đơn vị không gian tên • Gói giúp phân hoạch khơng gian tên lớp, giao diện thành vùng dễ quản lý – KT đặt tên – KT điều khiển truy xuất 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com 2/23/2018 Đặc điểm gói • • • • Định nghĩa gói • Để tạo gói, ta đặt từ khóa package phát biểu tập tin nguồn • Nếu bỏ qua khai báo package  lớp đặt vào gói mặc định Một gói có nhiều gói Khơng có hai thành viên trùng tên Tên gói viết chữ thường Java có loại gói: – Gói định nghĩa trước – Gói định nghĩa người dùng 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com Các bước định nghĩa gói Các bước định nghĩa gói • Bước 1: lựa chọn tên gói • Bước 3: đưa tập tin nguồn vào gói – Tên gói phải chữ thường – Tên gói khơng bắt đầu java javax – Không bắt đầu số dấu nối (-) – Thêm câu lệnh package vào dòng mã nguồn – Chỉ có câu lệnh package tệp nguồn • Bước 4: biên dịch chạy ứng dụng • Bước 2: tạo thư mục tên với gói – Khi biên dịch phải đảm bảo sử dụng tên lớp đầy đủ bao gồm tên gói – Dùng dấu chấm để phân biệt package với package cha – Java sử dụng hệ thống thư mục để lưu trữ gói  lớp chứa thư mục tên PackageName 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com 2/23/2018 Định nghĩa gói Điều khiển truy xuất • Java xem gốc phân cấp gọi định nghĩa biến mơi trường CLASSPATH • Các quyền truy xuất: • Ví dụ: package java.awt.image;  Được lưu trữ thư mục Java\awt\image với hệ điều hành Windows 2/23/2018 http://www.lenhattung.com 2/23/2018 Sử dụng gói Sử dụng gói • Java đưa phát biểu import để lớp hay tồn gói lấy đượccó thể sử dụng lớp trực tiếp qua tên mà khơng cần dùng dấu chấm truy xuất • Trong tập tin Java, khai báo import đứng liền sau phát biểu package; • Ví dụ 2/23/2018 http://www.lenhattung.com http://www.lenhattung.com 10 • Tất gói chuẩn nằm gói tên java  phải nhập tên lớp gói mà bạn muốn sử dụng • Riêng gói java.lang có nhiều chức thơng dụngđược import ngầm định • Phát biểu import gói có tác dụng thành phần public 11 2/23/2018 http://www.lenhattung.com 12 2/23/2018 Kế thừa giới thực Kế thừa - Inheritance 2/23/2018 http://www.lenhattung.com 13 2/23/2018 http://www.lenhattung.com Kế thừa giới thực Kế thừa lập trình • Q trình truyền đặc tính cách cư xử cha mẹ cho gọi kế thừa • Mục đích: tránh tạo đặc tính hành vi có sẵn mà sử dụng lại có sẵn để tạo nên thực thể • Là phần quan trọng khơng thể thiếu lập trình hướng đối tượng • Kế thừa cho phép bạn định nghĩa lớp tổng quát nhất, sau định nghĩa thêm lớp cách thêm số chi tiết vào lớp tổng quát 2/23/2018 http://www.lenhattung.com 15 2/23/2018 http://www.lenhattung.com 14 16 2/23/2018 Lớp trừu tượng (abstract class) • Chúng ta tạo lớp sở để tái sử dụng mà không muốn tạo đối tượng thực lớp Abstract class – Các lớp Point, Circle, Rectangle chung khái niệm hình vẽ Shape  Giải pháp khai báo lớp trừu tượng (abstract class) 2/23/2018 http://www.lenhattung.com 17 Lớp trừu tượng (abstract class) 2/23/2018 http://www.lenhattung.com 18 http://www.lenhattung.com 20 Ví dụ • Lớp trừu tượng dùng để tạo khung làm việc chung • Khơng thể tạo đối tượng từ lớp trừu tượng 2/23/2018 http://www.lenhattung.com 19 2/23/2018 2/23/2018 Tái sử dụng Tái sử dụng • Tồn nhiều loại đối tượng có thuộc tính hành vi tương tự liên quan đến • Copy mã nguồn – Tốn cơng, dễ nhầm – Khó sửa lỗi tồn nhiều phiên – Person, Student, Manager,… • Xuất nhu cầu sử dụng lại mã nguồn viết • Quan hệ has_a – Sử dụng lớp cũ thành phần lớp – Sử dụng lại cài đặt với giao diện – Sử dụng lại thông qua copy – Sử dụng lại thông qua quan hệ has_a – Sử dụng lại thông qua chế “kế thừa” 2/23/2018 http://www.lenhattung.com • Phải viết lại giao diện • Chưa đủ mềm dẻo 21 2/23/2018 http://www.lenhattung.com Ví dụ: has_a Ví dụ: has_a class Person { String name; Date bithday; public String getName() { return name; } } class Employee { Person me; double salary; public String getName() { return me.getName(); } } class Manager { Employee me; Employee assistant; public setAssistant(Employee e) { } } Manager junior = new Manager(); Manager senior = new Manager(); senior.setAssistant(junior); // error 2/23/2018 http://www.lenhattung.com 23 2/23/2018 http://www.lenhattung.com 22 24 2/23/2018 Kế thừa Lớp • Dựa quan hệ is_a • Thừa hưởng lại thuộc tính phương thức có • Chi tiết hóa cho phù hợp với mục đích sử dụng • Dùng từ khóa extends để tạo lớp • Lớp phải tuân theo số nguyên tắc sau: – Thêm thuộc tính – Thêm hiệu chỉnh phương thức 2/23/2018 http://www.lenhattung.com 25 – Chỉ kế thừa trực tiếp từ lớp – Nếu khơng có lớp cha ngầm định kế thừa lớp Object – Lớp khơng kế thừa hàm dựng lớp cha 2/23/2018 http://www.lenhattung.com Cài đè (Overriding) Cài đè (Overriding) • Khi lớp có phương thức giống hệt lớp cha, ta gọi cài đè • Mục đích: định nghĩa hay thực hành vi khác so với lớp cha • Qui tắc: 2/23/2018 http://www.lenhattung.com 26 – Phương thức cài đè phải trùng tên, kiểu, số tham số kiểu trả so với phương thức bị cài đè – Phương thức bị cài đè phải có định danh truy cập yếu so với phương thức cài đè 27 2/23/2018 http://www.lenhattung.com 28 2/23/2018 Từ khóa super Nạp chồng phương thức • Cho phép lớp truy cập tới thành phần lớp cha • super constructor dùng để truy xuất tới constructor lớp cha, phải câu lệnh hàm dựng • Nạp chồng khả lớp có nhiều phương thức tên 2/23/2018 2/23/2018 http://www.lenhattung.com 29 http://www.lenhattung.com Nạp chồng: Các tham số khác Nạp chồng: Kiểu liệu trả khác • Số tham số khác • Kiểu liệu trả giống • Có số tham số • Khác kiểu liệu trả 2/23/2018 http://www.lenhattung.com 31 2/23/2018 http://www.lenhattung.com 30 32 2/23/2018 Nạp chồng hàm dựng Các phương thức trừu tượng • Cho phép xây dựng đối tượng nhiều cách • Phương thức có khai báo mà khơng có cài đặt gọi phương thức trừu tượng • Phương thức trừu tượng phương thức có từ khóa abstract • Phương thức trừu tượng phải khai báo abstract class interface • Phương thức trừu tượng khơng có cặp dấu ngoặc kép ({}) kết thúc dấu chấm phẩy (;) 2/23/2018 http://www.lenhattung.com 33 Các phương thức trừu tượng 2/23/2018 http://www.lenhattung.com 34 Thuật ngữ • Kế thừa • Lớp sở, lớp cha • Lớp dẫn xuất, lớp 2/23/2018 http://www.lenhattung.com 35 2/23/2018 http://www.lenhattung.com 36 2/23/2018 Kế thừa Java Kế thừa Java [public] class DerivedClass extends BaseClass { /* new features goes here */ } Person -name -birthday +setName() +setBirthday() Ví dụ: class Employee extends Person { private double salary; public boolean setSalary(double sal) { salary = sal; return true; } } 2/23/2018 Employee e = new Employee(); e.setName("John"); e.setSalary(3.0); Employee -salary +setSalary() +getDetail() http://www.lenhattung.com 37 2/23/2018 http://www.lenhattung.com 38 Thừa kế nhiều tầng Person -name -birthday +setName +setBirthday Mọi đối tượng thừa kế từ lớp gốc Object Manager -rank 2/23/2018 Interfaces - giao diện Student Employee -salary +setSalary +getDetail http://www.lenhattung.com -id Programmer -project 39 2/23/2018 http://www.lenhattung.com 40 2/23/2018 Định nghĩa giao diện Định nghĩa giao diện • Bạn trừu tượng hồn tồn giao diện lớp với thực nhờ từ khóa interface • Trong interface bạn đặc tả lớp phải làm khơng cần biết phải làm • Interface tập khai báo phương thức, mà lớp kế thừa • Interface có cú pháp tương tự lớp khơng có biến thành viên, có khai báo khai báo phương thức • Số lượng lớp thực interface không hạn chế • lớp thực số lượng tùy ý interface 2/23/2018 2/23/2018 http://www.lenhattung.com 41 http://www.lenhattung.com Định nghĩa giao diện Định nghĩa giao diện • Để thực interface, lớp phải cài đặt đầy đủ tất phương thức mà interface định nghĩa • Interface thiết kế để hỗ trợ phương thức động lúc thực thi chương trình • Cú pháp interface 2/23/2018 2/23/2018 http://www.lenhattung.com 43 http://www.lenhattung.com 42 44 2/23/2018 Hiện thực giao diện Chú ý • Sau interface định nghĩa, hay nhiều lớp thực interface • Để thực interface ta dùng từ khóa implements, sau cài đặt tất phương thức mà interface định nghĩa • Các phương thức thực interface phải khai báo public • Hình thức phương thức phải giống hệt đặc tả interface • Nếu lớp chứa interface không thực hết tất phương thứclớp phải khai báo abstract 2/23/2018 http://www.lenhattung.com 45 2/23/2018 http://www.lenhattung.com Đa kế thừa Ví dụ • Java khơng cho phép đa kế thừa từ nhiều lớp sở interface Action { void moveTo(int x, int y); void erase(); void draw(); } – đảm bảo tính dễ hiểu – hạn chế xung đột 46 class Circle1 implements Action { int x, y, r; Circle1(int _x, int _y, int _r) { } • Nhưng cài đặt đồng thời nhiều giao diện public void erase() { } public void draw() { } public void moveTo(int x1, int y1) { } } 2/23/2018 http://www.lenhattung.com 47 2/23/2018 http://www.lenhattung.com 48 2/23/2018 Truy xuất thực thông qua tham chiếu interface Biến giao diện • Bạn khai báo biến tham chiếu tới interface • Khi bạn gọi phương thức  phương thức thực thi tự động tìm đến thể thực • Có thể dùng biến interface để import dùng chung cho nhiều lớp • Khi thực interface biến có tính chất 2/23/2018 http://www.lenhattung.com 49 2/23/2018 http://www.lenhattung.com 50 Kế thừa giao diện Kế thừa giao diện • Một interface kế thừa từ interface khác từ khóa extends • Khi lớp thực interface kế thừa interface khác, phải cài đặt tất phương thức interface • Một lớp trừu tượng kế thừa interface khác abstract class Shape implements Action { protected int x, y; public Shape() { } public Shape(int _x, int _y) { } public void moveTo(int x1, int y1) { erase(); x = x1; y = y1; draw(); } } 2/23/2018 http://www.lenhattung.com 51 2/23/2018 http://www.lenhattung.com 52 ... thành phần public 11 2/23/2018 http://www.lenhattung.com 12 2/23/2018 Kế thừa giới thực Kế thừa - Inheritance 2/23/2018 http://www.lenhattung.com 13 2/23/2018 http://www.lenhattung.com Kế thừa giới... http://www.lenhattung.com 41 http://www.lenhattung.com Định nghĩa giao diện Định nghĩa giao diện • Để thực interface, lớp phải cài đặt đầy đủ tất phương thức mà interface định nghĩa • Interface thiết kế

Ngày đăng: 04/11/2019, 23:58