1. Giao diện (Interface)
Giao diện là một giải pháp của Java nhằm
thay thế cho đa kế 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.
Khai báo giao diện:
i t f nterface
{
khai báo các nội dung của giao diện
Ví dụ: Giao diện tính toán trên các hình.
interface TinhToanHinh
{
public final double PI = 3.1415;
double dientich();
double chuvi();
}
Có thể coi giao diện như một lớp trừu
tượng đặc biệt: các phương thức đều trừu
tượng.
Khai báo lớp cài đặt giao diện: phải
tường minh các phương thức của giao
diện.
Cú pháp:
class implements
{
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
}
9 trang |
Chia sẻ: candy98 | Lượt xem: 668 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Lập trình hướng đối tượng (OOP) - Chương 6: Gói và Giao diện - Văn Thị Thiên Trang, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
22/01/2013
1
Chương 6.
GIAO DiỆN, GÓI
1
Mục đích & yêu cầu
Giới thiệu một thành phần cơ bản: Gói, giao
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.
2
1. Giao diện (Interface)
Giao diện là một giải pháp của Java nhằm
thay thế cho đa kế 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.
Khai báo giao diện:
i t f tê i diện er ace
{
khai báo các nội dung của giao diện
}
3
1. Giao diện (Interface)
Ví dụ: Giao diện tính toán trên các hình.
interface TinhToanHinh
{
public final double PI = 3.1415;
double dientich();
double chuvi();
}
4
22/01/2013
2
1. Giao diện (Interface)
Có thể coi giao diện như một lớp trừu
tượng đặc biệt: các phương thức đều trừu
tượng.
Khai báo lớp cài đặt giao diện: phải
tường minh các phương thức của giao
diện.
Cú pháp:
class implements
{
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)
Ví dụ: lớp hình chữ nhật cài đặt giao diện
TinhToanHinh
class HinhChuNhat implements TinhToanHinh{
private double dai, rong;
public HinhChuNhat(double d, double r)
{dai = d; rong = r;}
public double chuvi(){ return dai+rong;}
public double dientich(){return dai*rong;}
}
6
1. Giao diện (Interface)
Lớp hình tròn cài đặt giao diện TinhToanHinh
l Hi hT i l t Ti hT Hi hc ass n ron mp emen s n oan n
{
private double bankinh;
public HinhTron(double d) { bankinh = d;}
public double chuvi() { return
2*bankinh*PI;}
public double dientich()
{ return bankinh*bankinh*PI; }
}
7
1. Giao diện (Interface)
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
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ở.
8
22/01/2013
3
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);
}
9
1. Giao diện (Interface)
Phạm vi của các thành phần trong giao diện:
• Thành phần là hằng thì có phạm vi là public
static final.
• Thành phần là phương thức có phạm vi public.
Sử dụng giao diện như tham chiếu: tương tự
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.
Ví dụ:
TinhToanHinh x = new HinhTron(3.0);
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 vi hinh tron " + h chuvi());. . = .
System.out.println("Dien tich hinh tron = "+ h.dientich());
}
}
11
1. Giao diện (Interface)
Một lớp có thể cài đặt nhiều giao diện.
Ví dụ:
class HinhTron implements TinhToanHinh,
VeHinh
{ }
12
22/01/2013
4
1. Giao diện (Interface)
Phân biệt giữa lớp trừu tượng và giao diện:
• Lớp trừu tượng có thể chứa các thuộc tính, trong khi giao
diện chỉ chứa các hằng và khai báo phương 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.
Khi cần xây dựng một lớp trừu tượng không có dữ
liệu và mọi phương thức đều là trừu tượng thì nên
dùng giao diện để thay thế.
13
2- Gói (Package) là gì?
Bài
class C1
class C2
class C3
Quản lý thế nào?
Phâ hó
Phân tích, quản lý
project
toán .......
class Cn
n n m
theo chức năng
Nhóm 1
class C1
class C2
class C3
Nhóm 2
class C1
class C2
class C3
ó
Nhóm ...
class C8
Nh m 2_1
class C4
class C5
Nhóm 2_2
class C6
class C7
....
class Cn
Mỗi nhóm để trong
một thư mụcÎ Package
14
2. Packages
• 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
NO YES YES YES
cha
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
15
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).
16
22/01/2013
5
2.1 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.
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.
17
2.2- 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;
18
Thí dụ
Tạo các
package
với cấu
trúc:
19
Thí dụ...
20
22/01/2013
6
Thí dụ...
21
Thí dụ...
22
Thí dụ...
Tham khảo gói java,util
để biết về các lớp java
làm sẵn để quản lý
các loại danh sách
23
Thí dụ...
import hai
lớp
24
22/01/2013
7
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; }
}
25
Thí dụ...
Sau đó, viết một chương trình sử dụng hai lớp trong hai gói này.
26
Thí dụ: Sử dụng gói tại bên trong gói
Sử dụng gói mà
source code nằm
t ói ẽ ó bá rong g s c o
lỗi Î Sử dụng gói
phải ở bên ngoài gói.
27
Thí dụ: Sử dụng gói nhưng ở bên ngoài gói
Gói tự tạo
ầ hỉc n c
định rõ
import lớp
nào
28
22/01/2013
8
Sử dụng gói bằng cách copy gói sang
thư mục khác
Chép
S d l ừtu ent.c ass t
thư mục
StudentClasses
sang
Î Error
29
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
30
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
31
Bài tập
Quản lý tài liệu ở thư viện
Một thư viện gồm các loại tài liệu sau:
• Sách(Mã sách, Tên Sách, Tác giả, NXB, Năm XB, Vị trí)
• Tạp chí (Mã tạp chí, Tên tạp chí, Chuyên ngành, Số,
Năm, Vị trí)
• CD(Mã CD, Tên CD, Số thứ tự, Nội dung, Vị trí)
Hãy tổ chức các lớp sao cho có thể lập trình để
thực hiện được các chức năng sau:
• Lưu danh sách các tài liệu có trong thư viện.
• Liệt kê toàn bộ tài liệu có trong thư viện.
• Liệt kê từng loại tài liệu có trong thư viện.
• Xem thông tin về tài liệu khi biết mã tài liệu.
• Tìm kiếm một tài liệu theo: Tên và tác giả đối với sách;
Tên tạp chí, Chuyên ngành, số, năm đối với tạp chí, Tên
CD, Số thứ tự và nội dung đối với CD.
32
22/01/2013
9
Thực hành
1. Thực hành bài quản lý danh sách nhân
iê bằ 2 á hv n ng c c :
• Không dùng lớp trừu tượng.
• Dùng lớp trừu tượng.
2. Thực hành bài DTHINH cài đặt bằng
giao diện.
3. Thực hành bài quản lý tài liệu thư
viện.
33