Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,34 MB
Nội dung
Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 05 Các kỹ thuật xây dựng lớp sử dụng đối tượng CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Chồng phương thức Thành viên ĐT thành viên lớp Truyền tham số cho phương thức Một số lớp tiện ích Java Ví dụ tập CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Chồng phương thức Thành viên ĐT thành viên lớp Truyền tham số cho phương thức Một số lớp tiện ích Java Ví dụ tập CuuDuongThanCong.com https://fb.com/tailieudientucntt Nhắc lại phương thức ◼ ◼ Mỗi phương thức phải có chữ ký riêng Chữ ký phương thức bao gồm: ◼ ◼ Tên phương thức Số lượng đối số kiểu chúng CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.1 Chồng phương thức ◼ Chồng phương thức (Method Overloading): Các phương thức lớp trùng tên chữ ký phải khác nhau: ◼ ◼ ◼ Số lượng tham số khác Nếu số lượng tham số kiểu liệu tham số phải khác Mục đích: ◼ ◼ Tên trùng để mô tả chất công việc Thuận tiện cho lập trình khơng cần phải nhớ q nhiều tên phương thức mà cần nhớ tên lựa chọn tham số cho phù hợp CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.1 Chồng phương thức (2) ◼ Ví dụ 1: ◼ ◼ Phương thức println() System.out.println() có 10 khai báo với tham số khác nhau: boolean, char[], char, double, float, int, long, Object, String, tham số Khơng cần sử dụng tên khác (chẳng hạn "printString“ "printDouble“) cho kiểu liệu muốn hiển thị CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.1 Chồng phương thức (3) ◼ Ví dụ 2: class MyDate { int year, month, day; public boolean setMonth(int m) { …} public boolean setMonth(String s) { …} } public class Test{ public static void main(String args[]){ MyDate d = new MyDate(); d.setMonth(9); d.setMonth(”September”); } } CuuDuongThanCong.com https://fb.com/tailieudientucntt Một số ý với chồng phương thức ◼ ◼ ◼ Các phương thức xem xét chồng chúng thuộc lớp Chỉ nên sử dụng kỹ thuật với phương thức có mục đích, chức năng; tránh lạm dụng Khi dịch, trình dịch vào số lượng kiểu liệu tham số để định gọi phương thức phù hợp → Nếu không chọn chọn nhiều phương thức báo lỗi CuuDuongThanCong.com https://fb.com/tailieudientucntt Thảo luận ◼ ◼ Cho phương thức sau đây: public double test(String a, int b) Hãy chọn phương thức chồng cho phương thức trên: void test(String b, int a) public double test(String a) private int test(int b, String a) private int test(String a, int b) double test(double a, int b) double test(int b) public double test(String a, long b) CuuDuongThanCong.com https://fb.com/tailieudientucntt Thảo luận void void void void void void void void ◼ prt(String s) { System.out.println(s); } f1(char x) { prt("f1(char)"); } f1(byte x) { prt("f1(byte)"); } f1(short x) { prt("f1(short)"); } f1(int x) { prt("f1(int)"); } f1(long x) { prt("f1(long)"); } f1(float x) { prt("f1(float)"); } f1(double x) { prt("f1(double)"); } Điều xảy thực hiện: ◼ ◼ ◼ ◼ f1(5); char x=‘a’; f1(x); byte y=0; f1(y); float z = 0; f1(z);… CuuDuongThanCong.com → int 10 https://fb.com/tailieudientucntt 4.4 StringBuffer ◼ String kiểu bất biến: ◼ ◼ ◼ Đối tượng không thay đổi giá trị sau tạo → Các xâu lớp String thiết kế để không thay đổi giá trị Khi xâu ghép nối với đối tượng tạo để lưu trữ kết → Ghép nối xâu thông thường tốn nhớ StringBuffer kiểu biến đổi: ◼ Đối tượng thay đổi giá trị sau tạo 65 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4 StringBuffer (2) String s = new String(“hello”); String t = s; s = new String(“goodbye”); ◼ 66 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4 StringBuffer (3) ◼ StringBuffer: ◼ Cung cấp đối tượng xâu thay đổi giá trị → Sử dụng StringBuffer khi: ◼ ◼ ◼ Dự đoán ký tự xâu thay đổi Khi xử lý xâu cách linh động, ví dụ đọc liệu text từ tệp tin Cung cấp chế hiệu cho việc xây dựng, ghép nối xâu: ◼ Việc ghép nối xâu thường trình biên dịch chuyển sang thực thi lớp StringBuffer 67 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4 StringBuffer (4) ◼ Tính biến đổi: Nếu đối tượng bị biến đổi, tất quan hệ với đối tượng nhận giá trị 68 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4 StringBuffer (5) ◼ Nếu tạo xâu thơng qua vịng lặp sử dụng StringBuffer StringBuffer buffer = new StringBuffer(15); buffer.append("This is ") ; buffer.append("String") ; buffer.insert(7," a") ; buffer.append('.'); System.out.println(buffer.length()); // 17 System.out.println(buffer.capacity()); // 32 String output = buffer.toString() ; System.out.println(output); // "This is a String." 69 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.5 Lớp Math ◼ java.lang.Math cung cấp thành phần static: ◼ Các toán học: ◼ ◼ ◼ Math.E Math.PI Các hàm toán học: ◼ ◼ ◼ ◼ ◼ max, abs, floor, ceil… sqrt, pow, log, exp… cos, sin, tan, acos, asin, atan… random 70 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.5 Lớp Math (2) ◼ Hầu hết hàm nhận tham số kiểu double giá trị trả có kiểu double ◼ Ví dụ : Math.pow(Math.E, Math.sqrt(2.0*Math.PI)) Hoặc: Math.exp(Math.sqrt(2.0*Math.PI)) 71 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.6 Lớp System ◼ java.lang.System chứa nhiều hàm tiện ích hữu dụng ◼ Kiểm soát vào (I/O) chuẩn ◼ ◼ ◼ Các luồng InputStream in, PrintStreams out err thuộc tính lớp System Có thể thiết lập lại nhờ hàm setIn(), setOut() setErr() arraycopy(): Sao chép mảng tập với hiệu cao CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.6 Lớp System (2) ◼ ◼ ◼ ◼ currentTimeMillis(): Trả thời gian theo millisecond exit(): Kết thúc hoạt động Java Virtual Machine gc(): Yêu cầu thu gom rác hoạt động Các phương thức liên quan đến thuộc tính hệ thống: Lấy thơng tin thuộc tính phiên Java Runtime Environment version, thư mục cài đặt Java, CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.6 Lớp System (3) import java.util.Properties; public class PropertiesTest { public static void main(String[] args) { System.out.println(System.getProperty("path.separator")); System.out.println(System.getProperty("file.separator")); System.out.println(System.getProperty("java.class.path")); System.out.println(System.getProperty("os.name")); System.out.println(System.getProperty("os.version")); System.out.println(System.getProperty("user.dir")); System.out.println(System.getProperty("user.home")); System.out.println(System.getProperty("user.name")); } } CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.6 Lớp System (4) CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Chồng phương thức Thành viên ĐT thành viên lớp Truyền tham số cho phương thức Một số lớp tiện ích Java Ví dụ tập 76 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập ◼ Tiếp tập học trước, sử dụng thành viên lớp để cài đặt đếm số đối tượng lớp NhanVien tạo thời điểm nào, đâu Cài đặt minh họa cách thức sử dụng 77 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập ◼ Cài đặt phương thức, đầu vào số lượng đối tượng lớp NhanVien, đầu tổng lương đối tượng 78 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập ◼ Sử dụng lớp System đếm thời gian phép cộng xâu nhiều lần với String, dùng phương thức append với StringBuffer để so sánh hiệu 79 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... thơng qua đối tượng ◼ Mỗi đối tượng có riêng thuộc tính đối tượng ◼ Giá trị thuộc tính đối tượng đối tượng khác khác Thành viên lớp ◼ Thuộc tính/phương thức truy cập thơng qua lớp ◼ Các đối tượng. .. https://fb.com/tailieudientucntt 2.1 Thành viên static (2) ◼ ◼ Thay đổi giá trị thành viên static đối tượng lớp thay đổi giá trị thành viên tất đối tượng khác lớp Các phương thức static truy cập vào thuộc tính static... khóa this ◼ ◼ Nhắc lại: Tự tham chiếu đến đối tượng tại, sử dụng bên lớp tương ứng với đối tượng muốn tham chiếu Sử dụng thuộc tính phương thức đối tượng thơng qua tốn tử “.”, ví dụ: public class