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

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG - Chương 1 pptx

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 (16.37 MB, 12 trang )

1
Chương 1:
NHẬP MÔN LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
Giáo viên: Võ Hồng Bảo Châu
Khoa CNTT trường ĐH Lạc Hồng
LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
MỤC TIÊUMỤC TIÊU
• 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.
• 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.
• Nhận diện một số ngôn ngữ OOP.
• Nhận biết các khái niệm cơ bản của OOP.
2
OOP-CHƯƠNG 1- NHẬP MÔN OOP
NỘI DUNG CHI TIẾTNỘI DUNG CHI TIẾT
• LẬP TRÌNH THỦ TỤC – POP
• LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – OOP
• SƠ LƯỢC VỀ OOP
– ĐỐI TƯỢNG
– HÀNH VI
– THÔNG ĐIỆP
– DỮ LIỆU
– ĐẶC TÍNH
• GIẢI BÀI TOÁN VỚI OOP
• TÓM TẮT
3
OOP-CHƯƠNG 1- NHẬP MÔN OOP
LẬP TRÌNH THỦ TỤCLẬP TRÌNH THỦ TỤC


• 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
• Kỹ thuật POP:
Problem
Data
structure
Operation
(function)
Program
struct XX
{
};
type Fun (XX x)
{
};
void main()
{ X x;
Fun(x);
};
pick
nouns
pick
verbs
Data structure + Algorithm = Program
4
OOP-CHƯƠNG 1- NHẬP MÔN OOP
2
NHƯỢC ĐIỂM CỦA POPNHƯỢC ĐIỂM CỦA POP

• 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”
“x ơi, viết lý lịch đi em”
VietLyLich(x);
x.VietLyLich();
Diễn đạt nào tự nhiên hơn?
5
OOP-CHƯƠNG 1- NHẬP MÔN OOP
NHƯỢC ĐIỂM CỦA POPNHƯỢC ĐIỂM CỦA POP
• 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, có khó
khăn trong biểu diễn lẫn tính dễ hiểu.
• 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?
6
OOP-CHƯƠNG 1- NHẬP MÔN OOP
OOP
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
trội so với POP và là hướng lập
trình chủ đạo hiện nay.
7
OOP-CHƯƠNG 1- NHẬP MÔN OOP
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGLẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
• OOP – Object Oriented Programming.
• Chương trình là sự hoạt động của các đối tượng  Giống
tự nhiên.
• Đố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.
• 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).
8
OOP-CHƯƠNG 1- NHẬP MÔN OOP
3
• Từ những đối tượng, sự vật, sự kiện, tạo nên chương
trình
• Thiết kế bottom-up
Đối tượng = Dữ liệu + Hành vi
= +
9

OOP-CHƯƠNG 1- NHẬP MÔN OOP
ƯU ĐIỂM CỦA OOPƯU ĐIỂM CỦA OOP
• Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên.
Tự nhiên
Person
Male Female
is a is a
class PERSON
{
} ;
class MALE: PERSON
{<dữ liệu thêm>
} ;
class FEMALE: PERSON
{ <dữ liệu thêm>
} ;
tự
nhiên
Hiện thực
10
OOP-CHƯƠNG 1- NHẬP MÔN OOP
ƯU ĐIỂM CỦA OOPƯU ĐIỂM CỦA OOP
• 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
ƯU ĐIỂM CỦA OOPƯU ĐIỂM CỦA OOP
Tái sử dụng code
Tái sử dụng code
12

OOP-CHƯƠNG 1- NHẬP MÔN OOP
4
SỰ KHÁC BIỆTSỰ KHÁC BIỆT
 Theo thủ tục
Rút tiền (withdraw), gửi tiền
(deposit), chuyển tiền (transfer)
 Hướng đối tượng
Khách hàng (customer), tiền (money),
tài khoản (account)
13
OOP-CHƯƠNG 1- NHẬP MÔN OOP
SƠ LƯỢC VỀ OOPSƠ LƯỢC VỀ OOP
Đối tượng = Dữ liệu + Hành vi
= +
14
OOP-CHƯƠNG 1- NHẬP MÔN OOP
ĐỐI TƯỢNGĐỐI TƯỢNG
 Một đối tượng như là một hộp đen, mà
chi tiết bên trong được dấu kín
 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)
 Thông điệp được nhận bởi các hành vi
