Professional Documents
Culture Documents
On Tap OOP
On Tap OOP
Ở đây, GradeBook là 1 thể hiện (đối tượng) của lớp và được tham chiếu bởi
myGradeBook.
Các phạm vi truy cập
+ Public : có thể truy cập ở bất cứ đâu và bởi bất kỳ ai.
+ Protected : chỉ có thể truy cập bởi lớp đó và các lớp con hoặc các lớp trong
cùng gói (package).
+ Default : chỉ có thể được truy cập bởi các lớp trong cùng gói.
+ Private : chỉ có thể truy cập bởi lớp đó.
Nạp chồng phương thức (overloading) : có thể định nghĩa các phương thức trùng
tên nhưng phải khác danh sách tham số.
4. Thừa kế (Inheritance)
Vì sao cần sử dụng lại? : giảm chi phí sản xuất, đảm bảo chất lượng tốt
Sử dụng lại thông qua quan hệ has – a (composition)
Ví dụ :
class Employee{
int id;
String name;
...
Lớp Employee có 1 address là tham chiếu thực thể -> mối quan hệ là Employee
HAS – A address.
Sử dụng lại thông qua quan hệ is – a (inheritance)
Khi bạn kế thừa từ 1 class hiện có
Ví dụ :
Kế thừa :
- Sử dụng lại thông qua quan hệ “is – a”
- Thừa hưởng lại các thuộc tính, phương thức đã có
- Chi tiết hoá cho phù hợp với đối tượng mới
+ Thêm thuộc tính, phương thức mới
+ Hiệu chỉnh, cài đặt chi tiết phương thức được thừa kế
- Lớp cơ sở : lớp cha, lớp dẫn xuất : lớp con
- Lớp dẫn xuất không kế thừa các phương thức khởi tạo nhưng khi khởi tạo đối
tượng con thì Java sẽ tự động gọi đến constructor cha và có thể gọi constructor
của lớp cơ sở thông qua từ khoá super
- Nếu lớp cơ sở có phương thức khởi tạo mặc định (phương thức khởi tạo
không tham số) : có thể gọi hoặc không gọi constructor của lớp cơ sở
- Nếu lớp cơ sở không có constructor mặc định (phương thức khởi tạo không
tham số) : bắt buộc phải gọi constructor của lớp cơ sở 1 cách tường minh
- Định nghĩa lại (overriding)
+ Phạm vi truy cập : phương thức được định nghĩa lại có phạm vi truy cập
không chặt hơn phạm vi truy cập của lớp cơ sở
+ Kiểu giá trị trả lại như nhau trong phương thức được định nghĩa lại
+ Phương thức private : không được kế thừa ở lớp dẫn xuất, không được
coi là “định nghĩa lại”
5. Đa hình
Kiểu đối tượng tham chiếu trỏ tới
- Thông thường
Dog d = new Dog()
- Đa hình cho phép tham chiếu có thể trỏ đến đối tượng là dẫn xuất của kiểu dữ
liệu được khai báo cho tham chiếu đó
Animal d = new Dog()
Tham chiếu d sẽ trỏ đến đối tượng có những thuộc tính và phương thức của
Animal với những phương thức được override trong Dog
upCasting : biến tham chiếu của lớp cha tham chiếu tới đối tượng của lớp con
Ví dụ : Animal d = new Dog()
downCasting : ngược lại
Ví dụ :
Animal animal = new Cat();
Cat cat = (Cat) animal;
Chỉ down casting trên những tham chiếu đối tượng đã up casting
Toán tử instanceof : được sử dụng để kiểm tra xem 1 đối tượng có phải là thể
hiện của 1 kiểu dữ liệu cụ thể không
Lớp trừu tượng (abstract class) : Có thể tạo ra các lớp cơ sở (khuôn mẫu) để các
lớp dẫn xuất kế thừa mà không tạo ra các đối tượng thực của lớp.
Khai báo lớp trừu tượng – abstract class :
- Không thể tạo ra đối tượng nhưng các tham chiếu đối tượng thuộc các kiểu
lớp trừu tượng thì được cho phép.
- Xây dựng lớp khuôn mẫu với các thuộc tính và hành vi mà các lớp dẫn xuất bắt
buộc phải có
- Có phương thức thường và phương thức trừu tượng
Phương thức trừu tượng : để thống nhất giao diện, có thể khai các phương thức
trừu tượng (abstract method) tại các lớp cơ sở và cài đặt chi tiết tại các lớp dẫn
xuất.
- Bắt buộc phải định nghĩa lại tại lớp dẫn xuất.
- Khai báo trong lớp trừu tượng.
Lớp cụ thể (concrete class) : là các lớp đủ đặc trưng để có thể tạo thực thể.
Giao diện (Interface)
- Là mức trừu tượng cao
- bao gồm :
+ Phương thức trừu tượng – abstract method
+ Hằng số : mặc định là public static final
+ Mặc định là public
+ Không được có phương thức khởi tạo
6. Lỗi và Ngoại lệ
Ngoại lệ : các trường hợp hoạt động không bình thường
- ArrayIndexOutOfBoundsException : truy cập mảng với chỉ số không hợp lệ
- NullPointerException : dùng tham chiếu Null để truy cập biến thực thể,…
- InputMismatchException : nhập vào kiểu dữ liệu không hợp lệ
…
Ném ngoại lệ (throw an exception)
Try và catch
Cú pháp :
Try {
// mã thông thường, ném ngoại lệ
}
Catch (TypeOfException e) {
// mã xử lý ngoại lệ
}
- Một khối catch có thể bắt :
+ Ngoại lệ của kiểu được mô tả : catch (IOException ioe) {…} có thể bắt
ngoại lệ của kiểu IOException
+ Khối catch dành cho ngoại lệ lớp cha có thể bắt được ngoại lệ lớp con
Catch (IOException ioe) {…} cũng có thể bắt được ngoại lệ của kiểu
FileNotFoundException, EOFException,…
- Ngoại lệ không được bắt : không có khối catch nào bắt được nó, điều khiển
quay về nơi gọi phương thức hiện tại hoặc chương trình dừng do lỗi run-time
Finally block :
- Có thể có hoặc không đi kèm với try/catch
- Nếu có, khối finally được đặt sau khối catch cuối cùng
- Bất kể ngoại lệ có xảy ra, có được bắt hay không thì khối finally cũng được thực
hiện, ngoại trừ chương trình dừng sớm bằng phương thức System.exit
8. Design Pattern
Singleton
Adapter Pattern
- Thuộc nhóm Structural
- Chức năng : làm cho 2 giao diện không liên quan đến nhau có thể làm việc cùng
nhau