Tải bản đầy đủ (.pdf) (12 trang)

CHƯƠNG 1: NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (786.02 KB, 12 trang )

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


{ HÀNH VI
{ THÔNG ĐIỆP
{ DỮ LIỆU
{ ĐẶC TÍNH
y GIẢI BÀI TOÁN VỚI OOP
y TÓM TẮT
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
LẬP TRÌNH THỦ TỤC
y POP- Procedure Oriented Programming.
{ Phân công việc → những việc nhỏ hơn
{ Là các chương trình con
{ Thiết kế top-down
y
K

thuật POP:
Program
struct XX
4

Problem
Data
structure
Operation
(function)
{
};
type Fun (XX x)
{

};
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();

5
,
ý

“x ơi, viết lý lịch đi em”
x
.
VietLyLich();
Diễn đạt nào tự nhiên hơn?
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
NHƯỢC ĐIỂM CỦA POP
y Khó mô tả những quan hệ phức tạp của thế giới tự
nhiên. Biểu diễn dạng cấu trúc “phức tạp”, không
phải là dễ dàng đối với nhiều người.
{ Quan hệ giữa các dữ liệu được biểu diễn bằng cấu trúc lồng
nhau ho

c m

t pointer
Î
Tính phân l

p khó đ
ượ
c phát hi

n
6

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;
};

Bạn nghĩ sao về
2 tác vụ này?
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
Cần một phương pháp lập
trình khác giúp giải quyết
những nhược điểm này.
OOP có nh

ng đ

c đi

m v
ượ
t
7
OOP
OOP có nh

ng đ

c đi

m v
ượ
t
trội so với POP và là hướng
lập trình chủ đạo hiện nay.
OOP-CHƯƠNG 1- NHẬP MÔN OOP

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
.

y Một chương trình là một trật tự các lời yêu cầu đối tượng
thực hiện hành vi của mình.
Î Chương trình là một kích bản (script).
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
3
y Từ những đối tượng, sự vật, sự kiện, tạo nên chương
trình
y Thiết kế bottom-up
9
Đối tượng = Dữ liệu + Hành vi
=+
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
ƯU ĐIỂM CỦA OOP
y Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên.
Tự nhiên
Person
class PERSON
{
} ;
Hiện thực
10
Male Female
is a is a
class MALE: PERSON
{<dữ liệu thêm>
} ;
class FEMALE: PERSON

{ <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

SƠ LƯỢC VỀ OOP
Đối tượng = Dữ liệu + Hành vi
14
=+
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
ĐỐI TƯỢNG
y Một đối tượng như là một hộp đen,
mà chi tiết bên trong được dấu kín
y
Các đ

i t
ượ
ng giao ti
ế
p v

i nhau
15
Các đ

i t
ượ
ng giao ti
ế
p v

i nhau
thông qua việc truyền các thông điệp

(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)

y Thao tác (operation)
y Phương thức (method)
y Hàm (function)
y Thủ t

c
(p
rocedure
)
18

(p )
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
DỮ LIỆU (DATA)
y Thông tin (information)
y Tính chất (property)
y Thuộc tính (attribute)
y Trư

n
g

(
f
iel
d
)
19
g(

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,


t
ì
n
h
t
i
ế
t

(Incidents)
y Sự tương tác
(Interactions)
y Sự mô tả (Specifications)
¾ Chuyến bay, tràn số,
¾ Ký kết thỏa ước, mua
hàng,
¾ Màu, hình dạng
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
6
THÔNG ĐIỆP
y Gửi thông điệp: Yêu cầu 1 đối tượng thực thi một
hành vi.
y Thí dụ:
x là một HOCSINH < Name, Age>
iih()
21
x.V

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


ng hi

u
biết về thế giới thực
→ Có sự đồng nhất
giữa dữ liệu và thao
tác trên dữ liệu
Account
Withdraw
Deposit
Transfer
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
TÍNH THỪA KẾ (INHERITANCE)
y Tạo ra một kiểu dữ liệu mới
từ kiểu đã có
y Nhằm sử dụng lại, và bổ sung
h

ì

hi
ế
24
n
h

n
g gì c


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.

y
Th

c ch

t là tính đa d

ng (
many form
)
26
y
Th

c ch

t là tính đa d

ng (
many form
)
y Để hiện thực được tính đa hình, ngôn ngữ đối tượng
có đặc tính như overload, override.
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
Overloaded và Overridden methods ?
y Overloaded methods:
{ Nhằm cung cấp các dạng khác nhau của hành vi, nhưng vẫn có
cùng tên gọi.
y Overridden methods:

{
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++)

y Java
y C# ( C sharp)
y Visual Basic.
28
y
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
8
y C++, MS VC++: hỗ trợ cả POP lẫn OOP Æ Lai OOP.
Hỗ trợ đa thừa kế. Đối tượng là biến của chương trình.
Hàm main() là POP.
y Java (Sun), C# (Microsoft): chỉ hỗ trợ OOP, hàm
i h

i

t

t l

Ch

h

t
đ
th

k

ế
29
ma
i
n
ph

i
n

m
t
ron
g
m

t l

p
.
Ch

h

t
r

đ
ơ
n

th

a
k
ế
.
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
Fortran (1954)
Algol (1958)
LISP (1957)
Scheme (1975)
CPL (1963), U Cambridge
Combined Programming Language
30
BCPL (1967), MIT
Basic Combined Programming Language
B (1969), Bell Labs
C (1970), Bell Labs
C++ (1983), Bell Labs
Java (1995), Sun
Objective C
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
Phương pháp giải bài toán theo OOP
properties
Program
class XX
{ type1 prop1;

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

y Viết chương trình nhập, xuất 1 học sinh. Thông tin
cần quan tâm về 1 học sinh: Mã học sinh (8 ký tự),
tên học sinh (30 ký tự), điểm (int).
y Danh từ: Học sinh Æ cấu trúc HS
32
y Động từ:
{ Bắt đầu;
{ Nhập một hs Æ Hàm Nhap(HS&hs)
{ Xuất một hs Æ Hàm Xuat(HS hs);
{ Ngưng.
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
9
Giải bài toán hướng POP với C++
33
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
Giải bài toán hướng OOP
34
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
Đối chứng hai cách hiện thực
35
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
TÓM TẮT
y POP: Xem dữ liệu và tác vụ rời nhau.
y Các nhược điểm của POP
{ Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên

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


d
ng code
37
{
D

tái s

d

ng code
.
{ Có cơ chế bảo mật dữ liệu.
Đối tượng = Dữ liệu + Hành vi
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
TÓM TẮT
TRONG OOP
y Đối tượng phải thuộc một lớp (class).
y OOP CÓ 3 ĐẶC TÍNH CƠ BẢN:
{ TÍNH ĐÓNG GÓI (ENCAPSULATION)
Í


38
{ T
Í
NH TH

A

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>}
};

Chỉ có method public là toàn cục
public
private
protected
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
CÂU HỎI PHẦN TỰ HỌC
TỰ DIỄN TẢ THEO Ý BẢN THÂN
y Trình bày phương pháp lập trình POP.
y Trình bày phương pháp lập trình OOP.
40
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
11
BÀI TẬP TẠI LỚP
y HÃY PHÂN TÍCH CÁC BÀI TẬP SAU, XÁC ĐỊNH ĐỐI
TƯỢNG CẦN QUAN TÂM LÀ GÌ, THÀNH PHẦN DỮ LiỆU
VÀ THÀNH PHẦN HÀNH VI CỦA CÁC ĐỐI TƯỢNG ĐÓ,
TỪ ĐÓ XÂY DỰNG THÀNH LỚP (CHƯA YÊU CẦU VIẾT
CODE).
41
1) Nhập vào 3 số thực. Kiểm tra xem đó có phải là 3 cạnh của
tam giác hay không. Nếu phải, hãy cho biết tam giác đó là
tam giác gì (vuông, cân, đều, thường) và tính diện tích tam
giác đó.
2) Nhập vào 3 số ngày, tháng, năm. Kiểm tra xem ngày tháng
năm đó có hợp lệ không? Nếu có in ra ngày hôm sau.
3) Nhập vào 1 ma trận mxn. Tính tổng các phần tử nằm trên
đường chéo chính.

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

h

p t


n
phí
m.
6. Viết chương trình nhập hồ sơ học sinh của lớp học
gồm: tên, tuổi, điểm trung bình cả năm.
{ In ra tuổi lớn nhất, tuổi nhỏ nhất của lớp,
{ Học sinh có điểm trung bình lớn nhất, học sinh có điểm trung
bình nhỏ nhất.
{ In danh sách theo thự tự của tên.
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
7. Nhập vào tọa độ 2 điểm trong mặt phẳng. Tính và in ra tọa
độ trung điểm của chúng.
8. Nhập vào thời gian bắt đầu chạy và thời gian đến của một
vận động viên. Cho biết thời gian chạy của vận động viên
đó.
43
9. Tính diện tích của hình tròn, hình vuông, hình chữ nhật,
hình tam giác.
10. Nhập danh sách n học sinh gồm họ lót, tên, ngày sinh,
điểm văn, toán, lí, hoá.
a) In ra màn hình họ tên của học sinh có điểm trung bình
cao nhất.
b) In ra màn hình danh sách được xếp theo điểm trung

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ự

{ Cấu trúc struct
{ Con trỏ
y Làm bài tập về nhà
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu
4/14/2010
12
45
THANK YOU
OOP-CHƯƠNG 1- NHẬP MÔN OOP
GV: Võ Hồng Bảo Châu

×