Lý thuyết hướng đối tượng trong Java

ppt 43 trang phuongnguyen 3980
Bạn đang xem 20 trang mẫu của tài liệu "Lý thuyết hướng đối tượng trong Java", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptly_thuyet_huong_doi_tuong_trong_java.ppt

Nội dung text: Lý thuyết hướng đối tượng trong Java

  1. Thế giới Java LÝ THUYẾT HƯỚNG ĐỐI TƯỢNG TRONG JAVA 1
  2. Cấu trúc mã nguồn của *.java Thế giới Java CAU TRUC FILE NGUON JAVA *.java Package Imports Classes Interfaces Comments Inner Variabales Constructors Methods Classes Variabales Methods 2
  3. Cấu trúc mã nguồn của *.java Thế giới Java ❖ package : Định nghĩa gói ❖ imports : Chỉ địng các gói cần sử dụng ❖ classes : Định nghĩa các lớp ❖ interfaces : Định nghĩ các interface ❖ Comments : Các loại ghi chú ▪ Chỉ có một class hoặc interface được định nghĩa public. Khi ấy tên của class hay interface đó phải trùng với tên của file java ▪ Mỗi class hay 1 interface khi dịch sẽ sinh ra 1 file *.class thuộc vào thư mục của gói 3
  4. Cấu trúc mã nguồn của *.java Thế giới Java package com.abc; package import java.util.*; import java.io.*; imports class MyOtherClass{} public class HelloWorld{ classes String s = “Hello”; / Phuong thuc khoi dau ung dung */ comments public double m(String s, int i){return i*5.56;} static class InnerClass{} } methods interface MyInterface{} interface Inner class 4
  5. package & imports Thế giới Java ❖ Package: ▪ Mỗi package chứa các class và interface ▪ Trong một package không thể tồn tại 2 class hay interface cùng tên. ❖ Imports ▪ Khi sử dụng một class ta cần chỉ ra package chứa class đó bằng lệnh import. ▪ Các class trong java.lang được import tự động. ❖ Ví dụ : package com.aptech; import java.io.File; // chỉ import class File import java.util.*; // import tất cả các class và interface public class Abc{} 5
  6. Định nghĩa class Thế giới Java Class1, , Class4: ❖Cú pháp tên các class public class Class1{} /*extends Object*/ public class Class2 extends SuperClass{} public class Class3 implements MyInterface1, MyInterface2{} public class Class4 extends SuperClass implements MyInterface1, MyInterface2{} SuperClass: class cha của Class2, Class3 MyInterface1, MyInterface2: tên các interface 6
  7. Ví dụ: định nghĩa class Thế giới Java class Person { public String name = “Nguyen Van A”; public int age = 20; } class Employee extends Person { public double salary = 300; } class Student extends Person { public double marks = 9.5; } 7
  8. Khai báo biến thành viên Thế giới Java ❖ Cú pháp : [= ]; ▪ Trên một dòng lệnh có thể khai báo nhiều biến, các biến cách nhau bởi dấu phẩy. ▪ Khi khai báo các biến có thể được khởi tạo. Nếu không khởi tạo thì các biến tự động khởi tạo với giá trị mặc định như sau: • Đối với kiểu đơn giản: giá trị mặc định là zero • Đối với kiểu tham chiếu: giá trị mặc định là null ❖ Ví dụ : static String x, y = “ABC”; public int a = 55, b; ▪ x, y, a, b : các biến ▪ private, static: các modifier ▪ “ABC”, 55 : giá trị khởi tạo 8
  9. Khai báo phương thức Thế giới Java ❖ Cú pháp ([arguments]) [throws Exception1[, Exception2]]{ [return expression]; } ▪ Có thể có hay không có tham số vào ▪ Có thể có hay không có lệnh return; ▪ Có thể có hay không có các loại trừ được quăng ra ❖ Ví dụ : class C{ public int add(int x, int y) { return (x+y); } public void print() { System.out.println(“Chao qui vi dai bieu !”); } } 9
  10. Phương thức khởi dựng Thế giới Java ❖ Cú pháp ([arguments]) [throws Exception1[, Exception2]]{ // không bao giờ chứa lệnh return } ▪ Tên giống tên class ▪ Không có kiểu trả về ▪ Sử dụng từ khóa new để tạo đối tượng ❖ Ví dụ public class Person{ String name; int age = 0; public Person(String n, int a) { this.name = n; this.age = a; } public Person(String n) { this(n, 20); // gọi constructure khác } } ❖ Sử dụng Person p = new Person(“A”, 50); // A, 50 tuoi Person p1 = new Person(“B”); // B, 20 tuoi 10
  11. Ghi chú quan trọng về Constructor Thế giới Java ❖ Có thể có nhiều constructor nhưng phải khác tham số. Mỗi constructor là một cách tạo ra đối tượng. ❖ Nếu không có constructor thì constructor mặc định là constructor không tham số. ❖ Trong constructor, dùng this([tham số]) để gọi constructor khác. dùng super([tham số]) để gọi constructor của class cha. super( ) hay this( ) chỉ được gọi 1 lần và là lời gọi đầu tiên trong constructor đó. ❖ Nếu constructor không gọi this( ) hay super( ) thì super() được gọi tự động. 11
  12. Phương thức Huỷ bỏ trong java Thế giới Java ❖Nhằm để thu dọn bộ nhớ khi những đối tượng được tạo ra không con mối quan hệ vơi các tham chiếu của chúng. ❖Chính vì vậy, trong Java coi đây là bộ phận nhặt rác (garbage-collector), nhằm thu gom những dữ liệu vô nghĩa. ❖Tên của phương thức hủy bỏ là: protected void finalize() 12
  13. Khai báo inner class Thế giới Java ❖ Inner class bao gồm: ▪ Member class : là các class nội thành viên • Static • Non-static ▪ Anonymous class : Các class nặc danh (không tên) ▪ Local class : các class được định nghĩa trong khối ❖ Ví dụ class MyClass{ class NonStaticClass{} Sử dụng IC1 & IC2 static class StaticClass{} Class C1{ public void method(){ C c = new C(); class LocalClass{} C.IC1 ic1 = c.new IC1(); } C.IC1 ic1 = new C().new IC1(); } C.IC2 = C.new IC2(); } 13
  14. Modifiers Thế giới Java 14
  15. Modifier truy xuất Thế giới Java ❖ Public, Protected, {}, Private ❖ Modifier truy xuất được dùng để định nghĩa tính chất truy xuất cho class, biến thành viên hay method. C1 & C2 public protected {} private C1, C2 cùng package yes yes yes no C1, C2 package và C1 không con C2 yes no no No Xem ví dụ trong giáo trình trang 35 15
  16. Modifier - final Thế giới Java ❖final có thể dùng để định nghĩa ▪ Class : không cho thừa kế class này ▪ Variable : hằng số ▪ Method : không cho phép override ở subclass ❖ Ví dụ: final class C{ final int x = 5; final void method() { // statements } } 16
  17. static Thế giới Java ❖Bổ từ static gắn thêm phía trước một thành viên để chỉ định thành viên nay có ảnh hưởng đến tất cả các đối tượng của lớp, ❖Nói cách khác các đối tượng cùng chia sẻ đến thành viên static này. 17
  18. Modifier - static Thế giới Java ❖ static có thể dùng để định nghĩa ▪ Variable : tài nguyên chung cho các instance của cùng 1 process. ▪ Method và Variable : được truy xuất trực tiệp thông qua tên class mà không cần khởi dựng đối tượng. ▪ Block : chứa các biểu thức tác động lên biến static ❖ Ví dụ: class C{ static int x = 5, y = 7; static void method() { } static{ x += y+5; } } 18
  19. Thế giới Java Ví dụ tạo một hồ sơ của học sinh Gồm họ tên học sinh và tổng số học sinh sau khi tạo xong đối tượng? 19
  20. Ví dụ tạo một hồ sơ của học sinh Thế giới Java class hoso { static int tongHS; //biến tĩnh String hoten; hoso(String ht) { tongHS++; hoten = ht; } static void tongket() { System.out.println("Tong so hs: "+ tongHS); } void xuatHS() { System.out.println(""+hoten); } } 20
  21. Kết Quả Thế giới Java public class HocSinh { public static void main(String[] args) { hoso hs1 = new hoso("Nguyen X Nhut"); hoso hs2 = new hoso("Nguyen Nghiem"); hoso hs3 = new hoso("Nguyen van kien"); hoso.tongket(); //co 3 ho so do tao 3 Object hs1.xuatHS(); hs2.xuatHS(); } } 21
  22. Thế giới Java Các đối tượng sử dụng chung biến A Object 1 A Object 2 22
  23. Modifier - abstract Thế giới Java ❖abstract có thể dùng để định nghĩa ▪ Class : phải được thừa kế mới có thể sử dụng các thành viên của nó. ▪ Method : bắt buộc phải override ở subclass. Method này chỉ định nghĩa mà không viết đầy đủ thân. Nếu trong class có một phương thức abstract thì class đó buộc phải là abstract ❖ Ví dụ: abstract class C{ abstract void method(); } 23
  24. Modifier - others Thế giới Java ❖ native : định nghĩa cho phương thức được viết mã lệnh trong một ngôn ngữ khác (C chẳn hạn) ❖ Transient, volatile, synchronized ❖ Ví dụ Class C{ native void method(); transient String x = “CTIM”; synchronized void method1(){ } C1 c1 = new C1(); synchronized(c1){ } } 24
  25. Kế Thừa (extends) Thế giới Java ❖Trong quá trình lập trình, có thể tạo ra các lơp từ các lớp có sẵn. ❖Mục tiêu của sự thừa kế là trên cơ sở các lớp có sẵn, dẫn xuất ra các lớp con cháu để được một hệ thống phả hệ phong phú. ❖Đặc biệt chế độ window như Microsoft Windows, X Window System, v.v 25
  26. Java đơn kế thừa Thế giới Java import javax.swing.*; import java.awt.*; class LFrame extends JFrame{ public static void main( String[] args ){ LFrame cuaso = new LFrame(); cuaso.setTitle( "Hello" ); cuaso.setSize( 300, 100 ); cuaso.setVisible( true ); cuaso.setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE); } } 26
  27. Bài Tập Ví Dụ Thế giới Java Viết chương trình tính lương cho Nhân Viên gồm HoTen,QueQuan, Lương Các Phương thức: xuất, tính Lương Cty có 2 phòng ban là NV_VP và NV_SX NV_VP : tính lương theo ngày công (Lương =(Số ngày công/22)*700000) NV_SX: tính luơng theo số sản phẩm (Lương =Số sản phẩm*20000) 27
  28. Dùng từ khoá extends để kế thừa Thế giới Java NHAN_VIEN Ho_ten,Dia_Chi Xuat, Tinh_luong NV_VP NV_SX So_nc So_sp Tinh_luong, Xuat Tinh_luong, Xuat 28
  29. Thế giới Java OVERLOADING & OVERRIDING 29
  30. Overloading Thế giới Java ❖ Trong một class có thể có nhiều phương thức cùng tên nhưng khác nhau về danh sách tham số (kiểu, số lượng) được gọi là overload. ❖ Ví dụ: public void method(int x) {} public void method(float x) {} public int method(int y) {} // không hợp lệ Các lời gọi method(5), method(5f) là khác nhau 30
  31. Overloading Methods Thế giới Java Version 1 Version 2 float tryMe (int x) float tryMe (int x, float y) { { return x + .375; return x*y; } } Invocation result = tryMe (25, 4.32) 31
  32. Override Thế giới Java ❖ Nếu lớp con có phương thức giống (tham số và kiểu trả về) phương thức lớp cha được gọi là override. ❖ Phương thức override phải có quyền truy xuất >= phương thức bị override ❖ Phương thức override không được phép quăng loại trừ không hợp lệ đối với phương thức bị override ❖ Để gọi phương thức bị override của lớp cha ta dùng super.xxx( ) trong đó xxx( ) là tên phương thức. Class C{ protected int add(int x, int y) throws IOException{} } Class C1 extends C{ protected int add(int x, int y) throws IOException{} //? public int add(int x, int y) throws FileNotFoundException{} //? public int add(int x, int y) throws Exception{} //? private int add(int x, int y) throws IOException{} //? } 32
  33. Thế giới Java INTERFACE 33
  34. Định nghĩa Interface (1) Thế giới Java ❖ Là bản khai báo các phương thức, biến để class nào thực hiện thì phải viết đầy đủ các phương thức này cũng như trong super interface. ❖ Khai báo interface: interface [extends SuperInterface] { // Các khai báo phương thức và biến } ❖ Thực hiện : sử dụng [implements ] Ví dụ : class C implements Runnable, Serializable{ } Runnable, Serializable : là các interface 34
  35. Định nghĩa Interface (2) Thế giới Java ❖ Các phương thức trong interface chỉ được phép dùng modifier public để định nghĩa. ❖ Không như abstract class, interface không cho phép viết một phương thức đầy đủ. ❖ Một class chỉ thừa kế một class duy nhất nhưng có thể thực hiện nhiều interface khác nhau. ❖ Nếu bỏ qua một số phương thức nào đó của interface thì class thực hiện phải được khai báo abstract 35
  36. Thực hiện interface Thế giới Java interface ISecurity{ public boolean login(String account, String passworld); } interface IBAcount extends ISecurity{ public void guiTien(int money); public void rutTien(int money); } class BankAccount implements IBAccount, Runnable{ public boolean login(String acc, String pass){ } // của ISecurity public void guiTien(int money){ } // của IBAcount public void rutTien(int money){ } // của IBAcount public void run(){ } // của Runnable public void rutTienUSD(int usdMoney){ } // Phương thức mới } 36
  37. Sử dụng interface Thế giới Java public class MyClass{ public void method(ISecurity is){ } } Các câu lệnh sau là hợp lệ ▪ BankAccount ba = new BankAccount(); ▪ ISecurity is = new BankAccount(); ▪ IBAccount ib = new BankAccount(); ▪ is = (ISecurity )ba; ▪ ib = (IBAccount )ba; ▪ MyClass mc = new MyClass(); ▪ mc.method(is); ▪ mc.method(ba); 37
  38. Thế giới Java XỬ LÝ LOẠI TRỪ (EXCEPTION) 38
  39. LOẠI TRỪ - Exception Thế giới Java ❖ Là lỗi xuất hiện trong quá trình chương trình thực hiện của đoạn code. Nếu không xử lý thì chương trình có thể bị dừng. ❖ Sau đây là một số loại trừ: ▪ FileNotFoundException : Mở file không có ▪ NullPointerException : Gọi phương thức khi đối tượng null ▪ NumberFormatException : Chuyển chuỗi không phải số sang số ▪ ArrayIndexOutOfBounds : Truy xuất phần tử ngoài phạm vi mảng, ❖ Cơ chế bắt loại trừ như sau: 39
  40. LOẠI TRỪ - Cấu trúc điều khiển Thế giới Java try{ // Code có khả năng xảy ra loại trừ [T] Try block } catch(Exception1 e1){ // Xử lý loại trừ Exception1 [E1] } Throw exist catch Yes Yes catch(ExceptionN eN){ exception bock ? // Xử lý loại trừ ExceptionN [EN] } No finally{ catch blocks // Xử lý bất chấp có loại trừ hay không [F] No } Finally block // Xử lý sau loại trừ [S] After finally 40
  41. LOẠI TRỪ - Qui trình hoạt động Thế giới Java ❖ Thực hiện [T] ▪ Có loại trừ xảy ra • Có bắt : -> [Ei] -> [F] -> [S] • Không bắt : -> [F] ▪ Không có loại trừ : -> [F] -> [S] ❖ Có thể chia loại trừ thành 2 loại • Các loại trừ con cháu của RuntimeException chỉ xảy ra trong khi chạy. Vì vậy không yêu cầu phải bắt mà vẫn dịch tốt. • Còn lại : yêu cầu phải bắt mới dịch được 41
  42. LOẠI TRỪ - Ví dụ Thế giới Java String[] numbers = {“abc”, “123”, “cdf”}; int i = 2; try{ FileInputStream fis = new FileInputStream(“aaa.txt”); Integer.parseInt(numbers[i]); }catch(IOException ioe){ System.out.println(“Lỗi mở file !”); }catch(NumberFormatException nfe){ System.out.println(“Numbers[“+i+”] không phải số !”); }finally{ System.out.println(“Xong try-catch rồi !”); } System.out.println(“Biến number là số !”); 42
  43. LOẠI TRỪ - Người dùng định nghĩa Thế giới Java ❖ Dùng throw new Exception để quăng ra loại trừ pubic void method(String file) throws IOException{ throw new IOException(“Noi dung exception !”); } ❖ Tạo lớp loại trừ mới class InvalidException extends IOException{ public InvalidException(){ super(“Khong hop le !”); } public InvalidException(String msg){ super(msg); } } 43