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