của đối tượng
15
OOP-CHƯƠNG 1- NHẬP MÔN OOP
Lan
Cúc TrúcMai
girl
class

object
16
OOP-CHƯƠNG 1- NHẬP MÔN OOP
5
Mai
DỮ LIỆU (data):
-Xinh đẹp
-Dịu dàng

HÀNH VI (behavior ):
-mua sắm
-làm việc nhà
-…
17
OOP-CHƯƠNG 1- NHẬP MÔN OOP
HÀNH VI (BEHAVIOR)HÀNH VI (BEHAVIOR)
• Thao tác (operation)
• Phương thức (method)
• Hàm (function)
• Thủ tục (procedure)
18
OOP-CHƯƠNG 1- NHẬP MÔN OOP
DỮ LIỆU (DATA)DỮ LIỆU (DATA)
• Thông tin (information)
• Tính chất (property)
• Thuộc tính (attribute)
• Trường (field)
19
OOP-CHƯƠNG 1- NHẬP MÔN OOP
NHỮNG GÌ LÀ ĐỐI TƯỢNGNHỮNG GÌ LÀ ĐỐI TƯỢNG

 Vật có thể sờ mó được
(Tangible things)
 Vai trò (Roles)
 Sự việc xảy ra, tình tiết
(Incidents)
 Sự tương tác (Interactions)
 Sự mô tả (Specifications)
 Như là xe hơi, máy in,
 Công nhân, người chủ,
 Chuyến bay, tràn số,
 Ký kết thỏa ước, mua hàng,

 Màu, hình dạng
20
OOP-CHƯƠNG 1- NHẬP MÔN OOP
6
THÔNG ĐIỆPTHÔNG ĐIỆP
• Gửi thông điệp: Yêu cầu 1 đối tượng thực thi một hành vi.
• Thí dụ:
x là một HOCSINH < Name, Age>
x.VietLyLich();
String S= x.getName();
int n= x.getAge();
21
OOP-CHƯƠNG 1- NHẬP MÔN OOP
MỘT SỐ ĐẶC TÍNHMỘT SỐ ĐẶC TÍNH
• TÍNH ĐÓNG GÓI (ENCAPSULATION)
• TÍNH THỪA KẾ (INHERITANCE)
• TÍNH ĐA HÌNH (POLYMORPHISM)
22

OOP-CHƯƠNG 1- NHẬP MÔN OOP
TÍNH ĐÓNG GÓI (ENCAPSULATION)TÍNH ĐÓNG GÓI (ENCAPSULATION)
• 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
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
23
OOP-CHƯƠNG 1- NHẬP MÔN OOP
TÍNH THỪA KẾ (INHERITANCE)TÍNH THỪA KẾ (INHERITANCE)
 Tạo ra một kiểu dữ liệu mới từ
kiểu đã có
 Nhằm sử dụng lại, và bổ sung
những gì cần thiết
 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
24
OOP-CHƯƠNG 1- NHẬP MÔN OOP
7
TÍNH THỪA KẾ (INHERITANCE)TÍNH THỪA KẾ (INHERITANCE)
 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 chính là quan hệ “là một” (“is a”)
A car is a vehicle
A teacher is a person
A dog is an animal
25
OOP-CHƯƠNG 1- NHẬP MÔN OOP
TÍNH ĐA HÌNH (POLYMORPHISM)TÍNH ĐA HÌNH (POLYMORPHISM)
• Nhiều đối tượng cùng chia sẻ đặc tính chung, nhưng có
những tác động khác nhau.
• Có cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng khác
nhau.
• Thực chất là tính đa dạng (many form)
• Để hiện thực được tính đa hình, ngôn ngữ đối tượng có
đặc tính như overload, override.
26
OOP-CHƯƠNG 1- NHẬP MÔN OOP
Overloaded và Overridden methods ?Overloaded và Overridden methods ?
• 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.
• Overridden methods:
– 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.
27
OOP-CHƯƠNG 1- NHẬP MÔN OOP
NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGNGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
• C++ ( Borland C++, Visual C++)
• Java
• C# ( C sharp)
• Visual Basic.


