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