BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA(Chương Cuối )
Chia sẻ bởi Trần Thị Thu Thủy |
Ngày 19/03/2024 |
19
Chia sẻ tài liệu: BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA(Chương Cuối ) thuộc Công nghệ thông tin
Nội dung tài liệu:
Chương 7
INTERFACE và PACKAGE
ÔN TẬP
2 loại error: syntax error, run-time error.
run-time error được gọi là exception.
Khi một exception, JVM xuất động một object (chứa mô tả về exception này).
Lớp trên cùng của các error là lớp Throwable ( lớp cho các đối tượng xuất động của JVM)
Có rất nhiều Exception để trong các gói thư viện của Java.
ÔN TẬP
Bẫy lỗi bằng try ... catch... finally
Nếu hành vi chứa một code có thể gây lỗi, chỉ thị bằng throws
Trong code của hành vi, có thể xuất một exception bằng
throw new ExceptionClass (“Msg”);
Tự định nghĩa một Exception là khai báo một lớp kế thừa một Exception đã có.
ÔN TẬP
Java cung cấp sẵn một garbage collector.
Chủ động gọi GC bằng System.gc() hoặc thông qua một đối tượng RunTime.
class RunTime chứa thông tin về môi trường thức thi Java app.
Thời gian trong Java là một số long theo đơn vị mili giây kể từ 1-1-1970.
Sử dụng java.util.Date để thao tác với dữ liệu thời gian.
Có thể thông qua đối tượng System để lấy thời gian hiện hành của máy (theo mili, nano second).
MỤC TIÊU
Giải thích được interface là gì.
Khai báo được interfece.
Hiện thực được interface trong lớp.
Giải thích được tính thừa kế của interface.
Định nghĩa đối tượng bằng interface.
Giải thích được package của Java là gì.
Tạo được package.
Sử dụng được lớp trong package.
NỘI DUNG
7.1- Interface là gì?
7.2- Khai báo interface
7.3- Hiện thực interface trong một lớp
7.4- Interface thừa kế
7.5- Định nghĩa trực tiếp đối tượng bằng interface
7.6- Package là gì?
7.7- Tạo package.
7.8- Sử dụng package.
7.1- Interface là gì?
Theo phương pháp phân cấp thừa kế, có thể lớp cha có những hành vi chưa biết viết code thề nào hành vi trừu tượng lớp trừu tượng.
Ta muốn một lớp được thừa kế từ nhiều lớp trừu tượng mà không bị khống chế bởi tính đơn thừa kế.
Giải pháp: Interface
Interface...
Interface là một khai báo bao gồm một tập đặc điểm gốm các hằng, các hành vi mà không muốn khai báo lớp.
Interface mang ý nghĩa “như là một lớp hoàn toàn trừu tượng”
Interface mang ý nghĩa khai báo trước một nhóm các xử lý cần có.
Interface là một đặc điểm của các ngôn ngữ OOP mới như Java, C#.
Interface được xem như là một lớp hoàn toàn trừu tượng.
Interface là một công cụ để hiện thực dạng đa thừa kế trong Java, C#.
7.2- Khai báo interface
Khai báo interface bằng 1 file.java, biên dịch thành file.class.
Cú pháp
[modifier] interface InterfaceName
{ [ modifier]
[ modifier] DataType Method (args);
}
Chọn modifier là public để mọi nơi đều dùng được.
Không có modifier để chỉ cho cùng gói/ cùng thư mục truy cập.
Modifier trong interface NÊN là public để dễ dùng.
Thí dụ:
Nhận xét:
Các hình vẽ đều cần
hằng PI
tác vụ tính diện tích,
tính chu vi
mà ta không muốn tạo
lớp trừu tượng
Tạo 1 interface.
Thí dụ: interface về nhập xuất dữ liệu
Ta nghĩ rằng, mỗi lớp trong phần mềm ta đang xây dựng đều cần nhập xuất dữ liệu. Tạo một interface cho việc này.
7.3- Hiện thực interface trong một lớp
Một lớp có code cụ thể hóa các hành vi của một interface thì gọi là implementation.
Một lớp có thể hiện thực nhiều interface (có dạng đa thừa kế).
Cú pháp xây dựng một lớp có hiện thực interface:
Cú pháp xây dựng lớp có hiện thực interface
[modifier] class Tên extends LớpCha implements Interface1, interface2,...
{
}
INTERFACE và PACKAGE
ÔN TẬP
2 loại error: syntax error, run-time error.
run-time error được gọi là exception.
Khi một exception, JVM xuất động một object (chứa mô tả về exception này).
Lớp trên cùng của các error là lớp Throwable ( lớp cho các đối tượng xuất động của JVM)
Có rất nhiều Exception để trong các gói thư viện của Java.
ÔN TẬP
Bẫy lỗi bằng try ... catch... finally
Nếu hành vi chứa một code có thể gây lỗi, chỉ thị bằng throws
Trong code của hành vi, có thể xuất một exception bằng
throw new ExceptionClass (“Msg”);
Tự định nghĩa một Exception là khai báo một lớp kế thừa một Exception đã có.
ÔN TẬP
Java cung cấp sẵn một garbage collector.
Chủ động gọi GC bằng System.gc() hoặc thông qua một đối tượng RunTime.
class RunTime chứa thông tin về môi trường thức thi Java app.
Thời gian trong Java là một số long theo đơn vị mili giây kể từ 1-1-1970.
Sử dụng java.util.Date để thao tác với dữ liệu thời gian.
Có thể thông qua đối tượng System để lấy thời gian hiện hành của máy (theo mili, nano second).
MỤC TIÊU
Giải thích được interface là gì.
Khai báo được interfece.
Hiện thực được interface trong lớp.
Giải thích được tính thừa kế của interface.
Định nghĩa đối tượng bằng interface.
Giải thích được package của Java là gì.
Tạo được package.
Sử dụng được lớp trong package.
NỘI DUNG
7.1- Interface là gì?
7.2- Khai báo interface
7.3- Hiện thực interface trong một lớp
7.4- Interface thừa kế
7.5- Định nghĩa trực tiếp đối tượng bằng interface
7.6- Package là gì?
7.7- Tạo package.
7.8- Sử dụng package.
7.1- Interface là gì?
Theo phương pháp phân cấp thừa kế, có thể lớp cha có những hành vi chưa biết viết code thề nào hành vi trừu tượng lớp trừu tượng.
Ta muốn một lớp được thừa kế từ nhiều lớp trừu tượng mà không bị khống chế bởi tính đơn thừa kế.
Giải pháp: Interface
Interface...
Interface là một khai báo bao gồm một tập đặc điểm gốm các hằng, các hành vi mà không muốn khai báo lớp.
Interface mang ý nghĩa “như là một lớp hoàn toàn trừu tượng”
Interface mang ý nghĩa khai báo trước một nhóm các xử lý cần có.
Interface là một đặc điểm của các ngôn ngữ OOP mới như Java, C#.
Interface được xem như là một lớp hoàn toàn trừu tượng.
Interface là một công cụ để hiện thực dạng đa thừa kế trong Java, C#.
7.2- Khai báo interface
Khai báo interface bằng 1 file.java, biên dịch thành file.class.
Cú pháp
[modifier] interface InterfaceName
{ [ modifier]
[ modifier] DataType Method (args);
}
Chọn modifier là public để mọi nơi đều dùng được.
Không có modifier để chỉ cho cùng gói/ cùng thư mục truy cập.
Modifier trong interface NÊN là public để dễ dùng.
Thí dụ:
Nhận xét:
Các hình vẽ đều cần
hằng PI
tác vụ tính diện tích,
tính chu vi
mà ta không muốn tạo
lớp trừu tượng
Tạo 1 interface.
Thí dụ: interface về nhập xuất dữ liệu
Ta nghĩ rằng, mỗi lớp trong phần mềm ta đang xây dựng đều cần nhập xuất dữ liệu. Tạo một interface cho việc này.
7.3- Hiện thực interface trong một lớp
Một lớp có code cụ thể hóa các hành vi của một interface thì gọi là implementation.
Một lớp có thể hiện thực nhiều interface (có dạng đa thừa kế).
Cú pháp xây dựng một lớp có hiện thực interface:
Cú pháp xây dựng lớp có hiện thực interface
[modifier] class Tên extends LớpCha implements Interface1, interface2,...
{
}
Thứ tự
không
quan
trọng
Thí dụ
Khai báo method trong interface
phải là friendly hoặc public.
Suy nghĩ về đặc điểm: interface
là quy định về các khả năng của một
lớp.
Một lớp cụ thể có khai báo inplements một interface mà quên chưa hiện thực hành vi của interface Error
Thí dụ:
Khai báo biến thông qua interface
Biến interface chỉ được dùng
với các hành vi có trong interface
Thí dụ: Biến interface
Thí dụ: Biến interface
Biến interface chỉ dùng được các hành vi có khai báo trong interface.
Thí dụ: 2 interface cụ thể
interface cho việc tính toán các hình vẽ
interface cho việc nhập xuất đối tượng
Thí dụ: Sử dụng 2 interface
Bài tập
Tương tự với vòng tròn, bạn tự làm với Ellipse, tam giác, hình chữ nhật, hình vuông.
Chu vi ellipse: pi(Rx + Ry)
diện tích ellipse: pi*Rx*Ry
7.4- Interface thừa kế
Interface có thể thừa kế interface cha
Interface con là hội lại các khai báo hành vi.
Cú pháp:
interface InterfaceSon extends InterfaceFather
{ < các khai báo thêm>
}
Nếu một lớp implements interface con thì phải cụ thể hóa cả các method có trong interface cha.
Thí dụ
7.5-Định nghĩa trực tiếp đối tượng bằng interface
Có thể định nghĩa trực tiếp một đối tượng bằng interface hoặc lớp trừu tượng với điều kiện có cụ thể hóa các hành vi.
Đối tượng được định nghĩa trực tiếp gọi là đối tượng thuộc lớp vô danh (anonymous class). Nghĩa là, không có tên lớp, chỉ định nghĩa một đối tượng thuộc interface hoặc lớp trừu tượng rồi hiện thực các hành vi.
Thí dụ:
Cụ thể hóa hành vi
Cụ thể hóa các hành vi
Xem kỹ cú pháp
Đối tượng interface và lớp trừu tượng dang dở
Không có đoạn này
khi compile sẽ báo
lỗi
Lớp “giả” trừu tượng
Một thể hiện của 1 interface phải hiện thực đầy đủ các hành vi đã khai báo trong interface này.
Tình huống: Ta muốn có một thể hiện của 1 interface nhưng chỉ muốn hiện thực một vài methods của interface này thì sao?
Giải pháp: Lớp “giả” trừu tượng, lớp abstract nhưng có code “thật”.
interface
abstract class
implements các
methods của
interface bằng
code trống
Tạo động một đối tượng
thuộc lớp trừu tượng
(anonymous class),
chỉ override methods
được cần đến.
Đây là kỹ thuật mà Java sử dụng để tạo các lớp gọi là Adapter
giúp cho người lập trình bớt phải viết code các methods trong interface
Thí dụ
7.6- Package là gì?
Phân tích, quản lý
project
Package....
Package: gói phần mềm.
Là một nhóm các class, interface, các gói khác đã được biên dịch thành Java bytecode.
Tổ chức của 1 package là 1 thư mục có tên là tên của package Sub-package là 1 gói con (thư mục con) của 1 package mức cao hơn (giống cấu trúc thư mục).
Gói là công cụ tạo khả năng tái sử dụng mã (reusable code).
7.7- Tạo package
Khai báo package trong code của class.
Dùng từ khóa package
Cú pháp: package PackageCha[.PackageCon];
Phài là dòng đầu tiên của code java.
/* Comment */
package PackageCha[.PackageCon];
[import OtherPackageName ;]
class ClassName
{ .......
}
Khi biên dịch thành công:
Nếu chưa có thư mục
PackageName thì thư mục
này sẽ được tự động tạo ra
file.class của code này sẽ
được đặt vào thư mục này.
7.8- Sử dụng Package
Dùng chỉ thị import với một trong các cú pháp sau:
import PackageName.*;
import PackageCha.PackageCon.*;
import PackageName.ClassName;
import PackagCha.PackageCon.ClassName;
Thí dụ
Tạo các package với cấu trúc:
Thí dụ...
Thí dụ...
Thí dụ...
Thí dụ...
Thí dụ...
Bài tập
Bạn viết thêm:
(1) Lớp FacultyList để quản lý danh sách giáo viên đưa vào gói Faculty.
(2) Lớp FacultyListDemo để minh họa việc quản lý danh sách giáo viên.
Xây dựng các gói theo thiết kế sau:
public class Calculate
{ public static double Volume(double l,
double w, double h)
{return l*w*h;}
public static double Add(double n1, double n2)
{ return n1+n2;}
}
public class Circle
{ double r;
public Circle(double rr) { r=rr;}
public double Circumference()
{ return 2*Math.PI*r;}
public double Area() { return Math.PI* r*r; }
}
Thí dụ...
Sau đó, viết một chương trình sử dụng hai lớp trong hai gói này.
Thí dụ: Sử dụng gói tại bên trong gói
Thí dụ: Sử dụng gói nhưng ở bên ngoài gói
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép Student.class từ thư mục StudentClasses sang
Error
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép cả thư mục StudentClasses sang
Error vì lớp Student tham khảo gói CommonClasses
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép cả thư mục StudentClasses lẫn CommonClasses sang
OK
Chép gói thì phải chép cả thư mục chứa + các thư mục có liên quan
Tóm tắt
Interface bao gồm khai báo các hằng, các hành vi mà một lớp có thể có.
Một lớp hiện thực một interface là cụ thể hóa (viết code) các method đã khai báo trong interface này.
Một lớp có thể implement nhiều interface.
Một lớp trừu tượng có thể bỏ chưa hiện thực các method của interface.
Interface có thể thừa kế interface bằng extends
Interface con hội các hành vi có trong interface cha và các hành vi được khai báo thêm.
Cú pháp hiện thức một lớp có implements interface:
class A extends LớpCha implements Interface_1, interface_2,...
{ ......
< hiện thực các methods trong interface>
}
Tóm tắt
Interface được xem như là lớp trừu tượng.
Có thể khởi tạo đối tượng trực tiếp thông qua interface hoặc lớp trừu tượng với điều kiện cụ thể hóa hành vi.
Package: Bao gồm các interface, các class và các package con.
Mỗi package là một thư mục chứa lớp.
Sử dụng gói bằng chỉ thị import và phải đứng từ bên ngoài gói.
Khi sao chép các tập tin .class trong một gói thì phải sao chép cảc thư mục chứa lẫn cấu trúc của các thư mục (gói) có liên quan.
Thứ tự
không
quan
trọng
Thí dụ
Khai báo method trong interface
phải là friendly hoặc public.
Suy nghĩ về đặc điểm: interface
là quy định về các khả năng của một
lớp.
Một lớp cụ thể có khai báo inplements một interface mà quên chưa hiện thực hành vi của interface Error
Thí dụ:
Khai báo biến thông qua interface
Biến interface chỉ được dùng
với các hành vi có trong interface
Thí dụ: Biến interface
Thí dụ: Biến interface
Biến interface chỉ dùng được các hành vi có khai báo trong interface.
Thí dụ: 2 interface cụ thể
interface cho việc tính toán các hình vẽ
interface cho việc nhập xuất đối tượng
Thí dụ: Sử dụng 2 interface
Bài tập
Tương tự với vòng tròn, bạn tự làm với Ellipse, tam giác, hình chữ nhật, hình vuông.
Chu vi ellipse: pi(Rx + Ry)
diện tích ellipse: pi*Rx*Ry
7.4- Interface thừa kế
Interface có thể thừa kế interface cha
Interface con là hội lại các khai báo hành vi.
Cú pháp:
interface InterfaceSon extends InterfaceFather
{ < các khai báo thêm>
}
Nếu một lớp implements interface con thì phải cụ thể hóa cả các method có trong interface cha.
Thí dụ
7.5-Định nghĩa trực tiếp đối tượng bằng interface
Có thể định nghĩa trực tiếp một đối tượng bằng interface hoặc lớp trừu tượng với điều kiện có cụ thể hóa các hành vi.
Đối tượng được định nghĩa trực tiếp gọi là đối tượng thuộc lớp vô danh (anonymous class). Nghĩa là, không có tên lớp, chỉ định nghĩa một đối tượng thuộc interface hoặc lớp trừu tượng rồi hiện thực các hành vi.
Thí dụ:
Cụ thể hóa hành vi
Cụ thể hóa các hành vi
Xem kỹ cú pháp
Đối tượng interface và lớp trừu tượng dang dở
Không có đoạn này
khi compile sẽ báo
lỗi
Lớp “giả” trừu tượng
Một thể hiện của 1 interface phải hiện thực đầy đủ các hành vi đã khai báo trong interface này.
Tình huống: Ta muốn có một thể hiện của 1 interface nhưng chỉ muốn hiện thực một vài methods của interface này thì sao?
Giải pháp: Lớp “giả” trừu tượng, lớp abstract nhưng có code “thật”.
interface
abstract class
implements các
methods của
interface bằng
code trống
Tạo động một đối tượng
thuộc lớp trừu tượng
(anonymous class),
chỉ override methods
được cần đến.
Đây là kỹ thuật mà Java sử dụng để tạo các lớp gọi là Adapter
giúp cho người lập trình bớt phải viết code các methods trong interface
Thí dụ
7.6- Package là gì?
Phân tích, quản lý
project
Package....
Package: gói phần mềm.
Là một nhóm các class, interface, các gói khác đã được biên dịch thành Java bytecode.
Tổ chức của 1 package là 1 thư mục có tên là tên của package Sub-package là 1 gói con (thư mục con) của 1 package mức cao hơn (giống cấu trúc thư mục).
Gói là công cụ tạo khả năng tái sử dụng mã (reusable code).
7.7- Tạo package
Khai báo package trong code của class.
Dùng từ khóa package
Cú pháp: package PackageCha[.PackageCon];
Phài là dòng đầu tiên của code java.
/* Comment */
package PackageCha[.PackageCon];
[import OtherPackageName ;]
class ClassName
{ .......
}
Khi biên dịch thành công:
Nếu chưa có thư mục
PackageName thì thư mục
này sẽ được tự động tạo ra
file.class của code này sẽ
được đặt vào thư mục này.
7.8- Sử dụng Package
Dùng chỉ thị import với một trong các cú pháp sau:
import PackageName.*;
import PackageCha.PackageCon.*;
import PackageName.ClassName;
import PackagCha.PackageCon.ClassName;
Thí dụ
Tạo các package với cấu trúc:
Thí dụ...
Thí dụ...
Thí dụ...
Thí dụ...
Thí dụ...
Bài tập
Bạn viết thêm:
(1) Lớp FacultyList để quản lý danh sách giáo viên đưa vào gói Faculty.
(2) Lớp FacultyListDemo để minh họa việc quản lý danh sách giáo viên.
Xây dựng các gói theo thiết kế sau:
public class Calculate
{ public static double Volume(double l,
double w, double h)
{return l*w*h;}
public static double Add(double n1, double n2)
{ return n1+n2;}
}
public class Circle
{ double r;
public Circle(double rr) { r=rr;}
public double Circumference()
{ return 2*Math.PI*r;}
public double Area() { return Math.PI* r*r; }
}
Thí dụ...
Sau đó, viết một chương trình sử dụng hai lớp trong hai gói này.
Thí dụ: Sử dụng gói tại bên trong gói
Thí dụ: Sử dụng gói nhưng ở bên ngoài gói
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép Student.class từ thư mục StudentClasses sang
Error
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép cả thư mục StudentClasses sang
Error vì lớp Student tham khảo gói CommonClasses
Sử dụng gói bằng cách copy gói sang thư mục khác
Chép cả thư mục StudentClasses lẫn CommonClasses sang
OK
Chép gói thì phải chép cả thư mục chứa + các thư mục có liên quan
Tóm tắt
Interface bao gồm khai báo các hằng, các hành vi mà một lớp có thể có.
Một lớp hiện thực một interface là cụ thể hóa (viết code) các method đã khai báo trong interface này.
Một lớp có thể implement nhiều interface.
Một lớp trừu tượng có thể bỏ chưa hiện thực các method của interface.
Interface có thể thừa kế interface bằng extends
Interface con hội các hành vi có trong interface cha và các hành vi được khai báo thêm.
Cú pháp hiện thức một lớp có implements interface:
class A extends LớpCha implements Interface_1, interface_2,...
{ ......
< hiện thực các methods trong interface>
}
Tóm tắt
Interface được xem như là lớp trừu tượng.
Có thể khởi tạo đối tượng trực tiếp thông qua interface hoặc lớp trừu tượng với điều kiện cụ thể hóa hành vi.
Package: Bao gồm các interface, các class và các package con.
Mỗi package là một thư mục chứa lớp.
Sử dụng gói bằng chỉ thị import và phải đứng từ bên ngoài gói.
Khi sao chép các tập tin .class trong một gói thì phải sao chép cảc thư mục chứa lẫn cấu trúc của các thư mục (gói) có liên quan.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Thị Thu Thủy
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)