You are on page 1of 698

Bài 1

Tổng quan lập trình hướng đối tượng


Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Kỹ thuật lập trình
2. Kỹ thuật hướng đối tượng
3. Các khái niệm cơ bản
4. Các nguyên lý
5. Phân tích thiết kế hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 2


Kỹ thuật lập trình
Lập trình hướng đối tượng là một kỹ thuật lập trình. Vậy kỹ thuật lập
trình là gì?

30/08/2021 Lập trình hướng đối tượng 3


Kỹ thuật lập trình
• "Lập trình hướng đối tượng" là một kỹ thuật lập trình. Vậy "kỹ thuật
lập trình" là gì?
• Kỹ thuật lập trình: Kỹ thuật thực thi một giải pháp phần mềm (cấu trúc
dữ liệu + giải thuật) dựa trên nền tảng một phương pháp luận
(methodology) và một hoặc nhiều ngôn ngữ lập trình phù hợp với
yêu cầu đặc thù của ứng dụng.

30/08/2021 Lập trình hướng đối tượng 4


Kỹ thuật lập trình
• Các mô thức lập trình
• Các ý tưởng, thuật toán để giải
quyết vấn đề
"Phương pháp luận" • Phong cách trình bày trong lập
trình
• Văn hóa lập trình

30/08/2021 Lập trình hướng đối tượng 5


Kỹ thuật lập trình
• Mô thức - nguyên tắc chung cơ
bản
• Cú pháp - xác định cái gì là hợp
"Ngôn ngữ lập trình” lệ trong mã nguồn
• Ngữ nghĩa - ngữ pháp của ngôn
ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 6


Ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 7


Ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 8


Ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 9


Trình dịch

30/08/2021 Lập trình hướng đối tượng 10


Sự phát triển của ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 11


Sự phát triển của ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 12


Sự phát triển của ngôn ngữ lập trình

30/08/2021 Lập trình hướng đối tượng 13


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 14


Kỹ thuật hướng đối tượng
Giới thiệu về công nghệ đối tượng và kỹ thuật hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 15


Đối tượng

30/08/2021 Lập trình hướng đối tượng 16


Lập trình hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 17


Lập trình hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 18


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 19


Các khái niệm
Các khái niệm cơ bản trong lập trình hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 20


Đối tượng
• Trong thế giới thực
• VD: Sinh viên, ô tô, màu sắc…
• Mỗi đối tượng đều có:
• Các thông tin, trạng thái
• Ví dụ: Các thông tin về ô tô có màu sắc, tốc độ, năm sx…
• Các hoạt động
• Ví dụ: Tăng ga, phanh, giảm tốc, đi đến một địa điểm…

30/08/2021 Lập trình hướng đối tượng 21


Đối tượng

30/08/2021 Lập trình hướng đối tượng 22


Đối tượng

30/08/2021 Lập trình hướng đối tượng 23


Đối tượng

30/08/2021 Lập trình hướng đối tượng 24


Trạng thái và hành vi

30/08/2021 Lập trình hướng đối tượng 25


Trạng thái và hành vi

30/08/2021 Lập trình hướng đối tượng 26


Đối tượng phần mềm

30/08/2021 Lập trình hướng đối tượng 27


Bài toán thực tiễn: Quản lý tài khoản ngân hàng

30/08/2021 Lập trình hướng đối tượng 28


Lớp

30/08/2021 Lập trình hướng đối tượng 29


Ví dụ: Lớp xe đạp

30/08/2021 Lập trình hướng đối tượng 30


Lớp và đối tượng

30/08/2021 Lập trình hướng đối tượng 31


Lớp và đối tượng

30/08/2021 Lập trình hướng đối tượng 32


Tương tác giữa các đối tượng

30/08/2021 Lập trình hướng đối tượng 33


Gọi hà và gửi thông điệp

30/08/2021 Lập trình hướng đối tượng 34


Thông điệp và Phương thức

30/08/2021 Lập trình hướng đối tượng 35


Các nguyên lý cơ bản
Trừu tượng hóa, đóng gói, module hóa, phân cấp.

30/08/2021 Lập trình hướng đối tượng 36


Các nguyên lý cơ bản

30/08/2021 Lập trình hướng đối tượng 37


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 38


Ví dụ
• Bài toán: Quản lý sinh viên IUH

30/08/2021 Lập trình hướng đối tượng 39


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 40


Đóng gói

30/08/2021 Lập trình hướng đối tượng 41


Đóng gói

30/08/2021 Lập trình hướng đối tượng 42


Module hóa

30/08/2021 Lập trình hướng đối tượng 43


Module hóa

30/08/2021 Lập trình hướng đối tượng 44


Phân cấp

30/08/2021 Lập trình hướng đối tượng 45


Phân cấp

30/08/2021 Lập trình hướng đối tượng 46


Phân tích thiết kế hướng đối
tượng
Object Oriented Analysis and Design (OOAD)

30/08/2021 Lập trình hướng đối tượng 47


Phân tích thiết kế hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 48


Phát triển phần mềm

30/08/2021 Lập trình hướng đối tượng 49


Xác định mục tiêu

30/08/2021 Lập trình hướng đối tượng 50


Biểu đồ Use Case

30/08/2021 Lập trình hướng đối tượng 51


Biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 52


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 53


Bài 2
Java cơ bản
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Giới thiệu về Java
2. Định danh
3. Các kiểu dữ liệu
4. Toán tử
5. Cấu trúc điều khiển
6. Mảng

30/08/2021 Lập trình hướng đối tượng 2


Giới thiệu về Java

30/08/2021 Lập trình hướng đối tượng 3


Ngôn ngữ lập trình Java

30/08/2021 Lập trình hướng đối tượng 4


Java platform

30/08/2021 Lập trình hướng đối tượng 5


Java platform

30/08/2021 Lập trình hướng đối tượng 6


Mô hình biên dịch của Java

30/08/2021 Lập trình hướng đối tượng 7


Cú pháp cơ bản

30/08/2021 Lập trình hướng đối tượng 8


