http://vietjack.com/java/index.jsp Copyright © vietjack.com Khái niệm hướng đối tượng (OOP) Java Chương này, tìm hiểu khái niệm Hướng đối tượng (OOP) Lập trình hướng đối tượng bao gồm nhiều khái niệm tính kế thừa, gắn kết liệu (Data Binding), tính đa hình, … Simula xem ngôn ngữ lập trình hướng đối tượng Là hệ lập trình mà thứ biểu diễn dạng đối tượng, biết đến ngôn ngữ hướng đối tượng thực Tuy nhiên, Smalltalk xem ngôn ngữ lập trình hướng đối tượng thực Lập trình hướng đối tượng Object (đối tượng) nghĩa thực thể giới thực, chẳng hạn bàn, bóng, bò, … Lập trình hướng đối tượng phương pháp để thiết kế chương trình sử dụng lớp đối tượng Nó làm đơn giản hóa việc trì phát triển phần mềm việc cung cấp số khái niệm: Đối tượng: Một thực thể có trạng thái hành vi Ví dụ xe đạp, bàn, ghế, … Nó mang tính vật lý logic Lớp: Một tập hợp đối tượng Nó thực thể logic Tính kế thừa: Khi đối tượng đạt thuộc tính hành vi đối tượng cha, tính kế thừa Điều làm tăng tính tái sử dụng cho code Nó sử dụng để đạt tính đa hình runtime Tính đa hình: Khi tác vụ thực theo nhiều cách khác gọi tính đa hình Ví dụ: vẽ hình chữ nhật hình tam giác, … Trong Java, sử dụng nạp chồng phương thức (method overloading) ghi đè phương thức (method overriding) để có tính đa hình Một ví dụ khác: mèo kêu meooo, chó sủa goooo Tính trừu tượng: Đó ẩn chi tiết nội hiển thị tính Ví dụ, với gọi điện thoại, tiến trình xử lý nội Trong Java, chúng sử dụng lớp abstract abstract interface để có tính trừu tượng http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Tính bao đóng: Đó gắn kết code liệu với vào đơn vị unit đơn Ví dụ: bạn biết đến viên thuốc nhộng (hay đơn giản gói bột giặt), viên thuốc (hạt bột giặt) khác đóng gói Một lớp Java ví dụ tính bao đóng Java Bean lớp bao đóng thực sự, tất thành viên liệu private Lợi OOP so với ngôn ngữ lập trình hướng thủ tục (procedure-oriented) OOP giúp việc thiết kế, phát triển bảo trì dễ dàng với lập trình hướng thủ tục việc quản lý code khó khăn lượng code tăng lên Điều làm tăng hiệu có trình phát triển phần mềm OOP cung cấp Data Hiding (ẩn liệu) trong hướng thủ tục liệu toàn cục truy cập từ đâu OOP cung cấp cho bạn khả để mô kiện giới thực cách hiệu Chúng ta cung cấp giải pháp cho vấn đề giới thực sử dụng Lập trình hướng đối tượng Điểm khác OOP OBP (Object-base programming) Lập trình dựa đối tượng có tất đặc điểm OOP ngoại trừ tính kế thừa JavaScript VBScript ví dụ ngôn ngữ lập trình dựa đối tượng http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Đối tượng lớp Java Trong chương này, tìm hiểu lớp đối tượng Java Trong kỹ thuật lập trình hướng đối tượng, thiết kế chương trình sử dụng lớp đối tượng Object - Đối tượng thực thể mang tính vật lý mang tính logic, lớp thực thể logic Đối tượng có trạng thái hành vi Ví dụ: Một dog có trạng thái color, name, breed (dòng dõi) có hành vi: Wag (vẫy đuôi), bark (sủa), eat (ăn) Một đối tượng instance (ví dụ,trường hợp) lớp Class - Một lớp nhóm đối tượng mà có thuộc tính chung Lớp Template thiết kế từ đối tượng tạo Đối tượng Java Đó thực thể có trạng thái hành vi, ví dụ bàn, ghế, xe con, mèo, … Nó mang tính vật lý logic Ví dụ logic Banking system Một đối tượng có ba đặc trưng sau: Trạng thái: biểu diễn liệu (giá trị) đối tượng Hành vi: biểu diễn hành vi (tính năng) đối tượng gửi tiền vào, rút tiền ra, … Nhận diện: việc nhận diện đối tượng triển khai thông qua ID Giá trị ID nhìn thấy với người dùng bên Nhưng sử dụng nội JVM để nhận diện đối tượng cách Ví dụ: Bút đối tượng Nó có tên Thiên Long, có màu trắng, … xem trạng thái Nó sử dụng để viết, viết hành vi Đối tượng thể (Instance) lớp Lớp Template thiết kế từ đối tượng tạo Vì đối tượng Instance (kết quả) lớp Lớp Java Một lớp nhóm đối tượng mà có thuộc tính chung Lớp Template thiết kế từ đối tượng tạo Một lớp Java bao gồm: Thành viên liệu http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Phương thức Constructor Block Lớp Interface Copyright © vietjack.com Cú pháp để khai báo lớp class ten_lop{ thanh_vien_du_lieu; phuong_thuc; } Ví dụ đơn giản Lớp Đối tượng Java Trong ví dụ này, tạo lớp Student có hai thành viên liệu id name Chúng ta tạo đối tượng lớp Student từ khóa new in giá trị đối tượng class Student1{ int id; //thanh vien du lieu (cung la bien instance) String name; //thanh vien du lieu (cung la bien instance) public static void main(String args[]){ Student1 s1=new Student1(); //tao mot doi tuong Student System.out.println(s1.id); System.out.println(s1.name); } } Một lớp chứa loại biến sau: Biến Local: Các biến định nghĩa bên phương thức, constructor block code gọi biến Local Biến khai báo khởi tạo bên phương thức biến bị hủy phương thức hoàn thành Biến Instance: Các biến instance biến lớp bên phương thức Những biến khởi tạo lớp tải Các biến instance http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com truy cập từ bên phương thức, constructor khối lớp cụ thể Biến Class: Các biến class biến khai báo với lớp, bên phương thức nào, với từ khóa static Phương thức Java Trong Java, phương thức giống hàm, sử dụng để trưng bày hành vi đối tượng Phương thức giúp code tăng tính tái sử dụng tối ưu hóa code Từ khóa new sử dụng để cấp phát nhớ runtime Constructor Java: Khi bàn luận lớp, chủ đề quan trọng constructor Mỗi lớp có constructor Nếu không viết constructor cách rõ ràng cho lớp biên dịch Java xây dựng constructor mặc định cho lớp Mỗi đối tượng tạo ra, constructor gọi Quy tắc constructor chúng có tên lớp Một lớp có nhiều constructor Sau ví dụ constructor: public class Xecon{ public Xecon(){ } public Xecon(String ten){ // Contructor co mot tham so la ten } } Java hỗ trợ Lớp Singleton Java, bạn tạo instance lớp Tạo đối tượng Java: Như đề cập trước đó, lớp cung cấp thiết kế cho đối tượng Vì thế, bản, đối tượng tạo từ lớp Trong Java, từ khóa new sử dụng để tạo đối tượng http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Có ba bước tạo đối tượng từ lớp: Khai báo: Một khai báo biến với tên biến với loại đối tượng Cài đặt: Từ khóa new sử dụng để tạo đối tượng Khởi tạo: Từ khóa new theo sau lời gọi constructor Gọi hàm khởi tạo đối tượng Dưới ví dụ tạo đối tượng: public class Xecon{ public Xecon(String ten){ // Contructor co mot tham so la ten System.out.println("Ten xe la :" + ten ); } public static void main(String []args){ // Lenh sau se tao mot doi tuong la Xecuatoi Xecon Xecuatoi = new Xecon( "Toyota" ); } } Nếu biên dịch chạy chương trình, cho kết sau: Ten xe la :Toyota Truy cập biến instance phương thức Java Các biến instance phương thức truy cập thông qua đối tượng tạo Để truy cập biến instance, path sau: /* Dau tien, ban tao mot doi tuong */ Doituongthamchieu = new Constructor(); /* Sau ban goi mot bien nhu sau */ Doituongthamchieu.TenBien; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com /* Bay gio ban co the goi mot phuong thuc lop nhu sau */ Doituongthamchieu.TenPhuongThuc(); Ví dụ: Ví dụ giải thích cách để truy cập biến instance phương thức lớp: public class Xecon{ int Giaxe; public Xecon(String ten){ // Contructor co mot tham so la ten System.out.println("Ten xe la :" + ten ); } public void setGia( int gia ){ Giaxe = gia; } public int getGia( ){ System.out.println("Gia mua xe la :" + Giaxe ); return Giaxe; } public static void main(String []args){ /* Tao doi tuong */ Xecon Xecuatoi = new Xecon( "Toyota" ); /* Goi mot phuong thuc lop de thiet lap gia xe */ Xecuatoi.setGia( 1000000000 ); /* Goi mot phuong thuc lop khac de lay gia xe */ Xecuatoi.getGia( ); /* Ban cung co the truy cap bien instance nhu sau */ http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com System.out.println("Gia tri bien :" + Xecuatoi.Giaxe ); } } Biên dịch thực thi chương trình cho kết sau: Ten xe la :Toyota Gia mua xe la :1000000000 Gia tri bien :1000000000 Ví dụ đối tượng lớp mà trì ghi sinh viên Trong ví dụ này, tạo hai đối tượng lớp Student khởi tạo giá trị đối tượng việc triệu hồi phương thức insertRecord Ở đây, hiển thị trạng thái (dữ liệu) đối tượng việc triệu hồi phương thức displayInformation class Student2{ int rollno; String name; void insertRecord(int r, String n){ //phuong thuc rollno=r; name=n; } void displayInformation(){System.out.println(rollno+" "+name);} //phuong thuc public static void main(String args[]){ Student2 s1=new Student2(); Student2 s2=new Student2(); s1.insertRecord(111,"HoangThanh"); s2.insertRecord(222,"ThanhHuong"); s1.displayInformation(); s2.displayInformation(); http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com } } Ví dụ khác lớp đối tượng Java Ví dụ khác trì ghi lớp Rectangle Phần giải thích tương tự trên: class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } Các cách khác để tạo đối tượng Java? Có nhiều cách để tạo đối tượng Java Đó là: Bằng từ khóa new http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Bằng phương thức newInstance() Bằng phương thức clone(), … Bằng phương thức factory, Copyright © vietjack.com Đối tượng vô danh (annonymous) Java Vô danh hiểu đơn giản tên Một đối tượng mà tham chiếu xem đối tượng vô danh Nếu bạn phải sử dụng đối tượng lần, đối tượng vô danh hướng tiếp cận tốt class Calculation{ void fact(int n){ int fact=1; for(int i=1;i