Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
2,7 MB
Nội dung
Chương : Hướng đối tượng Java GVLT: Trần Anh Dũng Nội dung Các khái niệm lớp, đối tượng Lớp đối tượng java Tính đóng gói Tính kế thừa Tính đa hình Interface Các khái niệm đối tượng (object): Trong giới thực, khái niệm đối tượng xem thực thể: người, vật, bảng liệu,… đối tượng giúp hiểu rõ giới thực Cơ sở cho việc cài đặt máy tính Mỗi đối tượng có định danh, thuộc tính, hành vi Ví dụ: đối tượng sinh viên MSSV: “TH0701001”; Tên sinh viên: “Nguyễn Văn A” Các khái niệm Mỗi đối tượng đảm trách công việc Các đối tượng trao đổi thông tin với Các đối tượng xử lý song song, hay phân tán Các khái niệm Lớp (class): Là khuôn mẫu (template) để sinh đối tượng Ví dụ: lớp đối tượng Sinhvien Sinh viên “Nguyễn Văn A”, mã số TH0701001 → ñối tượng thuộc lớp Sinhvien Sinh viên “Nguyễn Văn B”, mã số TH0701002 → ñối tượng thuộc lớp Sinhvien ðối tượng (object) lớp: Một đối tượng cụ thể thuộc lớp, thể cụ thể lớp Lớp đối tượng java (1) Khai báo lớp class { } Lớp đối tượng java (2) Thuộc tính: Các đặc điểm mang giá trị đối tượng, vùng liệu khai báo bên lớp class { ; } Kiểm soát truy cập thuộc tính public protected private Lớp đối tượng java (3) Phương thức: Chức xử lý, hành vi đối tượng class { … () { … } } Lớp ñối tượng java (4) Phạm vi truy xuất public protected default private phải java ( thường ñược viết C/C++) synchoronized: Dùng ñể ngăn tác ñộng ñối tượng khác lên ñối tượng ñang xét ñang ñồng hóa Dùng lập trình multithreads 10 Lớp final Lớp final: Lớp không cho phép lớp khác dẫn xuất từ hay lớp final có lớp định nghĩa: từ khóa final public final class A { } từ lớp trừu tượng Hình Lớp Hình có thuộc tính tên hình, phương thức tính diện tích, chu vi Lớp trừu tượng (abstract) thường có phương thức trừu tượng, phương thức cài ñặt public abstract void draw(); 34 Lớp trừu tượng (2) Khai báo lớp trừu tượng public abstract class ClassName {…} Các lớp lớp cha trừu tượng phải cài đặt tất phương thức trừu tượng Nếu không trở thành lớp trừu tượng Không thể tạo đối tượng lớp trừu tượng khai báo biến thuộc kiểu lớp trừu tượng để tham chiếu đến đối tượng thuộc lớp 35 Lớp trừu tượng (3) public abstract class Shape{ static final double PI = 3.14159; public abstract double getArea(); public abstract double getVolume(); } extends Shape{ class Circle double radius; public double getArea() { return PI*radius*radius; } 37 Giao tiếp – interface (1) Interface java đưa với hai mục đích chính: để tạo lớp sở ảo (không có phương thức cài đặt) Thực hành vi tương tự kế thừa bội để tạo interface, ta dùng từ khoá interface để triển khai interface dùng từ khóa implements Nếu lớp triển khai nhiều interface? 38 Giao tiếp – interface (2) Một số ý: Các trường interface static final Tất thành phần giao diện tự ñộng public ta không cần phải thêm bổ từ vào Ta không ñược phép thêm bổ từ khác private, protected trước khai báo interface public abstract double volume(); //Trả tên shape public abstract String getName(); } 40 Giao tiếp – interface (4) //Lớp Point cài đặt/hiện thực interface tên shape //định nghĩa lớp Point tập tin Point.java public class Point extends Object implements Shape { protected int x, y; //Tọa độ x, y điểm //Constructor không tham số public Point() { setPoint( 0, ); } //Constructor có tham số public Point(int xCoordinate, int yCoordinate) { setPoint( xCoordinate, yCoordinate ); } 41 Giao tiếp – interface (5) //Gán tọa ñộ x, y cho ñiểm public void setPoint( int xCoordinate, int yCoordinate ) { x = xCoordinate; y = yCoordinate; } //Lấy tọa ñộ x ñiểm public int getX() { return 0.0; } 43 Giao tiếp – interface (7) //Trả tên đối tượng shape public String getName() { return "Point"; } } //End class Point 44 Giao tiếp – interface (8) Một số ý: Lớp triển khai interface phải thực thi tất phương thức khai báo interface, lớp không triển khai, triển khai không hết phải khai báo abstract Interface lớp trừu tượng ta tạo thể interface Một interface mở rộng interface khác, hình thức kế thừa Phạm vi truy cập 46 Một số lưu ý Java toán tử phạm vi (scope) :: Java hủy tử (destructor), có phương thức finalize() ddược gọi Garbage Collector Java template Java tải toán tử (operator overloading) [...]... Lớp trừu tượng (abstract) thường có ít nhất một phương thức trừu tượng, là phương thức không có cài ñặt public abstract void draw(); 34 Lớp trừu tượng (2) Khai báo lớp trừu tượng public abstract class ClassName {…} Các lớp con của một lớp cha trừu tượng phải cài đặt tất cả các phương thức trừu tượng Nếu không nó cũng sẽ trở thành lớp trừu tượng Không thể tạo các đối tượng của một lớp trừu tượng nhưng...Lớp và đối tượng trong java (6) Ví dụ 1: class Sinhvien { //Danh sách thuộc tính String maSv, tenSv, dcLienlac; int tuoi; … //Danh sách các khởi tạo Sinhvien(){ } Sinhvien (…) { …} … //Danh sách các phương thức public void capnhatSV (…) {…} public void xemThongTinSV() {…} … } 11 Lớp và ñối tượng trong java (7) … //Tạo đối tượng mới thuộc lớp Sinhvien Sinhvien sv =... Sinhvien() {…} …} Sinhvien sv = new Sinhvien(); 16 Khối vô danh Trong java ta có thể đặt một khối lệnh không thuộc một phương thức nào Khi đó khối lệnh này được gọi là khối vô danh, khối vô danh này được java gọi thực thi khi một đối tượng được tạo ra, các khối vô danh được gọi trước cả hàm tạo Khối vô danh phải đặt trong cặp { } //bắt đầu khối vô danh { System.out.println ( "khoi khoi dau... liên quan với nhau vào thành một và có thể sử dụng một tên để gọi Ví dụ: Các phương thức đóng gói các câu lệnh đối tượng đóng gói dữ liệu và các hành vi/phương thức liên quan Đối tượng = Dữ liệu + Hành Vi/Phương thức // khai báo trước khi khai báo lớp class { … } 22 Creating packages in Java (1) package mypackage; import mypackage.*; class Palintest { public static void main(String[] args) {... // … đối tượng có thể có nhiều void method_1() { // … “kiểu” hiện hành khác nhau } được gọi là tính đa hình } class B_Object extends A_Object { // … void method_1() { // … } } 29 Tính ña hình (2) class A{ // Câu lệnh trong main public void method(){ System.out.println(“met A a = new A(); a.method(); hod of A”); } } class B extends A { public void method(){ a = new B(); a.method(); 31 Lớp nội (Lớp trong) ... new Sinhvien(); … //Gán giá trị cho thuộc tính của đối tượng sv.maSv = “TH0601001” ; } … Sinhvien sv = new Sinhvien(); sv.maSv = “TH0601001”; sv.tenSv = “Nguyen Van A”; … ? 13 Phương thức khởi tạo (1) Khởi tạo (constructor): Là một loại phương thức ñặc biệt của lớp, dùng ñể khởi tạo một ñối tượng Dùng ñể khởi tạo giá trị cho các thuộc tính của ñối tượng Cùng tên với tên lớp Không có giá trị trả về... phương thức trừu tượng Nếu không nó cũng sẽ trở thành lớp trừu tượng Không thể tạo các đối tượng của một lớp trừu tượng nhưng có thể khai báo biến thuộc kiểu lớp trừu tượng để tham chiếu đến các đối tượng thuộc lớp con của nó 35 Lớp trừu tượng (3) public abstract class Shape{ static final double PI = 3.14159; public abstract double getArea(); public abstract double getVolume(); } extends Shape{ class... class nguoi { … } class sinhvien extends nguoi { … } 25 Tính kế thừa (3) Phương thức định nghĩa lại (Overriding Method) được định nghĩa trong lớp con Có tên, kiểu trả về & các đối số giống với phương thức của lớp cha Có kiểu, phạm vi truy cập “lớn hơn” phương thức trong lớp cha private default protected public 26 Tính kế thừa (4) Ví dụ: abstract class Hinhhoc { … public float tinhdientich() { return... phương thức, kể cả hàm tạo Trước khối lệnh này ta ñặt từ khoá static, từ khoá này báo cho java biết ñây là khối khởi ñầu tĩnh, khối này public void xemThongTinSV() {//…} public void xemThongTinSV(String psMaSv){ //… } } 19 Tham chiếu this Tham chiếu this: Một biến ẩn tồn tại trong tất cả các lớp, this được sử dụng trong khi chạy và tham khảo đến bản thân lớp chứa nó Ví dụ: class Sinhvien { String maSv,... (Lớp trong) Lớp nội: Là lớp được khai báo bên trong 1 lớp khác Ví dụ: public class A { // … int class B { // … int public B(int par_1){ field_2 = par_1 + field_1; } } } 32 Lớp final Lớp final: Lớp không cho phép các lớp khác dẫn xuất từ nó hay lớp final không thể có lớp con định nghĩa: từ khóa final public final class A { } từ lớp trừu tượng Hình Lớp Hình có thuộc tính là tên hình,