22/01/2013
Mục đích & yêu cầu
Chương 6.
Giới thiệu một thành phần cơ bản: Gói, giao
bản:
GIAO DiỆN, GÓI
diện.
diện.
Giải thích được Gói, giao diện là gì?
Sử dụng các thành phần này, viết một chương
trình đơn giản.
giản.
1
2
1. Giao diện (Interface)
1. Giao diện (Interface)
Ví dụ: Giao diện tính toán trên các hình.
dụ:
hình.
Giao diện là một giải pháp của Java nhằm
thay thế cho đa kế thừa.
thừa.
Một giao diện là một tập các hằng, các
mẫu phương thức (prototype) mà không
có cài đặt chi tiết.
tiết.
Khai báo giao diện:
diện:
interface TinhToanHinh
{
public final double PI = 3.1415;
1415;
double dientich();
dientich();
double chuvi();
chuvi();
}
interface
{
khai báo các nội dung của giao diện
}
3
4
1
22/01/2013
1. Giao diện (Interface)
Có thể coi giao diện như một lớp
tượng đặc biệt: các phương thức đều
biệt:
tượng.
tượng.
Khai báo lớp cài đặt giao diện:
diện:
tường minh các phương thức của
diện.
diện.
Cú pháp:
pháp:
1. Giao diện (Interface)
trừu
trừu
Ví dụ: lớp hình chữ nhật cài đặt giao diện
dụ:
TinhToanHinh
class HinhChuNhat implements TinhToanHinh{
phải
giao
private double dai, rong;
public HinhChuNhat(double d, double r)
{dai = d; rong = r;}
class implements
public double chuvi(){ return dai+rong;}
{
public double dientich(){return dai*rong;}
Khai báo các thành phần của lớp
Cài đặt chi tiết các phương thức của các giao diện
}
}
5
1. Giao diện (Interface)
6
1. Giao diện (Interface)
Lớp hình tròn cài đặt giao diện TinhToanHinh
class Hi hT
l
HinhTron i l
implements Ti hT
t TinhToanHinh
Hi h
{
Lưu ý: một lớp cài đặt một giao diện thì
phải cài đặt tất cả các phương thức mà
giao diện khai báo (có thể là cài đặt
private double bankinh;
public HinhTron(double d) { bankinh = d;}
public
double
chuvi()
{
return
2*bankinh*PI;}
public double dientich()
{ return bankinh*bankinh*PI; }
rỗng).
rỗng).
Một giao diện có thể mở rộng (kế thừa) từ
một giao diện khác
giao diện mới sẽ có
đầy đủ các thành phần được khai báo trong
giao diện cơ sở.
sở.
}
7
8
2
22/01/2013
1. Giao diện (Interface)
1. Giao diện (Interface)
Ví dụ: giao diện GiaoDienHinh mở rộng từ
giao diện TinhToanHinh
interface GiaoDienHinh extends TinhToanHinh
{
//khai báo các thành phần bổ sung
void ve();
void xoa();
void dichuyen(int x, int y);
}
Phạm vi của các thành phần trong giao diện:
diện:
• Thành phần là hằng thì có phạm vi là public
static final.
final.
• Thành phần là phương thức có phạm vi public.
public.
Sử dụng giao diện như tham chiếu: tương tự
chiếu:
như lớp cơ sở trừu tượng, có thể dùng giao
diện để tạo ra tham chiếu đến đối tượng cài
đặt giao diện.
diện.
Ví dụ:
dụ:
TinhToanHinh x = new HinhTron(3.0);
9
1. Giao diện (Interface)
10
1. Giao diện (Interface)
Ví dụ:
class GiaoDien1
{
public static void main(String args[])
{
TinhToanHinh h;
h = new HinhChuNhat(1,2);
System.out.println("Chu vi HCN = " + h.chuvi());
System.out.println("Dien tich HCN = " + h.dientich());
h = new HinhTron(1);
System.out.println("Chu
System out println("Chu vi hinh tron = " + h chuvi());
h.chuvi());
System.out.println("Dien tich hinh tron = "+ h.dientich());
}
}
11
Một lớp có thể cài đặt nhiều giao diện.
diện.
Ví dụ:
dụ:
class HinhTron implements TinhToanHinh,
VeHinh
{…}
12
3
22/01/2013
2- Gói (Package) là gì?
1. Giao diện (Interface)
Phân tích, quản lý
project
Phân biệt giữa lớp trừu tượng và giao diện:
diện:
• Lớp trừu tượng có thể chứa các thuộc tính, trong khi giao
Bài
toán
diện chỉ chứa các hằng và khai báo phương thức.
thức.
• Một lớp có thể cài đặt nhiều giao diện trong khi chỉ kế thừa
một lớp trừu tượng.
tượng.
Khi cần xây dựng một lớp trừu tượng không có dữ
class C1
class C2
class C3
.......
class Cn
Nhóm 1
class C1
class C2
class C3
liệu và mọi phương thức đều là trừu tượng thì nên
Mỗi nhóm để trong
một thư mục
Package
dùng giao diện để thay thế.
thế.
Quản lý thế nào?
Phâ nhóm
Phân hó
theo chức năng
Nhóm 2
class C1
class C2
class C3
Nhóm 2_1
ó
class C4
class C5
Nhóm 2_2
class C6
class C7
Nhóm ...
class C8
....
class Cn
13
14
Package....
2. Packages
Package:
Package: gói phần mềm.
mềm.
Là một nhóm các class interface các gói
class, interface,
khác đã được biên dịch thành Java
bytecode.
bytecode.
Tổ chức của 1 package là 1 thư mục có
tên là tên của package
• Gói và điều khiển truy xuất (Packages &
Access Control)
Modifier
private
friendly
protected
public
Cùng class
YES
YES
YES
YES
Cùng gói, khác
class
NO
YES
YES
YES
lớp con trong
cùng gói với lớp
cha
NO
YES
YES
YES
Khác gói, khác
lớp
NO
NO
NO
YES
Lớp con khác
gói với lớp cha
NO
NO
YES
YES
SubSub-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).
mục).
Gói là công cụ tạo khả năng tái sử dụng
mã (reusable code).
code).
15
16
4
22/01/2013
2.1 Tạo package
2.22.2- Sử dụng Package
Khai báo package trong code của class.
class.
Dùng từ khóa package
Cú pháp: package PackageCha[.PackageCon];
pháp:
PackageCha[ PackageCon];
Phài là dòng đầu tiên của code java.
java.
Dùng chỉ thị import với một trong các cú
pháp sau:
sau:
import
import
import
p
import
package PackageCha[.PackageCon];
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.
}
PackageName.*;
PackageName.
PackageCha.PackageCon.*;
PackageCha.PackageCon.
PackageName.ClassName;
PackageName.ClassName;
g
PackagCha.PackageCon.ClassName;
PackagCha.PackageCon.ClassName;
- File.class của code này sẽ được đặt vào
thư mục này.
17
Thí dụ
18
Thí dụ...
Tạo các
package
với cấu
trúc:
19
20
5
nguon tai.lieu . vn