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

 

pptx 50 trang phuongnguyen 3160
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

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:

  • pptxbai_giang_lap_trinh_java_chuong_2_lap_trinh_huong_doi_tuong.pptx