Xem mẫu

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