Nội dung chương 4✦ Giới thiệu phương thức – Lợi ích, Khai báo, Cách gọi... Giới thiệu phương thức tiếpparameter profile gồm kiểu, thứ tự, và số tham số của một phương thức.. Các tham
Trang 2Nội dung chương 4
✦ Giới thiệu phương thức
– Lợi ích, Khai báo, Cách gọi
Trang 3Giới thiệu phương thức (method)
Cấu trúc của phương thức:
Trang 4Giới thiệu phương thức (tiếp)
parameter profile gồm kiểu, thứ tự, và số tham số của một
phương thức
method signature (header) gồm tên phương thức và
parameter profiles.
Các tham số khai báo trong method header được gọi là
tham số hình thức (formal parameters).
Khi phương thức được gọi, các tham số hình thức được
thay thế bởi các biến hoặc dữ liệu, được gọi là các tham số thực
sự (actual parameters).
Trang 5Giới thiệu phương thức (tiếp)
trị Kiểu của giá trị đó là kiểu dữ liệu của phương thức trả về
trị, kiểu của phương thức trả về dùng
từ khóa void.
phương thức main là void
Trang 6Khai báo phương thức
public static int max(int num1, int num2) {
Trang 8Cách gọi phương thức (tiếp)
public static void main(String[] args) {
else result = num2;
return result;
}
pass i
pass j
Trang 9Cách gọi phương thức (tiếp)
The main method
5
2 5
pass 2
parameters
Trang 10phương thức này không trả về bất kỳ giá trị nào.
public static int xMethod(int n) {
Trang 12Truyền tham trị
Ví dụ 4.2: Truyền tham trị
TestPassByValue
Trang 13Truyền tham trị (tiếp)
1
2
n1 n2
2
1
temp 1 Execute swap inside the swap body
num2
Invoke swap The values of num1 and
num2 are passed to n1 and n2 Executing swap does not affect num1 and num2
Trang 14Overloading Methods
Ví dụ 4.3: Overloading method max
public static double max(double num1,
Trang 15là "Gọi mập mờ" (ambiguous invocation)
- đây là một lỗi biên dịch
Trang 16Gọi mập mờ
public class AmbiguousOverloading {
public static void main(String[] args) {
Trang 17Phạm vi của các biến cục bộ
được khai báo trong một phương thức
thể được tham chiếu
khi khai báo đến cuối block chứa biến
đó Một biến cục bộ phải được khai báo trước khi sử dụng
Trang 18Phạm vi của các biến cục bộ (tiếp)
trùng tên nhiều lần trong các khối riêng
rẽ không lồng nhau trong một phương
thức, nhưng bạn không thể khai báo một biến cục bộ 2 lần trong các khối lồng
nhau
Trang 19Phạm vi của các biến cục bộ (tiếp)
// Fine with no errors
public static void correctMethod() {
Trang 20Phạm vi của các biến cục bộ (tiếp)
Trang 21Phương thức trừu tượng - Method Abstraction
Thân phương thức như một hộp đen chứa
sự thực hiện chi tiết của phương thức
Method Signature Method body
Black Box Optional Input Optional return
value
Trang 22Lợi ích của phương thức
• Viết 1 lần, dùng nhiều lần.
• Giấu thông tin Giấu sự thực hiện đối với user.
• Giảm độ phức tạp.
Trang 23The Math Class
Trang 24Các phương thức lượng giác
Trang 29min, max, abs, và random
Trang 31Ví dụ: Tính trung bình và độ lệch chuẩn
Tạo ngẫu nhiên 10 số rồi tính giá trị
trung bình và độ lệch chuẩn theo công
thức:
ComputeMeanDeviation
n
x mean
n i
1
2 1 2
deviation
n i
n i i i
Trang 32Ví dụ: Sinh ký tự ngẫu nhiên
Viết các phương thức sinh các ký tự ngẫu nhiên Chương trình sử dụng các phương
thức này để sinh ngẫu nhiên 175 ký tự nằm giữa '!' và '~' rồi hiển thị 25 ký tự trên
1 dòng
Có thể xem Appendix B, “The ASCII
Character Set.”
RandomCharacter TestRandomCharacter
Trang 33Appendix B: ASCII Character Set
Trang 35Design Diagram
printCalendar (main)
Trang 37Tính giai thừa (tiếp)
Step 1: factorial(4) calls factorial(3)
factorial(4) is called in the main
Step 2: factorial(3) calls factorial(2)
Step 3: factorial(2) calls factorial(1)
factorial(0) = 1 Step 4: factorial(1) calls factorial(0)
Step 5: factorial(0) returns 1
Step 7: factorial(2) returns 2 (2*1) Step 8: factorial(3) returns 6 (3*2)
Step 9: factorial(4) returns 24 (4*6)
Trang 38Tính giai thừa (tiếp)
Space Required for factorial(4)
3
Space Required for factorial(3)
Space Required for factorial(2)
Space Required for factorial(4)
4
Space Required for factorial(3)
Space Required for factorial(2)
Space Required for factorial(1)
Space Required for factorial(4)
5
Space Required for factorial(3)
Space Required for factorial(2)
Space Required for factorial(1)
Space Required for factorial(0)
7
Space Required for factorial(3)
Space Required for factorial(2)
Space Required for factorial(4)
8 Space Required for factorial(3)
Space Required for factorial(4)
9
Trang 40Dãy số Fibonacci (tiếp)
fib(4)=
fib(3) + fib(2) call fib(3)
1
fib(3)=
fib(2) + fib(1)
2 return fib(3) call fib(2)
Trang 41Tháp Hanoi
Ví dụ: Giải bài toán Tháp Hanoi
TowersOfHanoi