Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 3 Lập trình Hướng đối tượng với Java (P1) cung cấp cho người học các kiến thức Khai báo lớp và đối tượng trong Java, phương thức khởi tạo; các phạm vi trong Java, cách sử dụng. Mời các bạn cùng tham khảo.
Chương Lập trình Hướng đối tượng với Java – P1 TRẦN MINH THÁI Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 02 tháng 03 năm 2017 Nội dung #2 Khai báo lớp đối tượng Java Phương thức khởi tạo Các phạm vi Java, cách sử dụng #3 Các khái niệm hướng đối tượng Lập trình hướng đối tượng (OOP) #4 • Mô hình hóa đối tượng giới thực thành đối tượng phần mềm Chương trình = Đối tượng + Thông điệp • Một đối tượng gồm có • • Thuộc tính: đặc điểm, trạng thái đối tượng Hành vi: hành vi/ chức đối tượng Lớp đối tượng gì? #5 • Lớp đối tượng (class): định nghĩa danh sách thuộc tính (dữ liệu) phương thức chung nhóm đối tượng • Lớp khái niệm trung tâm OOP, mở rộng khái niệm cấu trúc (struct) Lớp = thuộc tính + phương thức Lớp đối tượng gì? #6 • • • Lớp xem kiểu liệu (kiểu đối tượng) Lớp giúp lập trình viên: • • • Trừu tượng hóa liệu Đóng gói ẩn thông tin Lớp mô hình hóa rút gọn thực thể thực tế, mô tả thuộc tính, phương thức quan tâm Đối tượng gì? #7 • • Đối tượng (Object): thể cụ thể lớp, thuộc tính có giá trị xác định Đối tượng xem biến có kiểu liệu lớp Lớp đối tượng vs Đối tượng? #8 Thể #9 Các nguyên lý hướng đối tượng Nguyên lý OOP #10 #77 Vấn đề gán so sánh đối tượng Gán đối tượng #78 • • object2 = object1; object1 object2 tham chiếu gán giá trị tham chiếu So sánh đối tượng #79 Sử dụng toán tử (==) object1 == object2 Chỉ kiểm tra xem tham chiếu có cùng trỏ đến đối tượng không? public class SoSanhDoiTuong { private int value; public SoSanhDoiTuong() { this.setValue(0); } public SoSanhDoiTuong(int value) { this.setValue(value); } public int getValue() { return value; } public void setValue(int value) { this.value = value; } } public class SoSanhDoiTuongTest { public static void main(String []args) { SoSanhDoiTuong t1 = new SoSanhDoiTuong(10); SoSanhDoiTuong t2 = new SoSanhDoiTuong(10); System.out.println(" Gia tri t1 = " + t1.getValue()); System.out.println(" Gia tri t2 = " + t2.getValue()); System.out.println("* So sanh hai doi tuong:"); if(t1==t2) System.out.println(" t1 bang voi t2 "); else System.out.println(" t1 khac t2 "); } } Gia tri t1 = 10 Gia tri t2 = 10 * So sanh hai doi tuong: t1 khac t2 public class SoSanhDoiTuongTest { public static void main(String []args) { SoSanhDoiTuong t1 = new SoSanhDoiTuong(10); SoSanhDoiTuong t2 = new SoSanhDoiTuong(); t2 = t1; System.out.println(" Gia tri t1 = " + t1.getValue()); System.out.println(" Gia tri t2 = " + t2.getValue()); System.out.println("* So sanh hai doi tuong:"); if(t1==t2) System.out.println(" t1 bang voi t2 "); else System.out.println(" t1 khac t2 "); } } Gia tri t1 = 10 Gia tri t2 = 10 * So sanh hai doi tuong: t1 bang voi t2 So sánh đối tượng #83 Phương thức equals(Object) • • Trả true thành viên đối tượng có giá trị Trả false ngược lại !!!Chỉ áp dụng lớp Java !!!Đối với lớp định nghĩa mới: Không sử dụng Cần sử dụng nguyên lý nạp chồng phương thức để viết lại public class SoSanhDoiTuongTest { public static void main(String []args) { SoSanhDoiTuong t1 = new SoSanhDoiTuong(10); SoSanhDoiTuong t2 = new SoSanhDoiTuong(10); System.out.println(" Gia tri t1 = " + t1.getValue()); System.out.println(" Gia tri t2 = " + t2.getValue()); System.out.println("* So sanh hai doi tuong:"); if(t1.equals(t2)) System.out.println(" t1 bang voi t2 "); else System.out.println(" t1 khac t2 "); } } Gia tri t1 = 10 Gia tri t2 = 10 * So sanh hai doi tuong: t1 khac t2 public class SoSanhDoiTuong { private int value; public SoSanhDoiTuong() { this.setValue(0); } public SoSanhDoiTuong(int value) { this.setValue(value); } public int getValue() { return value; } public void setValue(int value) { this.value = value; } @Override public boolean equals(Object obj) { SoSanhDoiTuong dt2 = (SoSanhDoiTuong) obj; if (this.value == dt2.value) return true; else return false; } } public class SoSanhDoiTuongTest { public static void main(String []args) { SoSanhDoiTuong t1 = new SoSanhDoiTuong(10); SoSanhDoiTuong t2 = new SoSanhDoiTuong(10); System.out.println(" Gia tri t1 = " + t1.getValue()); System.out.println(" Gia tri t2 = " + t2.getValue()); System.out.println("* So sanh hai doi tuong:"); if(t1.equals(t2)) System.out.println(" t1 bang voi t2 "); else System.out.println(" t1 khac t2 "); } } Gia tri t1 = 10 Gia tri t2 = 10 * So sanh hai doi tuong: t1 bang voi t2 #87 Mảng đối tượng Mảng đối tượng #88 • Cú pháp ClassName[] arrayName = new ClassName[size]; • Trong đó: • • • • ClassName : Tên lớp mà đối tượng tạo từ lớp arrayName : Tên mảng đối tượng size : Kích thước Các phần tử mang giá trị null Mảng đối tượng #89 Hoặc ClassName[] arrayName = {new ClassName(), , new ClassName()}; !!!Số lần khởi tạo đối tượng số lượng mảng Bài tập #90 Bổ sung vào chương trình đăng ký học phần lớp quản lý học phần (QuanLyHocPhan) bao gồm chức năng: • • Tạo danh sách học phần mở gồm thông tin người dùng nhập từ bàn phím • Cho phép hủy đăng ký sinh viên học phần Mỗi lần hủy đăng ký xong, hỏi lại người dùng có tiếp tục không • Hiển thị thông tin học phần người dùng không muốn tiếp tục Cho phép đăng ký thêm sinh viên cho học phần danh sách học phần có sẵn Mỗi lần đăng ký xong, hỏi lại người dùng có tiếp tục không Q&A #91 ... báo lớp đối tượng Java Phương thức khởi tạo Các phạm vi Java, cách sử dụng #3 Các khái niệm hướng đối tượng Lập trình hướng đối tượng (OOP) #4 • Mô hình hóa đối tượng giới thực thành đối tượng. .. phần mềm Chương trình = Đối tượng + Thông điệp • Một đối tượng gồm có • • Thuộc tính: đặc điểm, trạng thái đối tượng Hành vi: hành vi/ chức đối tượng Lớp đối tượng gì? #5 • Lớp đối tượng (class):... lớp, thuộc tính có giá trị xác định Đối tượng xem biến có kiểu liệu lớp Lớp đối tượng vs Đối tượng? #8 Thể #9 Các nguyên lý hướng đối tượng Nguyên lý OOP #10 Trừu tượng hoá #11 • • • Loại bỏ thông