Phơng thức

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

đối tợng này. Các phần định nghĩa đợc quy ớc viết theo thứ tự trên, tuy nhiên Java sẽ chấp nhận chúng theo một thứ tự bất kỳ.

Trong chơng này, chúng tôi giới thiệu các lớp và các thành phần của chúng: các phơng thức kiến tạo, các biến thể hiện, và các phơng thc. Chúng ta bắt đầu với một thảo luận về các phơng thức, sau đó xem xét vài ví dụ về các lớp. Chúng ta cũng sẽ thảo luận về tính khả biến (mutability) và bất biến (immutability) của dữ liệu.

Phơng thức

Sự đóng gói mã đợc gọi là phơng thức. Nh bạn đã biết, có hai loại phơng thức: ph- ơng thức thể hiện (instance methods) và phơng thức lớp (class methods). Một ví dụ về phơng thức lớp là Math.sqrt; chú ý rằng nó đợc kích hoạt bằng cách lấy tên của lớp kết hợp với tên của phơng thức. Các phơng thức lớp không gia nhập với một đối tợng riêng biệt nào. Một ví dụ về phơng thức thể hiện là phơng thức setText của lớp TextField. Một ví dụ về lời gọi phơng thức này là tFahr.setText(fahr + ""), trong đó tFahr là một đối tợng của kiểu TextField.

Cũng nh việc các phơng thức lớp và phơng thức thể hiện đợc gọi theo những cách khác nhau, chúng cũng đợc định nghĩa khác nhau. Thực ra, bạn đã từng định nghĩa các phơng thức lớp rồi: main luôn luôn là một phơng thức lớp. Tuy nhiên, trong chơng này, chúng ta chỉ khảo sát về những phơng thức thể hiện. Các phơng thức lớp (và các biến lớp) sẽ đợc xem xét đầy đủ ở chơng VIII. ở đây chúng tôi đa ra một giới thiệu tóm tắt về các phơng thức thể hiện; phần chi tiết xin xem ở phần sau, sau khi bạn đã biết cách định nghĩa một lớp đầy đủ. void g () { } Từ nơi gọi f Trở về nơi gọi f void f () { obj.g(); }

ý tởng cơ sở là một phơng thức chứa một chuỗi các điều lệnh sẽ đợc thực thi khi phơng thức đợc kích hoạt. Các điều lệnh này có thể bao hàm các lời gọi tới những ph- ơng thức khác. Khi một phơng thức f gọi một phơng thức g, Java bắt đầu thực thi các điều lệnh của g, song nhớ rằng đấy là giai đoạn trung gian trong quá trình thực thi f. Khi g hoàn thành, nó trở về (returns) tiếp tục thực thi f, bắt đầu ở nơi nó rời bỏ. Xem hình 5.1.

Hầu hết các phơng thức chúng ta đã biết đều trả về một giá trị nh là kết quả thực thi của chúng. Tuy nhiên, đôi khi một phơng thức không trả về một giá trị nào cả, và chúng ta gọi trờng hợp này là có kiểu trả về là void. Sự phân biệt giữa hai trờng hợp là rất quan trọng. Một lời gọi tới một phơng thức không có gía trị trả về (void) lập thành một điều lệnh Java và có thể đợc thực thi trong bất kỳ một ngữ cảnh (context) nào mà một điều lệnh Java có thể đợc sử dụng. Một lời gọi tới một phơng thức có trả về một giá trị lập thành một giá trị của kiểu trả về bởi phong thức (int, double,...) và có thể đợc dùng trong bất kỳ một ngữ cảnh nào mà một giá trị Java của kiểu đó có thể đợc sử dụng, nh trong một biểu thức.

Để trả về một giá trị từ một phơng thức, sử dụng điều lệnh:

return value;

Khi điều lệnh này đợc thực thi, nó trở về từ phơng thức và giá trị value đợc trả về. Chẳng hạn, giả sử lớp Mousecó một phơng thức tellCol trả về số hiệu cột ở đó hiện thời chuột đợc định vị (Giả thiết rằng vị trí của chuột đợc đánh số bởi các hàng và cột). Nó cần đợc định nghĩa trong lớp Mouse nh sau:

int tellCol ()

{

return col;

}

Để trở về từ một phơng thức không trả về một giá trị nào (kiểu trả về là void), bạn có thể sử dụng một điều lệnh trở về thuần tuý nh sau:

return;

hoặc bạn cũng có thể chỉ cần để cho phơng thức đợc thực thi hết, sau đó nó sẽ tự động trở về.

Phần đầu của một phơng thức đặc tả định danh và kiểu của mỗi tham số; các định danh này đợc gọi là tham số hình thức (formal parametters) của phơng thức. Chẳng hạn, lớp Maze có một phơng thức thể hiện:

boolean checkWall (int dir, int col, int row)

với 3 tham số hình thức dir, col và row, kiểu int.

Khi một phơng thức đợc gọi, lời gọi sẽ cung cấp các giá trị cho mỗi tham số. Các giá trị này đợc gọi là các tham số thực sự (argument.) Chẳng hạn, nếu trickyMaze là một đối tợng Maze, checkWall có thể đợc gọi nh sau:

Các tham số thực sự đợc gán cho các tham số hình thức và sau đó các điều lệnh trong phơng thức đợc thực thi. Sự tơng ứng về số tham số, thứ tự và kiểu tham số giữa các tham số hình thức và các tham số thực sự là bắt buộc. Tuy nhiên, quy tắc này có các ngoại lệ; chẳng hạn, một giá trị int sẽ đợc tự động chuyển thành một giá trị double, nếu cần thiết.

Các phơng thức thể hiện cũng có thể có các biến địa phơng (local variables). Các biến này đợc mô tả bên trong phơng thức, nh các biến chúng ta đã định nghĩa trong ph- ơng thức main.

Lớp Time

Lớp thực sự đầu tiên mà chúng tôi chọn để giới thiệu có kiểu dữ liệu quen thuộc với bạn, đó là giờ và phút trong một ngày. Bạn có thể đoán đợc rằng một gía trị của kiểu

Timenh là hai số nguyên : hourthuộc đoạn [0,23]và minutethuộc đoạn [0,59]. Giả sử rằng sếp của bạn yêu cầu bạn thực hiện một lớp Timecó các phơng thức sau:

• Time addMinute(int m). Cộng m phút vào một đối tợng Time

• void printTime(). In gía trị của một đối tợng Time.

• Time(int h, int m). Phơng thức kiến tạo, khởi tạo một đối tợng Time mới tại h giờ và mphút.

Các phơng thức và phơng thức kiến tạo của lớp lập thành giao diện (interface) của lớp đó. Lý do để sếp của bạn yêu cầu bạn thiết kế giao diện này có thể là anh ta đã đặt hàng văn phòng Payroll viết một chơng trình mới sẽ sử dụng chúng.

Dạng toàn thể của Time là:

class Time

declarations

Time (int h, int m)

constructor definition

Time (addMinute (int m)

method definition

void printTime()

method definition

Trớc tiên chúng ta sẽ thảo luận về cách mà lớp Time có thể đợc dùng, sau đó sẽ hoàn thiện nốt phần định nghĩa. Vẻ đẹp trong việc sử dụng các lớp và đối tợng là chúng ta có thể bàn luận về hai khía cạnh này một cách hoàn toàn riêng rẽ!

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

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

(75 trang)
w