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
Nội dung
Kế 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
Tạo tài liệu Java doc
Tạo UML Class diagrams
Bạn đang xem 20 trang mẫu của tài liệu "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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: 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
Chương 2 : Lập trình hướng đối tượng ngôn ngữ JAVA
Nội dung
Kế 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
Tạo tài liệu Java doc
Tạo UML Class diagrams
Khai báo kế thừa
1
2
3
4
5
package tenpackage;
public class TenLopCha {
//Khai báo các thuộc tính
//Khai báo các phương thức
}
1
2
3
4
5
package tenpackage; public class TenLopCon extends TenLopCha{
//Khai báo các thuộc tính
//Khai báo các phương thức
}
Object là lớp cơ sở nhất trong Java. Trong trường hợp một lớp không khai báo kế thừa từ bất kỳ lớp nào thì lớp Object chính là lớp cha của nó
Khai báo kế thừa
1
2
3
4
5
package quanly; public class GiangVien {
//Khai báo các thuộc tính
//Khai báo các phương thức
}
1
2
3
4
5
package bt1; public class GiangVienCoHuu extends GiangVien{
//Khai báo các thuộc tính
//Khai báo các phương thức
}
Phạm vi
protected : Đượ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
Một số từ khoá thông dụng
Truy 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 ()
Lưu ý: phương thức static không được phé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
Một số từ khoá thông dụng
instanceOf
1
2
3
4
5
6
7
8
9
A a = new A();
B b = new B();
if (a instanceof A) {
System.out.println(“a is an instance of A");
}
if (b instanceof B) {
System.out.println(“b is an instance of B");
}
Final method
Final 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
1
2
3
4
//Ví dụ:
final public void TenPhuongThuc () {
. . .
}
Final method
1
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
public class GiangVienCoHuu extends GiangVien{
...
@Override
public String getName(){ . . .} 🗷
@Override public void setName(){ . . .} 🗷
}
Lỗi : Không thể Override một phương thức final
Final Class
Final 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
Final Class
1
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
Abstract Class
Hình ảnh:
Abstract Class
Abstract 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
1
2
3
4
5
public abstract class GiangVien {
. . .
public void nhap(){...}
public abstract double tinhLuong();
}
1
2
3
public abstract class GiangVien {
}
Abstract Class
Abstract Class không thể tạo thể hiện
GiangVien gv = new GiangVien() 🗷
Abstract Class có thể giữ tham chiếu đối tượng của các Sub Class
1
2
3
4
GiangVien gv = new GiangVienCoHuu() 🗹
GiangVienCoHuu gvch = new GiangVienCoHuu() 🗹
GiangVien gv = new GiangVienThinhGiang() 🗹
GiangVienThinhGiang gvtg = new GiangVienThinhGiang() 🗹
Abstract Class
Nế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
Abstract Class
1
2
3
4
5
6
7
8
9
package qlgv;
public abstract class GiangVien{
//Khai báo các thuộc tính
. . .
//Khai báo và cài đặt các phương thức không là abstract
. . .
//Khai báo các phương phức abstract
public abstract double tinhLuong();
}
Abstract Class
Sub 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.
Abstract Class
1
2
3
4
5
6
7
8
9
package qlgv;
public class GiangVienCoHuu extends GiangVien{
. . .
@ Override
public double tinhLuong()
{
. . .
}
}
Abstract Class
1
2
3
4
5
6
7
8
9
package qlgv;
public class GiangVienThinhGiang extends GiangVien{
. . .
@ Override
public double tinhLuong()
{
. . .
}
}
Interface
Được khai báo với từ khóa interface
public interface Hinh{}
Interface chứa:
Các hằng số
Các phương thức abstract (không có cài đặt)
1
2
3
4
5
public interface Hinh{
public static final double PI =3.14;
public void tinhDienTich ();
public void tinhChuVi ();
}
Interface
Mộ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 IA, IB {}
1
2
3
4
public class A{}
public interface IB{}
public interface IC{}
public class B extends A implements IB, IC{}
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
Interface
1
2
3
public interface Hinh {
public double tinhDienTich ();
public double tinhChuVi ();
}
1
2
3
4
5
6
7
8
9
10
public class HinhTamGiac implements Hinh{
@ Override
public double tinhDienTich (){
. . .
}
@ Override
public double tinhChuVi (){
. . .
}
}
Interface
1
2
3
public interface Hinh {
public double tinhDienTich ();
public double tinhChuVi ();
}
1
2
3
4
5
6
7
8
9
10
public class HinhTron implements Hinh{
@ Override
public double tinhDienTich (){
. . .
}
@ Override
public double tinhChuVi (){
. . .
}
}
Interface
1
2
3
4
public interface Hinh {
public double tinhDienTich ();
public double tinhChuVi ();
}
1
2
3
4
5
6
7
8
9
10
public class HinhChuNhat implements Hinh{
@ Override
public double tinhDienTich (){
. . .
}
@ Override
public double tinhChuVi (){
. . .
}
}
Bài tập: Hình học
Xâ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
Bài tập: Hình học
class HinhHoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package demokethua; public abstract class HinhHoc { protected String ten; abstract public double TinhDienTich(); abstract public void Nhap(); final public String getTen() { return ten; } public void Xuat() { System.out.print(ten); } public HinhHoc() { ten = "" ; } public HinhHoc(String ten) { this .ten = ten; } }
class HinhChuNhat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package demokethua; import java.util.Scanner; public class HinhChuNhat extends HinhHoc { private double dai; private double rong; @Override public double TinhDienTich() { return dai * rong; } @Override public void Nhap() { Scanner scan = new Scanner(System.in); System.out.print( "Nhap chieu dai: " ); this .dai = Double.parseDouble(scan.nextLine()); System.out.print( "Nhap chieu rong: " ); this .rong = Double.parseDouble(scan.nextLine()); }
class HinhChuNhat
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@Override public void Xuat() { super .Xuat(); System.out.println( "D=" + dai + "; R=" + rong); } public HinhChuNhat() { super (); this .dai = 0; this .rong = 0; } public HinhChuNhat(String ten, double dai, double rong) { super (ten); this .dai = dai; this .rong = rong; } }
class TamGiac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package demokethua; import java.util.Scanner; public class HinhTamGiac extends HinhHoc { private double a; private double b; private double c; @Override public void Nhap() { Scanner scan = new Scanner(System.in); System.out.print(\ "Nhap canh thu nhat: \" ); this .a = Double.parseDouble(scan.nextLine()); System.out.print(\ "Nhap canh thu hai: \" ); this .b = Double.parseDouble(scan.nextLine()); System.out.print(\ "Nhap canh thu ba: \" ); this .c = Double.parseDouble(scan.nextLine()); }
class TamGiac
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@Override public void Xuat() { System.out.println(String.format(\ "A=%d-B=%d-C=%d\" , a, b, c)); } @Override public double TinhDienTich() { return 0; } public HinhTamGiac() { super (); a = 0; b = 0; c = 0; } public HinhTamGiac(String ten, double a, double b, double c) { super (ten); this .a = a; this .b = b; this .c = c; } }
Array List
ArrayList
ArrayList - Tạo Array List
Thư viện
import java.util.ArrayList ;
Tạo ArrayList rỗng
ArrayList list = new ArrayList ();
Tạo ArrayList từ Collection khác
ArrayList list = new ArrayList (Collection c);
Kiể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 ,
ArrayList - Tạo Array List
Ví dụ tạo ArrayList hợp lệ:
Ví dụ tạo ArrayList không hợp lệ:
ArrayList list1 = new ArrayList ();
ArrayList list2 = new ArrayList ();
ArrayList list3 = new ArrayList ();
1
2
3
4
5
6
7
8
//Mảng 1 chiều String
ArrayList list1 = new ArrayList ();
//Mảng 1 chiều PhanSo
ArrayList list2 = new ArrayList ();
//Mảng 1 chiều PhanSo
ArrayList list3 = new ArrayList (list2);
//Mảng 2 chiều HocSinh
ArrayList > list4 = new ArrayList > ();
ArrayList - Một số phương thức thông dụng
Tạo ArrayList: new
ArrayList list = new ArrayList ()
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));
ArrayList - Một số phương thức thông dụng
Xóa: remove (E element), remove (int index)
Xóa toàn bộ: clear ()
Ví dụ:
list.remove (0);
list.remove (ps);
list.clear();
Lấy kích thước: size ()
int n = list. size ();
ArrayList - Một số phương thức thông dụng
Lấ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);
Bài tập ArrayList
Xây dựng chương trình cho phép người dùng chọn các chức năng sau:
Nhập vào danh sách các phân số, sau đó cho phép
Xuất danh sách phân số
Thêm phân số
Xóa phân số tại vị trí thứ k
Cập nhật phân số tại vị trí thứ k
Tìm các phân số có giá trị lớn nhất
Xóa tất cả các phân số
Tạo Java Doc
Java 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
Tạo Java Doc
Cách viết comment để tạo tài liệu Java Doc:
/**
* Nội dung comment
*
* @thamso1 Giá trị
* @thamso2 Giá trị
*/
Tạo Java Doc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* Lớp Hình Chử Nhật
*
* @author He thong thong tin
*/
public class HinhChuNhat extends HinhHoc {
/**
*
* @return Chu vi của hình chử nhật = (dai + rong) * 2
*/
@Override
public double TinhChuVi (){ }
/**
* Hàm khởi tạo mặc định
*/
public HinhChuNhat () { }
/**
* 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) { }
}
Tạo Java Doc
Tạo Java Doc
Phát sinh bởi Generate Javadoc
Tạo UML Class Diagram
Cá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:
Now on the tab Available Plugins there should be UML in category UML. Install the plugin, and its done..!!
Tạo UML Class Diagram
Tạo UML Class Diagram
Cách 1:
B2 : R-Click ở project 🡪 Chọn Reverse Engineering 🡪 Create New UML Project
Tạo UML Class Diagram
Tạo UML Class Diagram
Cách 2: Sử dụng yWorks UML doclet
Download yWorks UML Doclet:
Giả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:\yworks-uml-doclet-3.0_02-jdk1.5\lib\ydoc.jar " -resourcepath " C:\yworks-uml-doclet-3.0_02-jdk1.5\resources " -doclet ydoc.doclets.YStandard –umlautogen
C:\yworks-uml-doclet-3.0_02-jdk1.5 : Đường dẫn giải nén yWorks UML doclet
Tạo UML Class Diagram
Kết quả
File đính kèm:
bai_giang_lap_trinh_java_chuong_2_lap_trinh_huong_doi_tuong.pptx

