LẬP TRÌNH JAVA
Ch ương 0
NHẬP MÔN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
(OOP – Object Oriented Programming)
Ths. Nguy ễn Th ị Thùy
Ch ư
ơ ng 01- Nh ập môn OOP
Slide 1/
Mụ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
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 2/
Nội dung chi tiết
T ừ l ập trình c ấu trúc đến l ập trình
hướng đối t ượng
Phương pháp l ập trình h ướng đối
t ượng
Ưu đi ểm c ủa l ập trình h ướng đối
t ượng
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 3/
0.1- Lập trình thủ tục
(POP- Procedure Oriented Programming)
Data structure + A lgorithm = Program
Program
K ỹ thu ật POP:
pick
nouns
Data
structure
pick
verbs
Operation
(function)
type Fun (XX x)
{.....
};
Problem
Ths. Nguy ễn Th ị Thùy
struct XX
{.....
};
void main()
{ X x;
Fun(x);
};
Ch ương 01- Nh ập môn OOP
Slide 4/
0.2- Nhược điểm của POP
Di ễn đạt “thi ếu t ự nhiên”
Có h ọc sinh x
“V i ết lý l ịch h ọc sinh x”
“x ơi, v i ết lý l ịch đi em”
VietLyLich(x);
x.VietLyLich();
Diễn đạt nào tự nhiên hơn?
“x ơi, viết lý lịch đi em”
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 5/
0.2- Nhược điểm của POP
K hó mô t ả nh ững quan h ệ ph ức t ạp c ủa th ế
gi ới t ự nhiên
Hiện thực
V í d ụ: Tự nhiên
struct PERSON
{....
};
Person
is a
Male
is a
Female
struct MALE
{ PERSON Data
<dữ liệu thêm>
};
struct FEMALE
{ PERSON Data
<dữ liệu thêm>
};
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Diễn đạt
phải
tường minh
không
tự nhiên
Slide 6/
0.2- Nhược điểm của POP
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;
};
Ths. Nguy ễn Th ị Thùy
void main()
{STUDENT x = { “Hoa”, 19, 5};
x.Age=1000;
Bạn nghĩ sao về
x.Score=-20;
2 tác vụ này?
};
Ch ương 01- Nh ập môn OOP
Slide 7/
0.3- Lậ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 v i 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 v i c ủa mình
Chương trình là m ột kích b ản (script)
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 8/
0.4- Ư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
class PERSON
{....
};
Person
is a
Male
Hiện thực
is a
class MALE: PERSON
{<dữ liệu thêm>
};
tự
nhiên
Female
class FEMALE: PERSON
{ <dữ liệu thêm>
};
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 9/
0.4- Ư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
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 10/
0.4- Ưu điểm của OOP
D ễ tái s ử d ụng code
Tái sử dụng code
Tái sử dụng code
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 11/
0.5- Sơ lược về OOP
Đối t ượng (object): Đóng gói d ữ li ệu +
hành v i
Đối t ượng ph ải thu ộc m ột l ớp (class)
X ây d ựng m ột đối t ượng là xây d ựng m ột
l ớp
Class = data (bi ến, thu ộc tính) + methods
(code)
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 12/
0.5- Sơ lược về OOP
3 khái ni ệm c ơ b ản c ủa OOP
Đóng gói d ữ li ệu + hành v i
Tính thừa k ế: M ột l ớp có thể th ừa k ế t ừ l ớp
khác.
Tính đa hình: K ỹ thuật cho phép có khác bi ệt
gi ữa code c ủa cùng m ột hành v i trong l ớp cha
v à trong l ớp con.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 13/
0.6- Ngôn ngữ OOP
C++ ( Borland C++, V isual C++)
Jav a
C# ( C sharp)
V isual Basic.
.....
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 14/
0.6- Ngôn ngữ OOP
• C++, MS V C++:
Hỗ trợ c ả POP l ẫn OOP
Hỗ trợ đa th ừa k ế
Đối t ượng là bi ến c ủa ch ương trình
Hàm main() là POP
• Jav a (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 ế
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 15/
0.7- Phương pháp giải bài toán theo OOP
Program
pick
nouns
Problem
Đóng gói dữ liệu và
hành vi thành class
pick
verbs
Ths. Nguy ễn Th ị Thùy
properties
Operation
(function,
method,
behavior)
class X
{ type1 prop1;
type2 prop2;
.......
type Method1(...)
{
}
.....
};
void main()
{ X x; // object variable
x.Method1(...);
};
Ch ương 01- Nh ập môn OOP
Slide 16/
Giải bài toán hướng POP với C, C++
V i ế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)
X uất m ột hs Hàm X uat(HS hs);
Ng ưng.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 17/
Giải bài toán hướng POP với C, C++
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 18/
Giải bài toán hướng OOP
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 19/
Đối chứng hai cách hiện thực
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 20/
Bài tập
Dùng OOP v ới C++ viết chương trình:
Nhập vào 3 học sinh, thông tin v ề m ột học
sinh: Mã, tên, điểm 3 môn học.
X uất thông tin chi tiết v ề 3 học sinh này gồm:
Mã, tên, điểm trung bình.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 21/
Tó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 cách “không tự nhiên”.
– Khó tái sử dụng code.
– Bảo mật kém.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 22/
Tó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.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 23/
Câu hỏi
• 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.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 24/
Trắc nghiệm
(1) V ới khai báo struct, ta v ẫn có thể tạo cơ chế
bảo m ật m ột thành phần dữ liệu.
(a) Đúng (b) Sai.
(2) V ới khai báo struct, muốn thao tác đến dữ
liệu bắt buộc phải thông qua m ột hàm.
(a) Đúng (b) Sai.
(3) Để tái sử dụng code C++, code được tái sử
dụng phải được đểtrong m ột file và không
có hàm main.
(a) đúng (b) sai.
Ths. Nguy ễn Th ị Thùy
Ch ương 01- Nh ập môn OOP
Slide 25/