Mục tiêu<br />
Chương 2: NHẬP MÔN<br />
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG<br />
(Introduction to OOP)<br />
<br />
Slide 1<br />
<br />
Nhận biết sự khác biệt giữa lập trình<br />
hướng thủ t<br />
hướ<br />
tục và lậ t ì h hướng đối<br />
à lập trình hướ<br />
tượng.<br />
Phân tích, thiết kế và hiện thực được<br />
một chương trình theo phương pháp<br />
hướng đối tượng.<br />
Nhận diện một số ngôn ngữ OOP.<br />
Nhận biết các khái niệm cơ bản của<br />
OOP.<br />
Slide 2<br />
<br />
1.11.1- Lập trình thủ tục<br />
<br />
Nội dung chi tiết<br />
<br />
POPPOP- Procedure Oriented Programming.<br />
Data structure + Algorithm = Program<br />
Kỹ thuật POP:<br />
Program<br />
<br />
Từ lập trình cấu trúc đến lập trình<br />
hướng đối tượng.<br />
hướ<br />
tượ<br />
Phương pháp lập trình hướng đối<br />
tượng.<br />
Ưu điểm của lập trình hướng đối<br />
tượng.<br />
tượng<br />
<br />
pick<br />
nouns<br />
<br />
Data<br />
structure<br />
<br />
pick<br />
verbs<br />
<br />
Operation<br />
(function)<br />
<br />
type Fun (XX x)<br />
{.....<br />
};<br />
<br />
Problem<br />
<br />
Slide 3<br />
<br />
struct XX<br />
{.....<br />
};<br />
<br />
void main()<br />
{ X x;<br />
Fun(x);<br />
};<br />
Slide 4<br />
<br />
1<br />
<br />
1.21.2- Nhược điểm của POP<br />
Diễn đạt “thiếu tự nhiên”<br />
“thiếu<br />
Có học sinh x<br />
“Viết lý lịch cho học sinh x”<br />
“x ơi, viết lý lịch đi nhé”<br />
<br />
Nhược điểm của POP...<br />
<br />
VietLyLich(x);<br />
x.VietLyLich();<br />
<br />
Khó mô tả những quan hệ phức tạp của<br />
thế giới tự nhiên<br />
iới<br />
hiê<br />
Biểu diễn dạng cấu trúc “phức tạp”,<br />
không phải là dễ dàng đối với nhiều<br />
người<br />
• Quan hệ giữa các dữ liệu được biểu diễn<br />
bằng cấu trúc lồng nhau hoặc một pointer.<br />
pointer.<br />
Tính phân lớp khó được phát hiện, có khó<br />
khăn trong biểu diễn lẫn tính dễ hiểu.<br />
hiểu.<br />
<br />
Diễn đạt à tự hiê h ?<br />
Diễ đ t nào t nhiên hơn?<br />
<br />
“x ơi, viết lý lịch đi nhé”<br />
Slide 5<br />
<br />
Nhược điểm của POP...<br />
Tự nhiên<br />
Person<br />
<br />
is a<br />
<br />
Male<br />
<br />
is a<br />
<br />
Female<br />
<br />
Nhược điểm của POP...<br />
<br />
Hiện thực<br />
<br />
Bảo mật kém do không thể giới hạn<br />
t<br />
truy xuất đế một dữ liệ<br />
ất đến ột<br />
liệu.<br />
<br />
struct PERSON<br />
{....<br />
};<br />
struct MALE<br />
{ PERSON Data<br />
<br />
};<br />
<br />
Slide 6<br />
<br />
Diễn đạt<br />
phải<br />
tường minh<br />
không<br />
tự nhiên<br />
<br />
struct STUDENT<br />
{ char Name[21];<br />
int Age;<br />
int Score;<br />
};<br />
}<br />
<br />
void main()<br />
{STUDENT x = { “Hoa”, 19, 5};<br />
x.Age=1000; Bạn nghĩ sao về 2<br />
tác vụ này?<br />
x.Score=-20;<br />
};<br />
<br />
struct FEMALE<br />
{ PERSON Data<br />
<br />
};<br />
Slide 7<br />
<br />
Slide 8<br />
<br />
2<br />
<br />
Nhược điểm của POP...<br />
<br />
1.31.3- Lập trình hướng đối tượng<br />
<br />
Cần một phương pháp lập trình khác<br />
giúp giải quyết những nhược điểm này.<br />
iú<br />
iải<br />
ết hữ<br />
hượ điể<br />
à<br />
OOP có những đặc điểm vượt trội so với<br />
POP và là hướng lập trình chủ đạo hiện<br />
nay.<br />
<br />
OOP – Object Oriented Programming.<br />
Chương t ì h là sự h t độ<br />
Chươ<br />
trình<br />
ự hoạt động của các đối<br />
ủ á<br />
tượng<br />
Giống tự nhiên.<br />
Đối tượng thực thi một hoạt động tức là đối<br />
tượng thực hiện một hành vi mà đối tượng<br />
này có khả năng.<br />
năng.<br />
Một chương t ì h là một t ật t các lời yêu<br />
hươ<br />
trình<br />
ột trật tự á<br />
ê<br />
cầu đối tượng thực hiện hành vi của mình.<br />
Chương trình là một kịch bản (script).<br />
<br />
Slide 9<br />
<br />
Slide 10<br />
<br />
1.41.4- Ưu điểm của OOP<br />
<br />
Ưu điểm của OOP...<br />
OOP...<br />
<br />
Dễ mô tả các quan hệ phân cấp trong thế giới tự<br />
nhiên.<br />
<br />
Có tính bảo mật cao: Bên ngoài không thể tùy<br />
tiện truy cập một dữ liệu thuộc tính<br />
tính.<br />
<br />
Tự nhiên<br />
Person<br />
<br />
is a<br />
<br />
Male<br />
<br />
is a<br />
<br />
Female<br />
<br />
Hiện thực<br />
<br />
class PERSON<br />
{....<br />
};<br />
<br />
tự<br />
nhiên<br />
<br />
class MALE: PERSON<br />
{<br />
};<br />
class FEMALE: PERSON<br />
{ <br />
};<br />
Slide 11<br />
<br />
Slide 12<br />
<br />
3<br />
<br />
Ưu điểm của OOP: Dễ tái sử dụng code<br />
<br />
1.51.5- Sơ lược về OOP<br />
Đối tượng (object): Bao gói dữ liệu +<br />
hành vi.<br />
Đối tượng phải thuộc một lớp (class).<br />
<br />
Tái sử dụng code<br />
<br />
Muốn làm việc trên đối tượng, ta phải<br />
xây dựng lớp:<br />
• class = data (biến, thuộc tính)+ methods<br />
(phương thức, hành vi).<br />
<br />
Tái sử dụng code<br />
<br />
Vd: lớp học sinh<br />
Slide 13<br />
<br />
Sơ lược về OOP<br />
<br />
Slide 14<br />
<br />
1.61.6- Ngôn ngữ OOP<br />
<br />
3 khái niệm cơ bản của OOP<br />
• Bao gói (đóng gói) dữ liệu + hành vi.<br />
• Tính thừa kế: Một lớp có thể thừa kế từ<br />
lớp khác.<br />
• Tính đa hình: Kỹ thuật cho phép có khác<br />
biệt giữa code của cùng một hành vi trong<br />
lớp cha và trong lớp con.<br />
<br />
Slide 15<br />
<br />
C++ ( Borland C++, Visual C++)<br />
Java<br />
C# ( C sharp)<br />
Visual Basic.<br />
.....<br />
<br />
Slide 16<br />
<br />
4<br />
<br />
Ngôn ngữ OOP<br />
<br />
1.71.7- Phương pháp giải bài toán theo OOP<br />
Program<br />
<br />
C++, MS VC++: hỗ trợ cả POP lẫn<br />
VC++:<br />
OOP<br />
Lai OOP. Hỗ trợ đa thừa kế.<br />
OOP.<br />
kế.<br />
Đối tượng là biến của chương trình.<br />
trình.<br />
Hàm main() là POP.<br />
POP.<br />
Java (Sun), C# (Microsoft): chỉ hỗ<br />
(Microsoft):<br />
trợ OOP, hàm main phải nằm trong<br />
một lớp. Chỉ hỗ trợ đơn thừa kế.<br />
lớp.<br />
kế.<br />
<br />
pick<br />
nouns<br />
Problem<br />
<br />
properties<br />
<br />
Bao gói dữ liệu và<br />
hành vi thành class<br />
<br />
pick<br />
verbs<br />
<br />
Operation<br />
(function,<br />
method,<br />
behavior)<br />
<br />
class XX<br />
{ type1 prop1;<br />
type2 prop2;<br />
.......<br />
type Method1(...)<br />
{<br />
}<br />
.....<br />
};<br />
void main()<br />
{ X x; // object variable<br />
x.Method(...);<br />
};<br />
<br />
Slide 17<br />
<br />
Giải bài toán hướng POP với C<br />
<br />
Slide 18<br />
<br />
Giải bài toán hướng POP với C++<br />
<br />
Viết chương trình nhập, xuất 1 học<br />
sinh. Thô<br />
i h Thông ti cần quan tâ về 1 h<br />
tin ầ<br />
tâm ề<br />
học<br />
sinh: Mã học sinh (8 ký tự), tên học<br />
sinh (30 ký tự), điểm (int).<br />
Danh từ: Học sinh<br />
cấu trúc HS<br />
Động từ:<br />
• Nhập một hs<br />
• Xuất một hs<br />
<br />
Hàm Nhap(HS&hs)<br />
Hàm Xuat(HS hs);<br />
Slide 19<br />
<br />
Slide 20<br />
<br />
5<br />
<br />