Cài đặt
• Cài Java Development Kit (JDK)
• http://www.oracle.com/technetwork/java/javase/downloads
• Cài IDE
•Notepad / Notepad++ (https://notepad-plus-plus.org)
• Eclipse (http://www.eclipse.org)
• NetBeans (http://netbeans.org)
• IntelliJ IDEA (http://www.jetbrains.com/idea)

30/08/2021 Lập trình hướng đối tượng 9


Định danh
Identifier

30/08/2021 Lập trình hướng đối tượng 10


Định danh

30/08/2021 Lập trình hướng đối tượng 11


Định danh

30/08/2021 Lập trình hướng đối tượng 12


Quy ước đặt tên

30/08/2021 Lập trình hướng đối tượng 13


Các từ khóa

30/08/2021 Lập trình hướng đối tượng 14


Các kiểu dữ liệu
integer, float, char, boolean, String…

30/08/2021 Lập trình hướng đối tượng 15


Các kiểu dữ liệu

30/08/2021 Lập trình hướng đối tượng 16


Kiểu dữ liệu nguyên thủy

30/08/2021 Lập trình hướng đối tượng 17


Số nguyên

30/08/2021 Lập trình hướng đối tượng 18


Số thực

30/08/2021 Lập trình hướng đối tượng 19


Ký tự

30/08/2021 Lập trình hướng đối tượng 20


Nguyên dạng

30/08/2021 Lập trình hướng đối tượng 21


Nguyên dạng

30/08/2021 Lập trình hướng đối tượng 22


Nguyên dạng

30/08/2021 Lập trình hướng đối tượng 23


a. Số nguyên

30/08/2021 Lập trình hướng đối tượng 24


b. Số thực

30/08/2021 Lập trình hướng đối tượng 25


c. boolean, ký tự và xâu ký tự

30/08/2021 Lập trình hướng đối tượng 26


d. Escape sequence

30/08/2021 Lập trình hướng đối tượng 27


Chuyển đổi kiểu dữ liệu (casting)

30/08/2021 Lập trình hướng đối tượng 28


Chuyển đổi kiểu dữ liệu (casting)

30/08/2021 Lập trình hướng đối tượng 29


Ví dụ - chuyển đổi kiểu

30/08/2021 Lập trình hướng đối tượng 30


Khai báo và khởi tạo biến

30/08/2021 Lập trình hướng đối tượng 31


Chú thích

30/08/2021 Lập trình hướng đối tượng 32


Câu lệnh

30/08/2021 Lập trình hướng đối tượng 33


Toán tử
Toán tử số học, toán tử logic…

30/08/2021 Lập trình hướng đối tượng 34


Toán tử (Operators)

30/08/2021 Lập trình hướng đối tượng 35


Toán tử

30/08/2021 Lập trình hướng đối tượng 36


Toán tử

30/08/2021 Lập trình hướng đối tượng 37


Thứ tự ưu tiên của toán tử

30/08/2021 Lập trình hướng đối tượng 38


Cấu trúc điều khiển
if-else, switch-case, while…

30/08/2021 Lập trình hướng đối tượng 39


Lệnh if - else

30/08/2021 Lập trình hướng đối tượng 40


Ví dụ - Kiểm tra số chẵn – lẻ

30/08/2021 Lập trình hướng đối tượng 41


Lệnh switch - case

30/08/2021 Lập trình hướng đối tượng 42


Ví dụ - Lệnh switch - case

30/08/2021 Lập trình hướng đối tượng 43


Vòng lặp while và do while

30/08/2021 Lập trình hướng đối tượng 44


Ví dụ - Vòng lặp while

30/08/2021 Lập trình hướng đối tượng 45


Vòng lặp for

30/08/2021 Lập trình hướng đối tượng 46


Ví dụ - vòng lặp for

30/08/2021 Lập trình hướng đối tượng 47


Vòng lặp for và while

30/08/2021 Lập trình hướng đối tượng 48


Các lệnh thay đổi cấu trúc điều khiển

30/08/2021 Lập trình hướng đối tượng 49


Các lệnh thay đổi cấu trúc điều khiển

30/08/2021 Lập trình hướng đối tượng 50


Ví dụ - break và continue

30/08/2021 Lập trình hướng đối tượng 51


Phạm vi biến

30/08/2021 Lập trình hướng đối tượng 52


Mảng
array

30/08/2021 Lập trình hướng đối tượng 53


Mảng (array)

30/08/2021 Lập trình hướng đối tượng 54


Khởi tạo mảng

30/08/2021 Lập trình hướng đối tượng 55


Ví dụ - Mảng

30/08/2021 Lập trình hướng đối tượng 56


Khai báo và khởi tạo mảng

30/08/2021 Lập trình hướng đối tượng 57


Mảng nhiều chiều

30/08/2021 Lập trình hướng đối tượng 58


Mảng nhiều chiều

30/08/2021 Lập trình hướng đối tượng 59


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 60


Bài 3
Xây dựng lớp
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Trừu tượng hóa dữ liệu
2. Lớp và thành phần của lớp
3. Xây dựng lớp
4. Tạo và sử dụng đối tượng
5. Thành viên hằng & tĩnh
6. Biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 2


Trừu tượng hóa dữ liệu
Data abstraction

30/08/2021 Lập trình hướng đối tượng 3


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 4


Trừu tượng hóa

30/08/2021 Lập trình hướng đối tượng 5


Trừu tượng hóa dữ liệu trong LTHĐT

30/08/2021 Lập trình hướng đối tượng 6


Ví dụ: Điện thoại Nokia

30/08/2021 Lập trình hướng đối tượng 7


Ví dụ: Điện thoại Nokia

30/08/2021 Lập trình hướng đối tượng 8


Ví dụ: Điện thoại Nokia

30/08/2021 Lập trình hướng đối tượng 9


Ví dụ: Điện thoại Nokia

30/08/2021 Lập trình hướng đối tượng 10


Ví dụ: Điện thoại Nokia

30/08/2021 Lập trình hướng đối tượng 11


Ví dụ

30/08/2021 Lập trình hướng đối tượng 12


Lớp và thành phần của lớp
Các khái niệm chung về lớp và các thành
phần của lớp

30/08/2021 Lập trình hướng đối tượng 13


Lớp

30/08/2021 Lập trình hướng đối tượng 14


Các thành phần của lớp

30/08/2021 Lập trình hướng đối tượng 15


Thuộc tính

30/08/2021 Lập trình hướng đối tượng 16


Phương thức

30/08/2021 Lập trình hướng đối tượng 17


Phạm vi

30/08/2021 Lập trình hướng đối tượng 18


Xây dựng lớp
Xây dựng các lớp cùng các thuộc tính và
phương thức của nó trong Java

30/08/2021 Lập trình hướng đối tượng 19


Gói

30/08/2021 Lập trình hướng đối tượng 20


Gói trong Java

30/08/2021 Lập trình hướng đối tượng 21


Gói trong Java

30/08/2021 Lập trình hướng đối tượng 22


Quy ước đặt tên gói

30/08/2021 Lập trình hướng đối tượng 23


Các package trong Java

30/08/2021 Lập trình hướng đối tượng 24


Các package trong Java

30/08/2021 Lập trình hướng đối tượng 25


Các package trong Java

30/08/2021 Lập trình hướng đối tượng 26


Không gian tên trong C++/C#

30/08/2021 Lập trình hướng đối tượng 27


Khai báo các lớp

30/08/2021 Lập trình hướng đối tượng 28


Khai báo chỉ định truy cập

30/08/2021 Lập trình hướng đối tượng 29


Thuộc tính

30/08/2021 Lập trình hướng đối tượng 30


Thuộc tính

30/08/2021 Lập trình hướng đối tượng 31


Phương thức

30/08/2021 Lập trình hướng đối tượng 32


Phương thức

30/08/2021 Lập trình hướng đối tượng 33


Chỉ định truy cập

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ: Lớp BankAccount
package com.megabank.models;
public class BankAccount
{
String owner;
double balance;
boolean debit(double amount)
{
if (amount > balance)
return false;
else
{
balance -= amount; return true;
}
}
void credit(double amount)
{
balance += amount;
}
}

30/08/2021 Lập trình hướng đối tượng 35


Tạo và sử dụng đối tượng
Khai báo và khởi tạo đối tượng. Truy cập đến các phương thức và thuộc
tính của đối tượng

30/08/2021 Lập trình hướng đối tượng 36


Khai báo và khởi tạo dữ liệu

30/08/2021 Lập trình hướng đối tượng 37


Khai báo và khởi tạo dữ liệu

30/08/2021 Lập trình hướng đối tượng 38


Khai báo

30/08/2021 Lập trình hướng đối tượng 39


Khởi tạo

30/08/2021 Lập trình hướng đối tượng 40


Khởi tạo

30/08/2021 Lập trình hướng đối tượng 41


Kết hợp khai báo và khởi tạo dữ liệu

30/08/2021 Lập trình hướng đối tượng 42


Truy cập đến phương thức và thuộc tính

30/08/2021 Lập trình hướng đối tượng 43


Tự tham chiếu

30/08/2021 Lập trình hướng đối tượng 44


Ví dụ từ khóa this

30/08/2021 Lập trình hướng đối tượng 45


Ví dụ về khởi tạo đối tượng

30/08/2021 Lập trình hướng đối tượng 46


Ví dụ: truy cập đến các thuộc tính

30/08/2021 Lập trình hướng đối tượng 47


Ví dụ: truy cập đến các phương thức

30/08/2021 Lập trình hướng đối tượng 48


Tham chiếu đến lớp khác gói

30/08/2021 Lập trình hướng đối tượng 49


Đối tượng trong C++

30/08/2021 Lập trình hướng đối tượng 50


Thành viên hằng
& thành viên tĩnh
final, static

30/08/2021 Lập trình hướng đối tượng 51


Thành viên tĩnh

30/08/2021 Lập trình hướng đối tượng 52


Biến địa phương static

30/08/2021 Lập trình hướng đối tượng 53


Thành viên tĩnh trong OOP

30/08/2021 Lập trình hướng đối tượng 54


Thuộc tính static

30/08/2021 Lập trình hướng đối tượng 55


Ví dụ

30/08/2021 Lập trình hướng đối tượng 56


Phương thức static

30/08/2021 Lập trình hướng đối tượng 57


Ví dụ

30/08/2021 Lập trình hướng đối tượng 58


Thành viên lớp và thanh viên đối tượng

30/08/2021 Lập trình hướng đối tượng 59


Ví dụ

30/08/2021 Lập trình hướng đối tượng 60


Ví dụ

30/08/2021 Lập trình hướng đối tượng 61


Ví dụ

30/08/2021 Lập trình hướng đối tượng 62


Thành viên hằng

30/08/2021 Lập trình hướng đối tượng 63


Thành viên hằng và tĩnh

30/08/2021 Lập trình hướng đối tượng 64


Biểu đồ lớp
Biểu diễn lớp trong UML

30/08/2021 Lập trình hướng đối tượng 65


Biểu đồ

30/08/2021 Lập trình hướng đối tượng 66


Chỉ định truy cập

30/08/2021 Lập trình hướng đối tượng 67


Giá trị tĩnh

30/08/2021 Lập trình hướng đối tượng 68


Lớp và các đối tượng trong UML

30/08/2021 Lập trình hướng đối tượng 69


Ví dụ

30/08/2021 Lập trình hướng đối tượng 70


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 71


Bài 4
Các kỹ thuật xây dựng lớp
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Đóng gói
2. Hàm khởi tạo
3. Nạp chồng
4. Kết tập

30/08/2021 Lập trình hướng đối tượng 2


Đóng gói
Encapsulation

30/08/2021 Lập trình hướng đối tượng 3


Đóng gói

30/08/2021 Lập trình hướng đối tượng 4


Đóng gói

30/08/2021 Lập trình hướng đối tượng 5


Đóng gói

30/08/2021 Lập trình hướng đối tượng 6


Che giấu dữ liệu

30/08/2021 Lập trình hướng đối tượng 7


Cơ chế che giấu dữ liệu

30/08/2021 Lập trình hướng đối tượng 8


Cơ chế che giấu dữ liệu

30/08/2021 Lập trình hướng đối tượng 9


Phương thức Get

30/08/2021 Lập trình hướng đối tượng 10


Phương thức Set

30/08/2021 Lập trình hướng đối tượng 11


Ví dụ

30/08/2021 Lập trình hướng đối tượng 12


Hàm khởi tạo
Constructor

30/08/2021 Lập trình hướng đối tượng 13


Khởi tạo đối tượng

30/08/2021 Lập trình hướng đối tượng 14


Phương thức khởi tạo

30/08/2021 Lập trình hướng đối tượng 15


Phương thức khởi tạo

30/08/2021 Lập trình hướng đối tượng 16


Phương thức khởi tạo

30/08/2021 Lập trình hướng đối tượng 17


Khởi tạo đối tượng trong C++

30/08/2021 Lập trình hướng đối tượng 18


Hàm hủy trong C++

30/08/2021 Lập trình hướng đối tượng 19


Ví dụ

=> Phương thức khởi tạo mặc định do Java cung cấp

30/08/2021 Lập trình hướng đối tượng 20


Ví dụ 2

30/08/2021 Lập trình hướng đối tượng 21


Ví dụ 3

30/08/2021 Lập trình hướng đối tượng 22


Lạp chồng
Overload

30/08/2021 Lập trình hướng đối tượng 23


Chữ ký phương thức

30/08/2021 Lập trình hướng đối tượng 24


Nạp chồng

30/08/2021 Lập trình hướng đối tượng 25


Ví dụ

30/08/2021 Lập trình hướng đối tượng 26


Ví dụ về nạp chồng trong Java

30/08/2021 Lập trình hướng đối tượng 27


Chú ý

30/08/2021 Lập trình hướng đối tượng 28


Ví dụ

30/08/2021 Lập trình hướng đối tượng 29


Ví dụ

30/08/2021 Lập trình hướng đối tượng 30


Chồng phương thức khởi tạo

30/08/2021 Lập trình hướng đối tượng 31


Kêt tập
Aggregation

30/08/2021 Lập trình hướng đối tượng 32


Mối quan hệ kết tập

30/08/2021 Lập trình hướng đối tượng 33


Ví dụ

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ

30/08/2021 Lập trình hướng đối tượng 35


Ví dụ

30/08/2021 Lập trình hướng đối tượng 36


Bản chất của kết tập

30/08/2021 Lập trình hướng đối tượng 37


Thứ tự khởi tạo

30/08/2021 Lập trình hướng đối tượng 38


Biểu diễn kết tập bằng UML

30/08/2021 Lập trình hướng đối tượng 39


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 40


Bài 5
Một số kỹ thuật nâng cao trong Java
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Lớp bao
2. Các hàm toán học
3. Các kỹ thuật thao tác với chuỗi
4. Quản lý bộ nhớ trong Java
5. So sánh đối tượng
6. Truyền tham số cho phương thức

30/08/2021 Lập trình hướng đối tượng 2


Lớp bao
Wrapper Class

30/08/2021 Lập trình hướng đối tượng 3


Lớp bao

30/08/2021 Lập trình hướng đối tượng 4


Các lớp bao

30/08/2021 Lập trình hướng đối tượng 5


Lớp bao

30/08/2021 Lập trình hướng đối tượng 6


Khởi tạo đối tượng lớp bao

30/08/2021 Lập trình hướng đối tượng 7


Chuyển đổi từ String sang các đối tượng lớp bao

30/08/2021 Lập trình hướng đối tượng 8


Trả về biến của kiểu dữ liệu nguyên thủy

30/08/2021 Lập trình hướng đối tượng 9


Chuyển đổi từ kiểu String sang các kiểu dữ liệu
nguyên thủy

30/08/2021 Lập trình hướng đối tượng 10


Phân biệt kiểu dữ liệu nguyên thủy và lớp bao

30/08/2021 Lập trình hướng đối tượng 11


Các hàm toàn học
Lớp Math

30/08/2021 Lập trình hướng đối tượng 12


Lớp Math

30/08/2021 Lập trình hướng đối tượng 13


Lớp Math

30/08/2021 Lập trình hướng đối tượng 14


Các kỹ thuật thao tác với chuỗi
String và StringBuffer

30/08/2021 Lập trình hướng đối tượng 15


Xâu (String)

30/08/2021 Lập trình hướng đối tượng 16


Ghép xâu

30/08/2021 Lập trình hướng đối tượng 17


Các phương thức của xâu

30/08/2021 Lập trình hướng đối tượng 18


StringBuffer

30/08/2021 Lập trình hướng đối tượng 19


StringBuffer

30/08/2021 Lập trình hướng đối tượng 20


Các phương thức của StringBuffer

30/08/2021 Lập trình hướng đối tượng 21


Quản lý bộ nhớ trong Java
Định vị, tái định vị và quản lý bộ nhớ

30/08/2021 Lập trình hướng đối tượng 22


Quản lý bộ nhớ

30/08/2021 Lập trình hướng đối tượng 23


Các loại bộ nhớ

30/08/2021 Lập trình hướng đối tượng 24


Bộ nhớ Stack

30/08/2021 Lập trình hướng đối tượng 25


Bộ nhớ Head

30/08/2021 Lập trình hướng đối tượng 26


Bộ nhớ Head

30/08/2021 Lập trình hướng đối tượng 27


Bộ thu gom rác

30/08/2021 Lập trình hướng đối tượng 28


Bộ thu gom rác

30/08/2021 Lập trình hướng đối tượng 29


Phương thức void finalize()

30/08/2021 Lập trình hướng đối tượng 30


So sánh đối tượng

30/08/2021 Lập trình hướng đối tượng 31


So sánh đối tượng

30/08/2021 Lập trình hướng đối tượng 32


So sánh đối tượng

30/08/2021 Lập trình hướng đối tượng 33


Phương thức equals

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ: equals trong Lớp Integer

30/08/2021 Lập trình hướng đối tượng 35


equals của lớp tự viết

30/08/2021 Lập trình hướng đối tượng 36


So sánh 2 xâu

30/08/2021 Lập trình hướng đối tượng 37


So sánh 2 xâu

30/08/2021 Lập trình hướng đối tượng 38


Truyền tham số cho phương
thức

30/08/2021 Lập trình hướng đối tượng 39


Truyền tham số

30/08/2021 Lập trình hướng đối tượng 40


Truyền tham trị

30/08/2021 Lập trình hướng đối tượng 41


Với kiểu dữ liệu nguyên thủy

30/08/2021 Lập trình hướng đối tượng 42


Với kiểu dữ liệu tham chiếu

30/08/2021 Lập trình hướng đối tượng 43


Ví dụ

30/08/2021 Lập trình hướng đối tượng 44


Ví dụ

30/08/2021 Lập trình hướng đối tượng 45


Hoán đổi tham chiếu

30/08/2021 Lập trình hướng đối tượng 46


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 47


Bài 6
Kế thừa
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Khái niệm kế thừa
2. Biểu diễn quan hệ kế thừa trong biểu đồ lớp
3. Nguyên lý kế thừa
4. Khởi tạo và hủy bỏ đối tượng lớp con

30/08/2021 Lập trình hướng đối tượng 2


Khái niệm kế thừa
Inheritance

30/08/2021 Lập trình hướng đối tượng 3


Kế thừa

30/08/2021 Lập trình hướng đối tượng 4


Bản chất của kế thừa

30/08/2021 Lập trình hướng đối tượng 5


Bản chất kế thừa

30/08/2021 Lập trình hướng đối tượng 6


Ví dụ

30/08/2021 Lập trình hướng đối tượng 7


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 8


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 9


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 10


Cú pháp kế thừa trong Java

30/08/2021 Lập trình hướng đối tượng 11


Cú pháp kế thừa trong C/C++

30/08/2021 Lập trình hướng đối tượng 12


Bản chất kế thừa

30/08/2021 Lập trình hướng đối tượng 13


Kế thừa và kết tập

30/08/2021 Lập trình hướng đối tượng 14


Biểu diễn quan hệ kế thừa trong
biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 15


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 16


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 17


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 18


Lớp Object

30/08/2021 Lập trình hướng đối tượng 19


Lớp Object

30/08/2021 Lập trình hướng đối tượng 20


Nguyên lý kế thừa
Lớp con kế thừa được những gì từ lớp cha?

30/08/2021 Lập trình hướng đối tượng 21


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 22


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 23


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 24


Ví dụ

30/08/2021 Lập trình hướng đối tượng 25


Ví dụ 2

30/08/2021 Lập trình hướng đối tượng 26


Ví dụ 2 (tt)

30/08/2021 Lập trình hướng đối tượng 27


Ví dụ 3

30/08/2021 Lập trình hướng đối tượng 28


Ví dụ 3

30/08/2021 Lập trình hướng đối tượng 29


Khởi tạo và hủy bỏ đối tượng
Thứ tự khởi tạo, gọi phương thức của lớp cha

30/08/2021 Lập trình hướng đối tượng 30


Khởi tạo và hủy bỏ đối tượng

30/08/2021 Lập trình hướng đối tượng 31


Gọi phương thức của lớp cha

30/08/2021 Lập trình hướng đối tượng 32


Ví dụ

30/08/2021 Lập trình hướng đối tượng 33


Ví dụ

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ

30/08/2021 Lập trình hướng đối tượng 35


Ví dụ

30/08/2021 Lập trình hướng đối tượng 36


Các kỹ thuật kế thừa

30/08/2021 Lập trình hướng đối tượng 37


Nội dung học
1. Ghi đè
2. Lớp trừu tượng
3. Giao diện

30/08/2021 Lập trình hướng đối tượng 38


Ghi đè
Override

30/08/2021 Lập trình hướng đối tượng 39


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 40


Định nghĩa lại hay ghi đè

30/08/2021 Lập trình hướng đối tượng 41


Định nghĩa lại hay ghi đè

30/08/2021 Lập trình hướng đối tượng 42


Ví dụ
class Shape {
protected String name;
Shape(String n) { name = n; }
public String getName() { return name; }
public float calculateArea() { return 0.0f; }
}
class Circle extends Shape {
private int radius;
Circle(String n, int r){
super(n);
radius = r;
}
public float calculateArea() {
float area = (float)(3.14 * radius * radius);
return area;
}
}

30/08/2021 Lập trình hướng đối tượng 43


Lớp Square

30/08/2021 Lập trình hướng đối tượng 44


Viết lớp Triangle
• Sinh viên thực hiện theo nhóm

30/08/2021 Lập trình hướng đối tượng 45


Sử dụng từ khóa super

30/08/2021 Lập trình hướng đối tượng 46


Ví dụ

30/08/2021 Lập trình hướng đối tượng 47


Quy định trong ghi đè

30/08/2021 Lập trình hướng đối tượng 48


Ví dụ

30/08/2021 Lập trình hướng đối tượng 49


Quy định trong ghi đè (tiếp)

30/08/2021 Lập trình hướng đối tượng 50


Hạn chế ghi đè

30/08/2021 Lập trình hướng đối tượng 51


Lớp trừu tượng
Abstract Class

30/08/2021 Lập trình hướng đối tượng 52


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 53


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 54


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 55


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 56


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 57


Ví dụ

30/08/2021 Lập trình hướng đối tượng 58


Ví dụ 2

30/08/2021 Lập trình hướng đối tượng 59


Ví dụ 2 (tt)

30/08/2021 Lập trình hướng đối tượng 60


Giao diện
Interface

30/08/2021 Lập trình hướng đối tượng 61


Đa kế thừa và đơn kế thừa

30/08/2021 Lập trình hướng đối tượng 62


Vấn đề gặp phải trong đa kế thừa

30/08/2021 Lập trình hướng đối tượng 63


Giao diện

30/08/2021 Lập trình hướng đối tượng 64


Giao diện

30/08/2021 Lập trình hướng đối tượng 65


Giao diện

30/08/2021 Lập trình hướng đối tượng 66


Interface

30/08/2021 Lập trình hướng đối tượng 67


Góc nhìn quan niệm

30/08/2021 Lập trình hướng đối tượng 68


30/08/2021 Lập trình hướng đối tượng 69
Giao diện

30/08/2021 Lập trình hướng đối tượng 70


Ví dụ

30/08/2021 Lập trình hướng đối tượng 71


Ví dụ

30/08/2021 Lập trình hướng đối tượng 72


class Circle extends Shape implements Actable {
private int radius;
public Circle(String n, int x, int y, int r) {
super(n, x, y); radius = r;
}
public float calculateArea() {
float area = (float) (3.14 * radius * radius);
return area;
}
public void draw(Graphics g) {
System out println("Draw circle at ("
+ x + “," + y + ")");
g.drawOval(x-radius,y-radius,2*radius,2*radius);
}
public void moveTo(Graphics g, int x1, int y1) {
erase(g); x = x1; y = y1; draw(g);
}
public void erase(Graphics g) {
System out println(“Erase circle at ("
+ x + “," + y + ")");
// paint the region with background color...
}
}
30/08/2021 Lập trình hướng đối tượng 73
Lớp và giao diện

30/08/2021 Lập trình hướng đối tượng 74


Nhược điểm

30/08/2021 Lập trình hướng đối tượng 75


Tổng kết

30/08/2021 Lập trình hướng đối tượng 76


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 77


Bài 7
Đa hình
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Upcasting và downcasting
2. Đa hình
3. Liên kết tĩnh và liên kết động

30/08/2021 Lập trình hướng đối tượng 2


Upcasting và downcasting
Chuyển đổi kiểu dữ liệu đối tượng

30/08/2021 Lập trình hướng đối tượng 3


Chuyển đổi kiểu dữ liệu nguyên thủy

30/08/2021 Lập trình hướng đối tượng 4


Chuyển đổi kiểu dữ liệu tham chiếu

30/08/2021 Lập trình hướng đối tượng 5


Up-casting

30/08/2021 Lập trình hướng đối tượng 6


Ví dụ

30/08/2021 Lập trình hướng đối tượng 7


Ví dụ

30/08/2021 Lập trình hướng đối tượng 8


Ví dụ

30/08/2021 Lập trình hướng đối tượng 9


Down-casting

30/08/2021 Lập trình hướng đối tượng 10


Ví dụ

30/08/2021 Lập trình hướng đối tượng 11


Liên kết tĩnh và liên kết động
Static binding & dynamic binding

30/08/2021 Lập trình hướng đối tượng 12


Liên kết lời gọi hàm

30/08/2021 Lập trình hướng đối tượng 13


Trong ngôn ngữ hướng đối tượng

30/08/2021 Lập trình hướng đối tượng 14


Liên kết tĩnh

30/08/2021 Lập trình hướng đối tượng 15


Liên kết động

30/08/2021 Lập trình hướng đối tượng 16


Ví dụ

30/08/2021 Lập trình hướng đối tượng 17


Đa hình
Polymorphism

30/08/2021 Lập trình hướng đối tượng 18


Đa hình

30/08/2021 Lập trình hướng đối tượng 19


Ví dụ

30/08/2021 Lập trình hướng đối tượng 20


Ví dụ

30/08/2021 Lập trình hướng đối tượng 21


Toán tử instanceof

30/08/2021 Lập trình hướng đối tượng 22


Ví dụ

30/08/2021 Lập trình hướng đối tượng 23


Ví dụ

30/08/2021 Lập trình hướng đối tượng 24


Tổng kết

30/08/2021 Lập trình hướng đối tượng 25


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 26


Bài 8
Lập trình tổng quát
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Lập trình tổng quát
2. Tập hợp đối tượng
3. Các giao diệnCollection
4. Cài đặt của các giao diện Collection
5. Iterator và Comparator

30/08/2021 Lập trình hướng đối tượng 2


Lập trình tổng quát
Generic programming

30/08/2021 Lập trình hướng đối tượng 3


Lập trình tổng quát

30/08/2021 Lập trình hướng đối tượng 4


Java 1.5 template

30/08/2021 Lập trình hướng đối tượng 5


Java 1.5 template

30/08/2021 Lập trình hướng đối tượng 6


Upcasting về object

30/08/2021 Lập trình hướng đối tượng 7


Ví dụ: equals của lớp tự viết

30/08/2021 Lập trình hướng đối tượng 8


Ví dụ: equals của lớp tự viết

30/08/2021 Lập trình hướng đối tượng 9


Lớp tổng quát

30/08/2021 Lập trình hướng đối tượng 10


Lớp tổng quát

30/08/2021 Lập trình hướng đối tượng 11


Lớp tổng quát

30/08/2021 Lập trình hướng đối tượng 12


Quy ước đặt tên kiểu

30/08/2021 Lập trình hướng đối tượng 13


Lớp tổng quát

30/08/2021 Lập trình hướng đối tượng 14


Phương thức tổng quát

30/08/2021 Lập trình hướng đối tượng 15


Ví dụ

30/08/2021 Lập trình hướng đối tượng 16


Ví dụ

30/08/2021 Lập trình hướng đối tượng 17


Giới hạn kiểu dữ liệu tổng quát

30/08/2021 Lập trình hướng đối tượng 18


Ví dụ

30/08/2021 Lập trình hướng đối tượng 19


Tập hợp đối tượng
Tông quan về Collection trong Java

30/08/2021 Lập trình hướng đối tượng 20


Collection

30/08/2021 Lập trình hướng đối tượng 21


Cây cấu trúc giao diện Collection

30/08/2021 Lập trình hướng đối tượng 22


Cây cấu trúc giao diện Collection

30/08/2021 Lập trình hướng đối tượng 23


Cây cấu trúc giao diện Collection

30/08/2021 Lập trình hướng đối tượng 24


Các giao diện Collection
Các giao diện trong Collection framework

30/08/2021 Lập trình hướng đối tượng 25


Giao diện Collection

30/08/2021 Lập trình hướng đối tượng 26


Giao diện Collection

30/08/2021 Lập trình hướng đối tượng 27


Giao diện Set

30/08/2021 Lập trình hướng đối tượng 28


Giao diện SortedSet

30/08/2021 Lập trình hướng đối tượng 29


Giao diện List

30/08/2021 Lập trình hướng đối tượng 30


Giao diện List

30/08/2021 Lập trình hướng đối tượng 31


Giao diện Map

30/08/2021 Lập trình hướng đối tượng 32


Giao diện SortedMap

30/08/2021 Lập trình hướng đối tượng 33


Cài đặt của các giao diện
Collection
Các lớp ArrayList, LinkedList, HashMap…

30/08/2021 Lập trình hướng đối tượng 34


Các giao diện và các cài đặt

30/08/2021 Lập trình hướng đối tượng 35


Set Implementations

30/08/2021 Lập trình hướng đối tượng 36


List Implementations

30/08/2021 Lập trình hướng đối tượng 37


Map implementations

30/08/2021 Lập trình hướng đối tượng 38


Iterator và Comparator
Sử dụng để duyệt và so sánh trên các Collection

30/08/2021 Lập trình hướng đối tượng 39


Iterator

30/08/2021 Lập trình hướng đối tượng 40


Các phương thức

30/08/2021 Lập trình hướng đối tượng 41


Ví dụ

30/08/2021 Lập trình hướng đối tượng 42


Comparator

30/08/2021 Lập trình hướng đối tượng 43


Ví dụ: Lớp Person

30/08/2021 Lập trình hướng đối tượng 44


Ví dụ: Cài đặt AgeComparator

30/08/2021 Lập trình hướng đối tượng 45


Ví dụ

30/08/2021 Lập trình hướng đối tượng 46


Ví dụ

30/08/2021 Lập trình hướng đối tượng 47


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 48


Bài 9
Ngoại lệ
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Ngoại lệ
2. Bắt và xử lý ngoại lệ
3. Ủy nhiệm ngoại lệ
4. Tự định nghĩa ngoại lệ

30/08/2021 Lập trình hướng đối tượng 2


Ngoại lệ
Exception

30/08/2021 Lập trình hướng đối tượng 3


Ngoại lệ

30/08/2021 Lập trình hướng đối tượng 4


Ngoại lệ

30/08/2021 Lập trình hướng đối tượng 5


Các xử lý lỗi truyền thống

30/08/2021 Lập trình hướng đối tượng 6


Nhược điểm

30/08/2021 Lập trình hướng đối tượng 7


Bắt và xử lý ngoại lệ
Sử dụng try và catch

30/08/2021 Lập trình hướng đối tượng 8


Mục đích của xử lý ngoại lệ

30/08/2021 Lập trình hướng đối tượng 9


Phân tách code

30/08/2021 Lập trình hướng đối tượng 10


Xử lý ngoại lệ tiếp

30/08/2021 Lập trình hướng đối tượng 11


Cơ chế bắt ngoại lệ

30/08/2021 Lập trình hướng đối tượng 12


Mục đích của xử lý ngoại lệ

30/08/2021 Lập trình hướng đối tượng 13


Phương pháp lan truyền lỗi

30/08/2021 Lập trình hướng đối tượng 14


30/08/2021 Lập trình hướng đối tượng 15
Mục đích của xử lý ngoại lệ

30/08/2021 Lập trình hướng đối tượng 16


Mô hình xử lý

30/08/2021 Lập trình hướng đối tượng 17


Cây phân cấp ngoại lệ trong Java

30/08/2021 Lập trình hướng đối tượng 18


Mô hình xử lý ngoại lệ

30/08/2021 Lập trình hướng đối tượng 19


Xử lý ngoại lệ trong Java

30/08/2021 Lập trình hướng đối tượng 20


Xử lý ngoại lệ trong Java

30/08/2021 Lập trình hướng đối tượng 21


Khối try/catch

30/08/2021 Lập trình hướng đối tượng 22


Ví dụ

30/08/2021 Lập trình hướng đối tượng 23


Ví dụ

30/08/2021 Lập trình hướng đối tượng 24


Ví dụ

30/08/2021 Lập trình hướng đối tượng 25


Lớp Throwable

30/08/2021 Lập trình hướng đối tượng 26


Ví dụ

30/08/2021 Lập trình hướng đối tượng 27


Lớp Error

30/08/2021 Lập trình hướng đối tượng 28


Lớp Exception

30/08/2021 Lập trình hướng đối tượng 29


Một số lớp con của Exception

30/08/2021 Lập trình hướng đối tượng 30


Ví dụ IOException

30/08/2021 Lập trình hướng đối tượng 31


Khối try – catch lồng nhau

30/08/2021 Lập trình hướng đối tượng 32


Nhiều khối catch

30/08/2021 Lập trình hướng đối tượng 33


Chú ý

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ

30/08/2021 Lập trình hướng đối tượng 35


Ví dụ

30/08/2021 Lập trình hướng đối tượng 36


Ví dụ
public void openFile() {
try {
// constructor may throw FileNotFoundException
FileReader reader = new FileReader("someFile");
int i=0;
while(i != -1) {
//reader.read() may throw IOException
i = reader.read();
System.out.println((char) i );
}
reader.close();
System.out.println("--- File End ---");
} catch (FileNotFoundException e) {
//do something clever with the exception
} catch (IOException e) {
//do something clever with the exception
}
}
...

30/08/2021 Lập trình hướng đối tượng 37


Khối finally

30/08/2021 Lập trình hướng đối tượng 38


Cú pháp try - catch - finally

30/08/2021 Lập trình hướng đối tượng 39


Ví dụ

30/08/2021 Lập trình hướng đối tượng 40


Ví dụ
public void openFile(){

try {

// constructor may throw

// FileNotFoundException

FileReader reader = new FileReader("foo");

int i=0;

while(i != -1) {

//reader.read() may throw IOException

i = reader.read();

System.out.println((char) i );

} catch (FileNotFoundException e) {

//do something clever with the exception

} catch (IOException e) {

//do something clever with the exception

} finally {

reader.close();

System.out.println("--- File End ---");

30/08/2021 Lập trình hướng đối tượng 41


Ủy nhiệm ngoại lệ
Throw một ngoại lệ

30/08/2021 Lập trình hướng đối tượng 42


Hai cách làm việc với ngoại lệ

30/08/2021 Lập trình hướng đối tượng 43


Ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 44


Ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 45


Ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 46


Ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 47


Ví dụ

30/08/2021 Lập trình hướng đối tượng 48


Ví dụ

30/08/2021 Lập trình hướng đối tượng 49


Ví dụ

30/08/2021 Lập trình hướng đối tượng 50


Ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 51


Lan truyền ngoại lệ

30/08/2021 Lập trình hướng đối tượng 52


Lan truyền ngoại lệ

30/08/2021 Lập trình hướng đối tượng 53


Kế thừa và ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 54


Kế thừa và ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 55


Ưu điểm của ủy nhiệm ngoại lệ

30/08/2021 Lập trình hướng đối tượng 56


Ngoại lệ tự định nghĩa
Lớp Exception tự viết

30/08/2021 Lập trình hướng đối tượng 57


Tạo ngoại lệ tự định nghĩa

30/08/2021 Lập trình hướng đối tượng 58


Sử dụng ngoại lệ tự định nghĩa

30/08/2021 Lập trình hướng đối tượng 59


Sử dụng ngoại lệ tự định nghĩa

30/08/2021 Lập trình hướng đối tượng 60


Tổng kết

30/08/2021 Lập trình hướng đối tượng 61


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 62


Bài 10
Input và Ouput
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Tổng quan
2. I/O với file text
3. I/O với file nhị phân
4. Một số luồng trong Java

30/08/2021 Lập trình hướng đối tượng 2


Tổng quan
Mô hình input và output trong Java

30/08/2021 Lập trình hướng đối tượng 3


Tổng quan

30/08/2021 Lập trình hướng đối tượng 4


Luồng

30/08/2021 Lập trình hướng đối tượng 5


Mô hình I/O

30/08/2021 Lập trình hướng đối tượng 6


Mở luồng

30/08/2021 Lập trình hướng đối tượng 7


Ví dụ

30/08/2021 Lập trình hướng đối tượng 8


Sử dụng luồng

30/08/2021 Lập trình hướng đối tượng 9


Ví dụ

30/08/2021 Lập trình hướng đối tượng 10


Đóng

30/08/2021 Lập trình hướng đối tượng 11


Lớp xử lý I/O trong Java

30/08/2021 Lập trình hướng đối tượng 12


Lớp File

30/08/2021 Lập trình hướng đối tượng 13


Các phương thức của lớp file

30/08/2021 Lập trình hướng đối tượng 14


File text và file nhị phân

30/08/2021 Lập trình hướng đối tượng 15


File text và file nhị phân

30/08/2021 Lập trình hướng đối tượng 16


File nhị phân Java

30/08/2021 Lập trình hướng đối tượng 17


I/O với file text
FileReader và FileWriter

30/08/2021 Lập trình hướng đối tượng 18


Xử lý file text

30/08/2021 Lập trình hướng đối tượng 19


Mở và đóng file

30/08/2021 Lập trình hướng đối tượng 20


Copy từng ký tự vào file

30/08/2021 Lập trình hướng đối tượng 21


Copy nhiều ký tự

30/08/2021 Lập trình hướng đối tượng 22


Làm việc với dòng

30/08/2021 Lập trình hướng đối tượng 23


Ví dụ

30/08/2021 Lập trình hướng đối tượng 24


Copy từng dòng

30/08/2021 Lập trình hướng đối tượng 25


PrintWriter

30/08/2021 Lập trình hướng đối tượng 26


I/O với file nhị phân
FileInputStream và FileOutputStream

30/08/2021 Lập trình hướng đối tượng 27


Luồng input, output nhị phân

30/08/2021 Lập trình hướng đối tượng 28


FileInputStream

30/08/2021 Lập trình hướng đối tượng 29


Các phương thức của FileInputStream

30/08/2021 Lập trình hướng đối tượng 30


FileOutputStream

30/08/2021 Lập trình hướng đối tượng 31


FileOutputStream

30/08/2021 Lập trình hướng đối tượng 32


Ví dụ FileOutputStream

30/08/2021 Lập trình hướng đối tượng 33


Ví dụ FileOutputStream (tiếp)

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ FileOutputStream (tiếp)

30/08/2021 Lập trình hướng đối tượng 35


Làm việc với đối tượng

30/08/2021 Lập trình hướng đối tượng 36


Điều kiện cho quá trình tuần tự

30/08/2021 Lập trình hướng đối tượng 37


Giao diện Serializable

30/08/2021 Lập trình hướng đối tượng 38


Làm việc với đối tượng

30/08/2021 Lập trình hướng đối tượng 39


Ghi đối tượng ra file

30/08/2021 Lập trình hướng đối tượng 40


Đọc đối tượng từ file

30/08/2021 Lập trình hướng đối tượng 41


Một số luồng trong Java
Scanner & printf

30/08/2021 Lập trình hướng đối tượng 42


Các luồng có sẵn trong Java

30/08/2021 Lập trình hướng đối tượng 43


Các luồng có sẵn trong Java

30/08/2021 Lập trình hướng đối tượng 44


Các luồng có sẵn trong Java

30/08/2021 Lập trình hướng đối tượng 45


java.util.Scanner

30/08/2021 Lập trình hướng đối tượng 46


Sử dụng Scanner

30/08/2021 Lập trình hướng đối tượng 47


Sử dụng Scanner

30/08/2021 Lập trình hướng đối tượng 48


Định dạng output

30/08/2021 Lập trình hướng đối tượng 49


Tổng kết

30/08/2021 Lập trình hướng đối tượng 50


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 51


Bài 11
Đồ họa và xử lý sự kiện
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Giao diện đồ họa người sử dụng
2. AWT
3. Xử lý sự kiện
4. Swing

30/08/2021 Lập trình hướng đối tượng 2


Giao diện đồ họa người dùng
Graphical User Interface (GUI)

30/08/2021 Lập trình hướng đối tượng 3


Giao diện đồ họa người dùng

30/08/2021 Lập trình hướng đối tượng 4


Ví dụ

30/08/2021 Lập trình hướng đối tượng 5


Lập trình GUI trong Java

30/08/2021 Lập trình hướng đối tượng 6


Lập trình GUI trong Java

30/08/2021 Lập trình hướng đối tượng 7


AWT
Advanced Widget Toolkit

30/08/2021 Lập trình hướng đối tượng 8


AWT

30/08/2021 Lập trình hướng đối tượng 9


AWT (tiếp)

30/08/2021 Lập trình hướng đối tượng 10


Các thành phần của AWT

30/08/2021 Lập trình hướng đối tượng 11


Top-level AWT container

30/08/2021 Lập trình hướng đối tượng 12


Top-level AWT container

30/08/2021 Lập trình hướng đối tượng 13


Secondary AWT container

30/08/2021 Lập trình hướng đối tượng 14


Cây phân cấp kế thừa AWT

30/08/2021 Lập trình hướng đối tượng 15


Các thành phần của AWT

30/08/2021 Lập trình hướng đối tượng 16


Label

30/08/2021 Lập trình hướng đối tượng 17


Add component vào container

30/08/2021 Lập trình hướng đối tượng 18


Button

30/08/2021 Lập trình hướng đối tượng 19


TextField

30/08/2021 Lập trình hướng đối tượng 20


Quản lý bố cục

30/08/2021 Lập trình hướng đối tượng 21


Thiết lập Layout Manager

30/08/2021 Lập trình hướng đối tượng 22


FlowLayout

30/08/2021 Lập trình hướng đối tượng 23


Ví dụ FlowLayout

30/08/2021 Lập trình hướng đối tượng 24


GridLayout

30/08/2021 Lập trình hướng đối tượng 25


BorderLayout

30/08/2021 Lập trình hướng đối tượng 26


Xử lý sự kiện
Các giao diện listener và các cài đặt

30/08/2021 Lập trình hướng đối tượng 27


Tổng quan

30/08/2021 Lập trình hướng đối tượng 28


Xử lý sự kiện

30/08/2021 Lập trình hướng đối tượng 29


Chiến lược xử lý sự kiện

30/08/2021 Lập trình hướng đối tượng 30


Một số listener cơ bản

30/08/2021 Lập trình hướng đối tượng 31


Một số listener cơ bản

30/08/2021 Lập trình hướng đối tượng 32


Một số listener cơ bản

30/08/2021 Lập trình hướng đối tượng 33


Một số listener cơ bản

30/08/2021 Lập trình hướng đối tượng 34


Một số listener cơ bản

30/08/2021 Lập trình hướng đối tượng 35


Chiến lược xử lý sự kiện

30/08/2021 Lập trình hướng đối tượng 36


Ví dụ

30/08/2021 Lập trình hướng đối tượng 37


Xây dựng lớp Listener

30/08/2021 Lập trình hướng đối tượng 38


Đăng ký với button

30/08/2021 Lập trình hướng đối tượng 39


Adapter

30/08/2021 Lập trình hướng đối tượng 40


Các Adapter tương ứng

30/08/2021 Lập trình hướng đối tượng 41


Ví dụ
class MyMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent event) {
System.out.println("Mouse-button pressed at (" +
event.getX() + "," + event.getY() + ").");
}
}
public class FrameEventExample extends Frame {
public FrameEventExample () {
addMouseListener(new MyMouseListener());
setTitle(“Button Event Example");
setSize(640, 480);
setVisible(true);
}
}

30/08/2021 Lập trình hướng đối tượng 42


Lấy đối tượng từ source

30/08/2021 Lập trình hướng đối tượng 43


Cách 1: Sử dụng getSource

30/08/2021 Lập trình hướng đối tượng 44


Cách 1: Sử dụng getSource

30/08/2021 Lập trình hướng đối tượng 45


Cách 2: Thực thi giao diện listener

30/08/2021 Lập trình hướng đối tượng 46


Cách 2: Thực thi giao diện listener

30/08/2021 Lập trình hướng đối tượng 47


Cách 3: Sử dụng inner class
• Viết lớp listener bên trong lớp frame
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class FrameEventExample extends Frame {
public FrameEventExample() {
addMouseListener(new CircleListener());
}
private class CircleListener extends MouseAdapter {
…}
}

30/08/2021 Lập trình hướng đối tượng 48


Cách 4: Sử dụng anonymous inner class
public class FrameEventExample extends Frame {
public FrameEventExample() {
addMouseListener
(new MouseAdapter() {
private int radius = 25;
public void mousePressed(MouseEvent event) {
Graphics g = getGraphics();
g.fillOval(event.getX()-radius,
event.getY()-radius,
2*radius, 2*radius);
}
});
}

30/08/2021 Lập trình hướng đối tượng 49


Ví dụ: Simple White Board

30/08/2021 Lập trình hướng đối tượng 50


Ví dụ: Simple White Board (tiếp)
protected void record(int x, int y) {
lastX = x; lastY = y;
}
private class PositionRecorder extends MouseAdapter {
public void mouseEntered(MouseEvent event) {
requestFocus();
record(event.getX(), event.getY());
}
public void mousePressed(MouseEvent event) {
record(event.getX(), event.getY());
}
}

30/08/2021 Lập trình hướng đối tượng 51


Ví dụ: Simple White Board (tiếp)
private class LineDrawer extends MouseMotionAdapter {
public void mouseDragged(MouseEvent event) {
int x = event.getX();
int y = event.getY();
Graphics g = getGraphics();
g.drawLine(lastX, lastY, x, y);
record(x, y);
}
}
}

30/08/2021 Lập trình hướng đối tượng 52


Ví dụ: Simple White Board (tiếp)

30/08/2021 Lập trình hướng đối tượng 53


Swing
javax.swing

30/08/2021 Lập trình hướng đối tượng 54


Swing vs. AWT

30/08/2021 Lập trình hướng đối tượng 55


GUI component hierarchy

30/08/2021 Lập trình hướng đối tượng 56


Windows Look and Feel

30/08/2021 Lập trình hướng đối tượng 57


Motif Look and Feel

30/08/2021 Lập trình hướng đối tượng 58


Java Look and Feel

30/08/2021 Lập trình hướng đối tượng 59


Thay đổi Look and Feel

30/08/2021 Lập trình hướng đối tượng 60


Các thành phần Swing

30/08/2021 Lập trình hướng đối tượng 61


JApplet

30/08/2021 Lập trình hướng đối tượng 62


JApplet

30/08/2021 Lập trình hướng đối tượng 63


Các thành phần tương tự AWT

30/08/2021 Lập trình hướng đối tượng 64


JButton

30/08/2021 Lập trình hướng đối tượng 65


Ví dụ JButton

30/08/2021 Lập trình hướng đối tượng 66


Ví dụ JButton
JButton button1 = new JButton("Java");
content.add(button1);
ImageIcon cup = new ImageIcon("images/cup.gif");
JButton button2 = new JButton(cup);
content.add(button2);
JButton button3 = new JButton("Java", cup);
content.add(button3);
JButton button4 = new JButton("Java", cup);
button4.setHorizontalTextPosition(SwingConstants.LEFT);
content.add(button4);
pack();
setVisible(true);
}
}

30/08/2021 Lập trình hướng đối tượng 67


JOptionPane

30/08/2021 Lập trình hướng đối tượng 68


JOptionPane Message Dialogs

30/08/2021 Lập trình hướng đối tượng 69


Các thành phần khác

30/08/2021 Lập trình hướng đối tượng 70


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 71


Bài 12
Tổng quan UML
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung
1. Phân tích và thiết kế hệ thống HĐT
2. Biểu đồ use case
3. Biểu đồ hoạt động
4. Biểu đồ tương tác
5. Biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 2


Phân tích và thiết kế hệ thống
hướng đối tượng
Object-oriented analysis and design (OOAD)

30/08/2021 Lập trình hướng đối tượng 3


Mô hình hóa

30/08/2021 Lập trình hướng đối tượng 4


Mô hình hóa

30/08/2021 Lập trình hướng đối tượng 5


UML

30/08/2021 Lập trình hướng đối tượng 6


UML

30/08/2021 Lập trình hướng đối tượng 7


UML

30/08/2021 Lập trình hướng đối tượng 8


UML

30/08/2021 Lập trình hướng đối tượng 9


UML

30/08/2021 Lập trình hướng đối tượng 10


Lịch sử phát triển

30/08/2021 Lập trình hướng đối tượng 11


Lịch sử phát triển của UML

30/08/2021 Lập trình hướng đối tượng 12


Lịch sử phát triển của UML

30/08/2021 Lập trình hướng đối tượng 13


Lịch sử phát triển của UML

30/08/2021 Lập trình hướng đối tượng 14


Mục đích của OOAD

30/08/2021 Lập trình hướng đối tượng 15


Các công cụ UML

30/08/2021 Lập trình hướng đối tượng 16


Các biểu đồ UML

30/08/2021 Lập trình hướng đối tượng 17


Biểu đồ use case
Use case diagram

30/08/2021 Lập trình hướng đối tượng 18


Tổng quan

30/08/2021 Lập trình hướng đối tượng 19


Tổng quan về biểu đồ use case

30/08/2021 Lập trình hướng đối tượng 20


Mục đích

30/08/2021 Lập trình hướng đối tượng 21


Các thành phần chính

30/08/2021 Lập trình hướng đối tượng 22


Ví dụ

30/08/2021 Lập trình hướng đối tượng 23


Xác định tác nhân của hệ thống

30/08/2021 Lập trình hướng đối tượng 24


Các thành phần chính (tiếp)

30/08/2021 Lập trình hướng đối tượng 25


Xác định use case của hệ thống

30/08/2021 Lập trình hướng đối tượng 26


Những điều nên tránh khi tạo UC

30/08/2021 Lập trình hướng đối tượng 27


Các thành phần chính (tiếp)

30/08/2021 Lập trình hướng đối tượng 28


Giữa các actor

30/08/2021 Lập trình hướng đối tượng 29


Giữa actor với use case

30/08/2021 Lập trình hướng đối tượng 30


Giữa actor với use case (tiếp)

30/08/2021 Lập trình hướng đối tượng 31


Giữa các use case

30/08/2021 Lập trình hướng đối tượng 32


a. Quan hệ generalization

30/08/2021 Lập trình hướng đối tượng 33


b. Quan hệ <<include>>

30/08/2021 Lập trình hướng đối tượng 34


c. Quan hệ <<extend>>

30/08/2021 Lập trình hướng đối tượng 35


Đọc biểu đồ use case

30/08/2021 Lập trình hướng đối tượng 36


Ví dụ

30/08/2021 Lập trình hướng đối tượng 37


Biểu đồ hoạt động
Activity diagram

30/08/2021 Lập trình hướng đối tượng 38


Biểu đồ hoạt động

30/08/2021 Lập trình hướng đối tượng 39


Biểu đồ hoạt động

30/08/2021 Lập trình hướng đối tượng 40


Ví dụ: Đăng ký khóa học

30/08/2021 Lập trình hướng đối tượng 41


Gọi một AD khác

30/08/2021 Lập trình hướng đối tượng 42


Phân chia (Partition)

30/08/2021 Lập trình hướng đối tượng 43


Phân chia một chiều

30/08/2021 Lập trình hướng đối tượng 44


Bài tập
• Cho:
• Các tác nhân: Người mua, Hệ thống E-mail, Hệ thống cho vay và Hệ thống báo cáo tín
dụng
• Các use case: Tìm người môi giới, Quản lý hồ sơ cá nhân, Tìm kiếm nhà và Yêu cầu vay
• Các mối liên kết:
• Từ người mua tới Tìm người môi giới
• Từ người mua tới Quản lý hồ sơ cá nhân
• Từ người mua tới Tìm kiếm nhà
• Từ người mua tới Yêu cầu vay
• Quản lý hồ sơ cá nhân tới Hệ thống e-mail
• Tìm kiếm nhà tới Hệ thống e-mail
• Yêu cầu vay tới Hệ thống e-mail, Hệ thống cho vay
• Yêu cầu vay tới Hệ thống báo cáo tín dụng
• Hãy vẽ:
• Biểu đồ use-case
30/08/2021 Lập trình hướng đối tượng 45
Bài tập
• Cho:
• Các trạng thái hành động:
• Chọn hồ sơ
• Tìm hồ sơ người mua
• Tạo hồ sơ mới
• Đăng nhập
• Luồng hoạt động:
• Bắt đầu từ Chọn hồ sơ tới Tìm hồ sơ người mua rồi đi từ Tìm hồ sơ người
mua đến Tạo hồ sơ mới nếu hồ sơ không tồn tại. Nếu hồ sơ tồn tại thì có thể
Đăng nhập
• Hãy vẽ:
• Biểu đồ hoạt động

30/08/2021 Lập trình hướng đối tượng 46


Biểu đồ tương tác
Interaction diagram

30/08/2021 Lập trình hướng đối tượng 47


Các đối tượng cần phải cộng tác

30/08/2021 Lập trình hướng đối tượng 48


Ví dụ

30/08/2021 Lập trình hướng đối tượng 49


Biểu đồ tương tác

30/08/2021 Lập trình hướng đối tượng 50


Các biểu đồ tương tác

30/08/2021 Lập trình hướng đối tượng 51


Các biểu đồ tương tác (tiếp)

30/08/2021 Lập trình hướng đối tượng 52


Biểu đồ tương tác
Biểu đồ trình tự
Sequence diagram (SD)

30/08/2021 Lập trình hướng đối tượng 53


Biểu đồ trình tự

30/08/2021 Lập trình hướng đối tượng 54


Biểu đồ trình tự

30/08/2021 Lập trình hướng đối tượng 55


Ví dụ: Đăng ký khóa học

30/08/2021 Lập trình hướng đối tượng 56


Biểu đồ trình tự: Đối tượng

30/08/2021 Lập trình hướng đối tượng 57


Biểu đồ trình tự: Tác nhân

30/08/2021 Lập trình hướng đối tượng 58


Biểu đồ trình tự: Thông điệp

30/08/2021 Lập trình hướng đối tượng 59


Biểu đồ trình tự: Kích hoạt

30/08/2021 Lập trình hướng đối tượng 60


Biểu đồ trình tự: Khung tương tác

30/08/2021 Lập trình hướng đối tượng 61


Biểu đồ trình tự: Khung tương tác

30/08/2021 Lập trình hướng đối tượng 62


Ví dụ

30/08/2021 Lập trình hướng đối tượng 63


Biểu đồ tương tác
Biểu đồ giao tiếp
Communication diagram (CD)

30/08/2021 Lập trình hướng đối tượng 64


Biểu đồ giao tiếp

30/08/2021 Lập trình hướng đối tượng 65


Ví dụ

30/08/2021 Lập trình hướng đối tượng 66


Đối tượng

30/08/2021 Lập trình hướng đối tượng 67


Tác nhân

30/08/2021 Lập trình hướng đối tượng 68


Liên kết và thông điệp

30/08/2021 Lập trình hướng đối tượng 69


Biểu đồ trình tự và giao tiếp

30/08/2021 Lập trình hướng đối tượng 70


Biểu đồ trình tự và giao tiếp

30/08/2021 Lập trình hướng đối tượng 71


Biểu đồ lớp
Class diagram

30/08/2021 Lập trình hướng đối tượng 72


Biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 73


Lớp

30/08/2021 Lập trình hướng đối tượng 74


Biểu diễn thuộc tính

30/08/2021 Lập trình hướng đối tượng 75


Mô tả phương thức

30/08/2021 Lập trình hướng đối tượng 76


Phạm vi truy cập

30/08/2021 Lập trình hướng đối tượng 77


Thành viên lớp

30/08/2021 Lập trình hướng đối tượng 78


Ví dụ

30/08/2021 Lập trình hướng đối tượng 79


Ví dụ

30/08/2021 Lập trình hướng đối tượng 80


Gói

30/08/2021 Lập trình hướng đối tượng 81


Ví dụ

30/08/2021 Lập trình hướng đối tượng 82


Liên kết

30/08/2021 Lập trình hướng đối tượng 83


Mối quan hệ

30/08/2021 Lập trình hướng đối tượng 84


Ví dụ

30/08/2021 Lập trình hướng đối tượng 85


Kết tập

30/08/2021 Lập trình hướng đối tượng 86


Ví dụ

30/08/2021 Lập trình hướng đối tượng 87


Cấu thành

30/08/2021 Lập trình hướng đối tượng 88


So sánh kết tập và cấu thành

30/08/2021 Lập trình hướng đối tượng 89


Tổng quát hóa (Generalization)

30/08/2021 Lập trình hướng đối tượng 90


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 91


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 92

You might also like