28
OOP-CHƯƠNG 1- NHẬP MÔN OOP
8
• 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.
• Java (Sun), C# (Microsoft): chỉ hỗ trợ OOP, hàm main phải
nằm trong một lớp. Chỉ hỗ trợ đơn thừa kế.
29
OOP-CHƯƠNG 1- NHẬP MÔN OOP
NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGNGÔ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
BCPL (1967), MIT
Basic Combined Programming Language
B (1969), Bell Labs
C (1970), Bell Labs
C++ (1983), Bell Labs
Java (1995), Sun
Objective C
30
OOP-CHƯƠNG 1- NHẬP MÔN OOP
Phương pháp giải bài toán theo OOPPhương pháp giải bài toán theo OOP
Problem
properties

Operation
(function,
method,
behavior)
Program
class XX
{ type1 prop1;
type2 prop2;

type Method1( )
{
}

};
void main()
{ XX x; // object variable
x.Method( );
};
pick
nouns
pick
verbs
Bao gói dữ liệu và
hành vi thành class
31
OOP-CHƯƠNG 1- NHẬP MÔN OOP
SO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNHSO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNH
• 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).

• Danh từ: Học sinh  cấu trúc HS
• Độ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.
32
OOP-CHƯƠNG 1- NHẬP MÔN OOP
9
Giải bài toán hướng POP với C++Giải bài toán hướng POP với C++
33
OOP-CHƯƠNG 1- NHẬP MÔN OOP
Giải bài toán hướng OOPGiải bài toán hướng OOP
34
OOP-CHƯƠNG 1- NHẬP MÔN OOP
Đối chứng hai cách hiện thựcĐối chứng hai cách hiện thực
35
OOP-CHƯƠNG 1- NHẬP MÔN OOP
TÓM TẮTTÓM TẮT
• POP: Xem dữ liệu và tác vụ rời nhau.
• 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.
– Bảo mật kém.
Chương trình=cấu trúc dữ liệu + thuật toán
36
OOP-CHƯƠNG 1- NHẬP MÔN OOP
10
TÓM TẮTTÓM TẮT

• OOP: Xem dữ liệu và tác vụ là một thể thống nhất.
• Ư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.
– Có cơ chế bảo mật dữ liệu.
Đối tượng = Dữ liệu + Hành vi
37
OOP-CHƯƠNG 1- NHẬP MÔN OOP
TÓM TẮTTÓM TẮT
TRONG OOP
• Đối tượng phải thuộc một lớp (class).
• OOP CÓ 3 ĐẶC TÍNH CƠ BẢN:
– TÍNH ĐÓNG GÓI (ENCAPSULATION)
– TÍNH THỪA KẾ (INHERITANCE)
– TÍNH ĐA HÌNH (POLYMORPHISM)
38
OOP-CHƯƠNG 1- NHẬP MÔN OOP
• 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.
• 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
{
<data>
};
Type1 Func1 (StructName stru)
{ <code>}
Type2 Func2 (StructName stru)

{<code>}
các hàm đều toàn cục
class ClassName
{
<data>
Modifier : Type1 Func1 ()
{ <code>}
Modifier : Type2 Func2 ()
{ <code>}
};
Chỉ có method public là toàn cục
public
private
protected
39
OOP-CHƯƠNG 1- NHẬP MÔN OOP
CÂU HỎI PHẦN TỰ HỌCCÂU HỎI PHẦN TỰ HỌC
TỰ DIỄN TẢ THEO Ý BẢN THÂN
• Trình bày phương pháp lập trình POP.
• Trình bày phương pháp lập trình OOP.
• Nhận xét ưu và khuyết điểm của cả 2 phương pháp
40
OOP-CHƯƠNG 1- NHẬP MÔN OOP
11
BÀI TẬP TẠI LỚPBÀI TẬP TẠI LỚP
• 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).
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.
41
OOP-CHƯƠNG 1- NHẬP MÔN OOP
BÀI TẬP TẠI LỚPBÀ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 với a,b
là 2 số thực nhập từ bà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.
42
OOP-CHƯƠNG 1- NHẬP MÔN OOP
BÀI TẬP TẠI LỚPBÀ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
đó.
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.
43
OOP-CHƯƠNG 1- NHẬP MÔN OOP
BÀI CHUẨN BỊ TRƯỚCBÀI CHUẨN BỊ TRƯỚC
• Ô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
– 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ỏ
• Làm bài tập về nhà
44
OOP-CHƯƠNG 1- NHẬP MÔN OOP
12
THANK YOU
45
OOP-CHƯƠNG 1- NHẬP MÔN OOP

×