Tài Liệu Lập Trình Hướng Đối Tượng nội dung theo chẩn của trường Đại Học Cần Thơ , được các giáo viên trường ĐHCT biên soạn . nội dung gồm 4 phần : Phần 1 : các thành phần cơ bản của java Phần 2 : Lý Thuyết lập trình hướng đối tượng Phần 3 : Lập Trình hướng đối tượng với java Phần 4 : Xây Dựng Ứng Dụng Hướng Đối Tượng
Lập Trình Hướng Đối Tượng – CT176 Phần Các Thành Phần Cơ Bản Java Kiểu - Biến - Phép toán - Xuất nhập Cấu trúc điều khiễn - Phương thức - Tái định nghĩa TS Phan Thượng Cang Khoa CNTT&TT-Đại học Cần Thơ Ngơn ngữ lập trình Java ● Lịch sử: ● Java phát triển Sun Microsystems James Gosling (1995) Phiên Java (Oracle/Open JDK) 16 (đến 8/2021) ● Ngôn ngữ đa tảng (multi platform) nên Java dùng rộng rãi nhiều thiết bị từ máy tính đến mobile nhiều thiết bị phần cứng khác, cho nhiều ứng dụng (Desktop, Web, Mobile) ● Đặc điểm: ● Ngôn ngữ lập trình hướng đối tượng ● Độc lập ● Đơn giản, Bảo mật, Linh hoạt (thích ứng nhiều mơi trường phát triển) ● Đa luồng Hiệu suất cao (garbage collection) TS Phan Thượng Cang How it works…! Compile-time Environment Compile-time Environment Class Loader Bytecode Verifier Java Source (.java) Java Compiler Java Bytecode (.class ) Java Bytecod es move locally or through network Java Interpreter Just in Time Compiler Java Class Libraries Java Virtual Machine (JVM) Runtime System Operating System Hardware TS Phan Thượng Cang Top ngôn ngữ lập trình The Top Programming Languages of Previous Years Compared to 2021 https://www.codingdojo.com/blog/top-7-programming-languages TS Phan Thượng Cang Java TS Phan Thượng Cang Từ khóa Java gồm tập từ khóa mà khơng sử dụng làm tên biến, phương thức, lớp id khác: abstract assert boolean break byte case catch char class const continue default double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while null true false TS Phan Thượng Cang Kiểu liệu Kiểu Kiểu tham chiếu Boolean, Character, Integer, Float TS Phan Thượng Cang Biến – Hằng số ● Khai báo biến: [=giá trị] ; , ; Ví dụ: ● boolean b1, b2 = true, b3=false ; char c = ‘c’; ● int a=10, b; long l = 10000; ● float f = 3.1f ; double d=3.1; ● String s1=“CNTT” , s2 = s1 +“ – K46 ”; ● Khai báo số: final = ; Ví dụ: final int N = 10; TS Phan Thượng Cang Biểu thức 10 TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Ký hiệu Lớp: ConNguoi Thành phần riêng - cccd : chuỗi - hten : chuỗi Thành phần chung + nhap() : void + in() : void # sosanh(d : int) : boolean Thành phần bảo vệ Tên lớp Thuộc tính Phương thức public class ConNguoi { private String cccd, hten; public ConNguoi() { … } public void nhap() { … } public void in() { … } protected void sosanh() { … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Association (gắn kết) ConNguoi - cccd : chuỗi - hten : chuỗi DiaChi + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; private DiaChi dchi; public ConNguoi() { … } public void nhap() { … } public void in() { … } } - so : int - duong : chuỗi + nhap() : void + in() : void public class DiaChi { private int so; private String duong; public DiaChi(){…} public void nhap(){…} public void in(){ … } } TS Phan Thượng Cang Mô hình hóa hướng đối tượng Quan hệ: Association (gắn kết) ConNguoi - cccd : chuỗi - hten : chuỗi DiaChi + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; private DiaChi dchi[]; public ConNguoi() { … } public void nhap() { … } public void in() { … } } * - so : int - duong : chuỗi + nhap() : void + in() : void public class DiaChi { private int so; private String duong; public DiaChi(){…} public void nhap(){…} public void in(){ … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Association (gắn kết) ConNguoi - cccd : chuỗi - hten : chuỗi DiaChi + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; private DiaChi dchi[]; public ConNguoi() { … } public void nhap() { … } public void in() { … } } * - so : int - duong : chuỗi + nhap() : void + in() : void public class DiaChi { private int so; private String duong; private ConNguoi c; public DiaChi(){…} public void nhap(){…} public void in(){ … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Association (gắn kết) ConNguoi * - cccd : chuỗi - hten : chuỗi + nhap() : void + in() : void public ConNguoi() { … } public void nhap() { … } public void in() { … } } - so : int - duong : chuỗi CưTru + nhap() : void + in() : void - bdau : int - kthuc : int public class ConNguoi { private String cccd, hten; private CuTru ctru[]; DiaChi public class CuTru { private int bdau,kthuc; private DiaChi dchi; public CuTru(){…} public void nhap(){…} public void in(){ … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Aggregation (bao gồm ) ConNguoi - cccd : chuỗi - hten : chuỗi + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; private CanhTay c1, c2; public ConNguoi() { … } public void nhap() { … } public void in() { … } } CanhTay - dai : float + nhap() : void + in() : void public class CanhTay { private float dai; public CanhTay(){…} public void nhap(){…} public void in(){ … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Composition (thành phần) ConNguoi - cccd : chuỗi - hten : chuỗi CanhTay + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; private final CanhTay c1,c2; - dai : float + nhap() : void + in() : void public class CanhTay { private float dai; public CanhTay(){…} public void nhap(){…} public void in(){ … } } public ConNguoi() { … } public void nhap() { … } public void in() { … } } TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: Generalization (thừa kế) ConNguoi NhanSu - cccd : chuỗi - hten : chuỗi - mso : int - dvi : chuỗi + nhap() : void + in() : void + nhap() : void + in() : void public class ConNguoi { private String cccd, hten; public ConNguoi() { … } public void nhap() { … } public void in() { … } } public class NhanSu extends ConNguoi { private int mso; private String dvi; public NhanSu() {…} public void nhap() {…} public void in() {…} } 10 TS Phan Thượng Cang Mô hình hóa hướng đối tượng Quan hệ: Realization (thực thi): ConNguoi - cccd : chuỗi - hten : chuỗi …… public class ConNguoi implements Movable { private String cccd, hten; public public public public public } ConNguoi() { … } void nhap() {…} void in() {…} void diToi() {…} void diToi() {…} Movable + + + + nhap() : void in() : void diToi() : void diLui() : void public interface Movable { public void nhap(); public void in(); public void diToi(); public void diLui(); } 11 TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Quan hệ: dependency (phụ thuộc) ConNguoi - cccd : chuỗi - hten : chuỗi LuatGT …… … public class ConNguoi { private String cccd, hten; public void laiXe(LuatGT l){ } public ConNguoi() { … } public void nhap() {…} public void in() {…} …… } 12 TS Phan Thượng Cang Lập Trình Hướng Đối Tượng – CT176 TS Phan Thượng Cang ptcang@cit.ctu.edu.vn Khoa CNTT&TT-Đại học Cần Thơ Phần Xây Dựng Ứng Dụng Hướng Đối Tượng TS Phan Thượng Cang Khoa CNTT&TT-Đại học Cần Thơ Mơ hình hóa hướng đối tượng Ví dụ minh họa: Sử dụng phương pháp lập trình hướng đối tượng Java để viết khai báo lớp định nghĩa phương thức cần thiết cho mơ hình tốn quản lý hố đơn bán hàng đơn giản sau: HangHoa ChiTiet Sau đó, sinh viên viết lớp có chứa hàm main để thực thi chương trình quản lý hố đơn bán hàng TS Phan Thượng Cang Mơ hình hóa hướng đối tượng Mơ hình / Lược đồ lớp (class diagram) KhachHang - cccd : chuỗi - hten : chuỗi - dchi : chuỗi + nhap() : void + in() : void HoaDon - mso : chuỗi - tde : chuỗi - nvien: chuỗi + nhap() : void + in() : void + tong() : thực HangHoa * - mso : chuỗi - ten : chuỗi - nsxuat: chuỗi + nhap() : void + in() : void KhachHangVIP Date ChiTiet - tLeGiam : thực - : nguyên - thang : nguyên - nam : nguyên - sluong : số nguyên - dgia : số thực + nhap() : void + in() : void + nhap() : void + in() : void + nhap() : void + in() : void TS Phan Thượng Cang Xây dựng ứng dụng hướng đối tượng Chuyển mơ hình sang Java code ? TS Phan Thượng Cang ... trình = Hàm + liệu Chương trình = Tập đối tượng tương tác TS Phan Thượng Cang Phương pháp Lập trình hướng đối tượng Lập trình hướng thủ tục (POP) Lập trình hướng đối tượng (OOP) Object-1 Object-3... Function-2 TS Phan Thượng Cang Phương pháp Lập trình hướng đối tượng Lập trình hướng thủ tục (POP) Student, Teacher, Course register() confirm() Lập trình hướng đối tượng (OOP) Student Teacher Data Data... lập trình mơ hình hóa vấn đề cần giải bằng phần mềm dựa vào khái niệm đối tượng TS Phan Thượng Cang Phương pháp Lập trình hướng đối tượng ● Sự khác biệt Lập trình thủ tục vs OOP Chương trình