Gói (Package)

Một phần của tài liệu Tổng quan về Lập Trình Java (Trang 55 - 57)

Giao diện lập trình ứng dụng Java (APT) là tên của tất cả các lớp đã đợc cung cấp cho các lập trình viên cùng với trình biên dịch Java. Rất nhiều lớp có trong API, và chúng vẫn tiếp tục phát triển trong mỗi phiên bản mới của trình biên dịch. Đặc biệt nếu bạn theo dõi các phần nói về applet trong cuốn sách này, bạn sẽ thấy những thành phần quan trọng của API Java.

Tên gói Nội dung

java.applet Các lớp dùng để thực hiện các Applet

java.awt Các lớp đồ hoạ, cửa sổ, và các GUI

java.awt.event Các lớp hỗ trợ mô hình xử lý sự kiện “uỷ nhiệm” (delegation event handling model)

java.awt.image Các lớp hỗ trợ xử lý ảnh

java.awt.peer Các định nghĩa giao diện (interface) cho các GUI độc lập phần cứng

java.io Các lớp hỗ trợ vào ra

java.lang Các lớp cơ sở của ngôn ngữ (nh String

và Math)

java.net Các lớp hỗ trợ lập trình mạng

java.util Các lớp bổ trợ các tiện ích nh

Date: 1999-08-31 21:33:34

Bảng 12.1: Một số gói hữu dụng đợc định nghĩa sẵn trong Java.

Tất cả các lớp đã đựơc định nghĩa sẵn đều gây ra vấn đề trong việc tổ chức. Hơn nữa, vì các lý do năng suất, các lập trình viên cần có một cách để chỉ ra rằng họ chỉ cần

một tập hợp con các lớp trong mỗi file nguồn. Để giải quyết vấn đề này, Java định vị các lớp trong những th mục (directory, folder) khác nhau trong máy tính của bạn. Các lớp trong mỗi th mục hình thành một gói. Một số gói hữu dụng của Java đợc liệt kê trên bảng 12.1. Chẳng hạn, java.applet là gói tất cả các lớp trong th mục con applet của th mục java. Vị trí của th mục /java thay đổi trên những phần cứng khác nhau.

Nếu bạn muốn sử dụng một lớp trong một gói nào đó (chẳng han, lớp Mathtrong gói java.lang), bạn có thể viết tên đầy đủ có bổ nghĩa của nó nh sau:

x = java.lang.Math.sqrt (3);

Tuy nhiên, điều này hơi phiền phức; Java cung cấp một phơng pháp chỉ rõ bạn sẽ truy cập vào các lớp trong một gói riêng biệt nào đó. Điều lệnh importđợc sử dụng cho mục đích này. Cú pháp của nó có hai biến thể chung nh sau:

import package_name.class_name;

import package_name.*;

Biến thể thứ nhất cho phép lớp đợc trích dẫn không cần bổ nghĩa cho tên lớp. Biến thể thứ hai cho phép tất cả các lớp trong gói đợc sử dụng không cần bổ nghĩa cho tên của chúng. Chẳng hạn, đoạn mã :

java.util.Date d = new java.util.Date();

java.awt.Point p = new java.awt.Point(1,3);

java.awt.Button b = new java.awt.Button();

có thể rút gọn lại nh sau:

import java.util.Date;

import java.awt.*;

...

Date = new Date();

Point p = new Point(1,3);

Button b = new Button();

Java thừa nhận các lớp trong java.lang là có sẵn. Vì thế coi nh bạn đã có sẵn điều lệnh import java.lang ở đầu tất cả các chơng trình của mình.

Thế còn về các lớp mà do chính bạn định nghĩa ? Chúng tôi không nói rằng bất kỳ một lớp nào của chúng ta cũng đều cần là thành phần của một gói riêng biệt. Tất cả các file .classmà bạn định vị trong một th mục thuộc về cùng một gói (không có tên). Để một lớp đợc định vị trong một gói (có tên) nào đó, bạn không chỉ cần lu file .classvào th mục cần thiết mà cần biên dịch file này với một điều lệnh package, báo cho Java biết lớp này là một thành phần của gói:

package package_name;

và đó phải là dòng đầu tiên trong file nguồn.

Điểm khác nhau duy giữa một lớp và một lớp khác là tên đợc dùng để tham chiếu tới các lớp trong hai gói. Tuy nhiên, một sự khác nhau nữa có liên hệ tới tính khả quan

(visibility) của tên. Hãy xem xét trờng hợp đối với các biến thể hiện. Nh bạn biết, các biến thể hiện chung (public) của một lớp C là khả truy cập đối với bất kỳ một phơng thức nào thuộc bất kỳ một lớp nào (Một ví dụ về một lớp với các biến chung là Point, trong gói java.awt). Các biến thể hiện riêng (private) là khả quan chỉ với các phơng thức trong bản thân lớp C. Vậy còn đối với các biến không đợc mô tả là public hoặc

private thì sao ? Trờng hợp này các tính khả quan của biến đợc áp dụng ở mức gói – nghĩa là khả quan với mọi phơng thức đợc định nghĩa trong những lớp cùng gói với C, và chỉ với những phơng thức này. áp dụng tơng tự với các biến tĩnh, các phơng thức thể hiện và các phơng thức tĩnh.

Tính khả quan của các lớp lại tuân theo một quy tắc khác. Một lớp đợc mô tả là

public thì khả quan với mọi lớp, và một lớp không đợc mô tả là public thì khả quan với những lớp trong cùng gói riêng của nó. Các lớp không thể đợc mô tả là private.

Một phần của tài liệu Tổng quan về Lập Trình Java (Trang 55 - 57)

Tải bản đầy đủ (DOC)

(75 trang)
w