4/14/2010
1
CHƯƠNG 1:
NHẬP MÔN LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
1
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
MỤC TIÊU
y Nhận biết sự khác biệt giữa lập trình hướng thủ tục và
lập trình hướng đối tượng.
y Phân tích, thiết kế và hiện thực được một chương
trình theo phương pháp hướng đối tượng.
ố
2
y Nhận diện một s
ố
n
g
ôn n
g
ữ OOP.
y Nhận biết các khái niệm cơ bản của OOP.
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
NỘI DUNG CHI TIẾT
y LẬP TRÌNH THỦ TỤC – POP
y LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – OOP
y SƠ LƯỢC VỀ OOP
{ ĐỐI TƯỢNG
3
};
void main()
{ X x;
Fun(x);
};
pick
nouns
pick
verbs
Data structure + Algorithm = Program
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
2
NHƯỢC ĐIỂM CỦA POP
y Diễn đạt “thiếu tự nhiên”
Có học sinh x
“Viết lý lịch cho học sinh x”
“x
ơ
i
,
viết l
ý
l
ị
ch đi em”
VietLyLich(x);
x VietLyLich();
nhau ho
ặ
c m
ộ
t pointer
.
Î
Tính phân l
ớ
p khó đ
ượ
c phát hi
ệ
n
,
có khó khăn trong biểu diễn lẫn tính dễ hiểu.
y Bảo mật kém do không thể giới hạn truy xuất đến một
dữ liệu.
struct STUDENT
{ char Name[21];
int Age;
int Score;
};
void main()
{STUDENT x = { “Hoa”, 19, 5};
x.Age=1000;
x.Score=-20;
};
GV: Võ Hồng Bảo Châu
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
y OOP – Object Oriented Programming.
y Chương trình là sự hoạt động của các đối tượng Æ Giống tự
nhiên.
y Đối tượng thực thi một hoạt động tức là đối tượng thực hiện
m
ộ
t
hành vi
mà đ
ố
i t
ượ
ng này có kh
ả
năng
8
m
ộ
t
hành vi
mà đ
ố
i t
ượ
ng này có kh
ả
năng
.
{ <dữ liệu thêm>
} ;
tự
nhiên
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
y Có tính bảo mật cao: Bên ngoài không thể tùy tiện
truy cập một dữ liệu thuộc tính.
11
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
ƯU ĐIỂM CỦA OOP
12
Tái sử dụn
g
code
Tái sử dụng code
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
4
SỰ KHÁC BIỆT
y Theo thủ tục ¾ Hướng đối tượng
13
Rút tiền (withdraw), gửi tiền
(deposit), chuyển tiền (transfer)
Khách hàng (customer), tiền
(money), tài khoản (account)
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
(messages)
y Thông điệp được nhận bởi các hành vi
của đối tượng
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
girl
class
object
16
Lan
Cúc
Trúc
Mai
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
5
DỮ LIỆU (data):
-Xinh đẹp
-Dịu dàng
17
Mai
HÀNH VI (behavior ):
-mua sắm
-làm việc nhà
-…
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
HÀNH VI (BEHAVIOR)
f
)
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
NHỮNG GÌ LÀ ĐỐI TƯỢNG
y Vật có thể sờ mó được
(Tangible things)
y Vai trò (Roles)
S
i
ệ
ả
ìh i
ế
¾ Như là xe hơi, máy in,
¾ Công nhân, người chủ,
20
y
S
ự
vi
ệ
c
x
ả
y
ra,
i
etL
y
L
i
c
h()
;
String S= x.getName();
int n= x.getAge();
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
MỘT SỐ ĐẶC TÍNH
y TÍNH ĐÓNG GÓI (ENCAPSULATION)
y TÍNH THỪA KẾ (INHERITANCE)
y TÍNH ĐA HÌNH (POLYMORPHISM)
22
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
TÍNH ĐÓNG GÓI (ENCAPSULATION)
y Dữ liệu và thao tác được nhóm lại với nhau
Thực chất là sự ghép
chung nh
ữ
ng hi
ể
u
Account
23
chung nh
ầ
n
t
hi
ế
t
y Thực chất là sự phân lớp
(classification) trong việc
thiết kế hệ thống theo hướng
đối tượng
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
7
TÍNH THỪA KẾ (INHERITANCE)
y Theo ngôn ngữ lớp, sự thừa kế có nghĩa là một lớp
thừa kế các đặc tính của lớp khác.
y Đây chính là quan hệ “là một” (“is a”)
25
A car is a vehicle
A teacher is a person
A dog is an animal
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
TÍNH ĐA HÌNH (POLYMORPHISM)
y Nhiều đối tượng cùng chia sẻ đặc tính chung, nhưng
có những tác động khác nhau.
y Có cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng
khác nhau.
{
Hi
ệ
n th
ự
c l
ạ
i hành vi đã có c
ủ
a t
ổ
tiên
27
{
Hi
ệ
n th
ự
c l
ạ
i hành vi đã có c
ủ
a t
ổ
tiên
{ Phải có cùng tên và trùng mọi yếu tố tạo nên hành vi này.
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
y C++ ( Borland C++, Visual C++)
ế
29
ma
i
n
ph
ả
i
n
ằ
m
t
ron
g
m
ộ
t l
ớ
p
.
Ch
ỉ
h
ỗ
t
r
ợ
đ
ơ
n
type2 prop2;
type Method1( )
pick
nouns
31
Problem
Operation
(function,
method,
behavior)
type Method1(
)
{
}
};
void main()
{ XX x;
// object variable
x.Method( );
};
pick
verbs
Bao gói dữ liệu và
hành vi thành class
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
SO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNH
theo cac1h “không tự nhiên”.
{
Khó tái s
ử
d
ng code
36
{
Khó tái s
ử
d
ụ
ng code
.
{ Bảo mật kém.
Chương trình=cấu trúc dữ liệu + thuật toán
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
10
TÓM TẮT
y OOP: Xem dữ liệu và tác vụ là một thể thống nhất.
y Ưu điểm của OOP:
{ Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên
theo cách “ tự nhiên”.
{
D
ễ
tái s
ử
K
Ế
(INHERITANCE)
{ TÍNH ĐA HÌNH (POLYMORPHISM)
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
y Lập trình OOP cũng tương tự như lập trình POP nhưng mô tả bài toán
dưới dạng các class, các tác vụ xử lý dữ liệu thành các hành vi của
class.
y Khai báo class cũng tương tự như khai báo struct nhưng có khác
struct ở chỗ đưa các tác vụ thao tác lên struct vào trong class và gọi
chúng là các methods của lớp
struct StructName class ClassName
public
39
{
<data>
};
Type1 Func1 (StructName stru)
{ <code>}
Type2 Func2 (StructName stru)
{<code>}
các hàm đều toàn cục
{
<data>
Modifier : Type1 Func1 ()
{ <code>}
Modifier : Type2 Func2 ()
{ <code>}
};
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
BÀI TẬP TẠI LỚP
4. Viết chương trình tính tổng, hiệu, tích, thương của
2 phân số nhập từ bàn phím. In ra kết quả dưới
dạng tối giản.
5. Viết chương trình giải phương trình bậc 1: ax+b=0
ớ
i b là
ố
th
h
ậ
t
ừ
bà hí
42
v
ớ
i
a,
b là
2
s
ố
th
ực
n
bình giảm dần.
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
BÀI CHUẨN BỊ TRƯỚC
y ÔN LẠI NGÔN NGỮ LẬP TRÌNH C/C++
{ Kiểu dữ liệu
{ Biến, hằng, biểu thức, phép toán
{ Câu lệnh điều kiện: if, switch
{
Câu l
ệ
nh l
ặ
p: for while do while
44
{
Câu l
ệ
nh l
ặ
p: for
,
while
,
do
while
{ Hàm: khai báo, truyền tham số, gọi hàm,…
{ Mảng 1 chiều, 2 chiều
{ Chuỗi ký tự