Bài giảng Lập trình Java - Chương 2: Lập trình hướng đối tượng ngôn ngữ Java cung cấp cho người học các kiến thức: Kế thừa, final method and final class, abstract class and interface, tạo tài liệu Java doc,... Mời các bạn cùng tham khảo.
Trang 1CSDL 2
Chương 2:
Lập trình hướng đối tượng ngôn ngữ JAVA
Trang 2Kế thừa
Khai báo kế thừa
Phạm vi sử dụng private, protected, public Một số từ khoá thông dụng
Final method & Final Class
Abstract class & Interface
Array List <E>
Tạo tài liệu Java doc
Tạo UML Class diagrams
Trang 3Object là l p co s nhâ t trong Java. Trong tru ng h p m t l p không khai báo ơ ́ ̛ ở ́ ̛ơ ̀ ợ ọ ơ ̂ ́
kê th a t bâ t ky l p nào thì l p Object chính là l p cha cua nó ́ ư ̀ ư ̀ ́ ̀ ơ ́ ơ ́ ơ ́ ̉
Trang 5protected: Được sử dụng trực tiếp:
Bên trong lớp
Các lớp cùng package
Các lớp con (cùng hoặc khác package)
private:
Được sử dụng trực tiếp bên trong lớp
public: Được sử dụng trực tiếp
Bên trong lớp
Bên ngoài lớp
Các lớp con cùng hoặc khác package + Các lớp khác cùng hoặc khác package
Trang 6Truy xuất lớp hiện tại: this
Truy xuất đến lớp cha: super
Chỉ định phương thức khởi tạo của lớp cha: super(), super(…)
Cài đặt lại phương thức của lớp cha
@Override
public KieuDuLieu tenPhuongthuc(…)
Luu y : phuong th c static kho ng đu c phe p Override ̛ ́ ̛ ̛ ứ ̂ ̛ợ ́
Gọi phương thức của lớp cha: super.tenPhuongThuc( )
Kiểm tra thể hiện của đối tượng: instanceOf
Trang 7System.out.println(“b
is an instance of B"); }
Trang 8Final Method là một phương được khai báo với từ khóa final
Final Method không được phép override ở lớp kế thừa
Các phương thức tạo không được phép khai báo với từ khóa final
Trang 91 2 3 4 5 6
public class GiangVien {
private String name;
public final String getName () {. . .}
public final void setName () {. . .} }
1 2 3 4 5 6 7 8
@Override public void setName() { . . .} �
}
L i ỗ : Không th Override m t ph ể ộ ươ ng th c final ứ
Trang 10Final Class là một lớp được khai báo với từ khóa final
Final Class không cho phép kế thừa
Ví dụ:
Integer, Double, Float, Long là các Final Class
A là Final Class 🡪 Các lớp khác không thể kế thừa được lớp A
Trang 111 2 3
public final class A{
}
1 2 3
public class B extends A{ �
}
L i ỗ : Không th k th a m t l p fina ể ế ừ ộ ớ l
Trang 12Hình ảnh:
Trang 13Abstract Class là m t l p độ ớ ược khai báo v i t khóa abstract. ớ ừ
Abstract Class có th ch a các phể ứ ương th c abstract ho c phứ ặ ương th c có cài đ t ứ ặ
Phương th c abstract là phứ ương th c không có cài đ t ứ ặ
public void nhap(){ }
public abstract double
Trang 14Abstract Class không th t o th hi n ể ạ ể ệ
Trang 15N u các Sub Class không ph i là Abstract Class thì:ế ả
B t bu c ph i cài đ t l i t t c các phắ ộ ả ặ ạ ấ ả ương th c abstract c a l p cha. ứ ủ ớ
Không b t bu c cài đ t l i các phắ ộ ặ ạ ương th c không là abstract c a l p cha.ứ ủ ớ
N u các Sub Class là Abstract Class thì không b t bu c ph i cài đ t l i phế ắ ộ ả ặ ạ ương th c abstract / ứ không abstract c a l p cha ủ ớ
Trang 16//Khai báo và cài đ t ặ các ph ươ ng th c ứ
Trang 17Sub Class GiangVienCoHuu b t bu c cài đ t l i phắ ộ ặ ạ ương th c abstract tinhLuong() c a l p ứ ủ ớ
GiangVien.
Sub Class GiangVienThinhGiang b t bu c ph i cài đ t l i phắ ộ ả ặ ạ ương th c abstract tinhLuong() c a ứ ủ
l p GiangVien. ớ
Trang 18}
Trang 19. . . }
}
Trang 20Được khai báo v i t khóa ớ ừ interface
public interface Hinh{…}
public interface Hinh{
public static final double
Trang 21Một interface có thể kế thừa từ nhiều interface khác
M t l p có th k th a t 1 l p và có th cài đ t l i t nhi u interface ộ ớ ể ế ừ ừ ớ ể ặ ạ ừ ề
1
2
3
public interface IA{…}
public interface IB{…}
public interface IC extends
N u m t l p khi ế ộ ớ implements t m t inteface thì l p đó ừ ộ ớ ph i cài đ t l i ả ặ ạ
t t c các ph ấ ả ươ ng th c abstract ứ c a interface ủ
Trang 25Xây dựng các lớp HinhHoc, HinhChuNhat, HinhTamGiac, HinhTron và viết chương trình cho phép:
Nhập vào một mảng hình học (có thể là HinhChuNhat, HinhTamGiac, HinhTron)
Xuất ra mảng các hình học
Tính tổng diện tích
Tính tổng chu vi
Tìm hình có chu vi lớn nhất / nhỏ nhất & Xuất ra
Tìm hình có diện tích lớn nhât / nhỏ nhất & Xuất ra
Kiểm tra tam giác đều, hình vuông
…
Trang 27abstract public void Nh ap();
final public String getTe n() {
return ten;
}
public void Xuat() { System.out.print(ten); }
public HinhHoc() {
ten = "" ;
}
public HinhHoc(String t en) {
this ten = ten;
}
}
Trang 28private double dai;
private double rong; @Override
public double TinhDien Tich() {
return dai * rong; }
@Override
public void Nhap() { Scanner scan = new Sc anner(System.in);
System.out.print( "Nha
p chieu dai: " );
this dai = Double.pars eDouble(scan.nextLine()); System.out.print( "Nha
p chieu rong: " );
this rong = Double.par seDouble(scan.nextLine()); }
Trang 29public HinhChuNhat() { super ();
Trang 30System.out.print(\ "Nha
p canh thu nhat: \" );
this a = Double.parse Double(scan.nextLine());
System.out.print(\ "Nha
p canh thu hai: \" );
this b = Double.parse Double(scan.nextLine());
System.out.print(\ "Nha
p canh thu ba: \" );
this c = Double.parse Double(scan.nextLine()); }
Trang 32CSDL 2
Array List <E>
Trang 34Ki u d li u E: Ki u tham chi u ể ữ ệ ể ế
Ki u d li u E h p l : Ki u tham chi u. VD: Integer, Float, Double, String, Object, PhanSo, ể ữ ệ ợ ệ ể ếHocSinh, . .
Ki u d li u E không h p l : Ki u giá tr VD: ể ữ ệ ợ ệ ể ị int, float, double, boolean ,…
Trang 35Ví d t o ụ ạ ArrayList h p l : ợ ệ
Ví d t o ArrayList không h p l : ụ ạ ợ ệ
ArrayList <int> list1 = new ArrayList <int>();
ArrayList <float> list2 = new ArrayList <float>(); ArrayList <double> list3 = new ArrayList <double>();
Trang 36T o ArrayList: ạ new
ArrayList<PhanSo> list = new ArrayList <PhanSo>()
Thêm vào cu i: ố add (E element)
list.add (new PhanSo(1,2));
list.add (new PhanSo(3,4));
C p nh t: ậ ậ set (int index, E element)
list.set(0, new PhanSo(2,3));
Trang 37Xóa: remove (E element), remove (int index)
Trang 38Lấy phần tử: get (int index)
PhanSo ps = list.get(2);
Kiểm tra tồn tại: contains()
boolean kq = list.contains(ps);
Trang 39Xây d ng chự ương trình cho phép người dùng ch n các ch c năng sau: ọ ứ
Trang 40Java Doc:
Tạo tài liệu mô tả cấu trúc, diễn giải các thành phần của project
Giúp cho mã nguồn rõ ràng hơn, dễ dàng cho việc chia sẽ, mở rộng và nâng cấp về sau.Cách thực hiện:
R-Click trên Project 🡪 Generate Java Doc
Trang 41Cách viết comment để tạo tài liệu Java Doc:
Trang 42* Hàm kh iở t oạ có đ yầ đủ tham số
* @param ten tên c aủ hình
* @param dai chi uề dài c aủ hình chử nh tậ
* @param rong chi uề r ngộ c aủ hình chử nh tậ
*/
public HinhChuNhat(String ten,
double dai, double rong) {…}
}
Trang 45Cách 1:
B1: Cài đặt UML Plugin cho Netbeans:
Here is how to install on 7.1 Add a new configuration to update centers: Tools > Plugins > Settings > Add
As the URL copy the following into the textbox:
http://dlc.sun.com.edgesuite.net/netbeans/updates/6.9/uc/m1/dev/catalog.xml Now on the tab Available Plugins there should be UML in category UML. Install the plugin, and its done !!
Trang 49Giải nén file yworks-uml-doclet-3.0_02-jdk1.5.zip Ghi nhớ thư mục đã giải nén
Cấu hình tham số lúc tạo Java Doc:
Chọn project 🡪 R_Click🡪 Properties🡪Documenting🡪Additional javadoc Options
R-Click ở project 🡪 Chọn Reverse Engineering 🡪 Create New UML Project
docletpath " C:\yworksumldoclet3.0_02jdk1.5\lib\ydoc.jar " resourcepath " C:\yworksuml
Trang 50quả