Title: Chuong 02 NH?P M
1Chuong 02NH?P MÔN L?P TRÌNH HU?NG Ð?I
TU?NGIntroduction to OOP(3 gi?)
2M?c tiêu
- Nh?n bi?t s? khác bi?t gi?a l?p trình hu?ng th?
t?c và l?p trình hu?ng d?i tu?ng. - Luy?n t?p tu duy l?p trình hu?ng d?i tu?ng.
- Nh?n di?n m?t s? ngôn ng? OOP.
3M?c tiêu
- N?m v?ng m?t s? d?nh nghia trong OOP bao g?m
- Tr?u tu?ng hóa d? li?u.
- L?p, d?i tu?ng, th? hi?n.
- Thông di?p và g?i thông di?p.
- Tính bao dóng.
- Tính k? th?a.
- Tính da hình
4N?i dung chi ti?t
- Nhu?c di?m c?a l?p trình th? t?c.
- Tu duy hu?ng d?i tu?ng.
- Di?n d?t hu?ng d?i tu?ng.
- Uu di?m c?a l?p trình hu?ng d?i tu?ng
- Các khái ni?m can b?n c?a OOP
- Nh?ng g?i ý c?n thi?t khi l?p trình OO.
52.1- L?p trình th? t?c
- POP- Procedure Oriented Programming.
- Data structure Algorithm Program
- K? thu?t POP
Program
struct XX .....
Data structure
pick nouns
type Fun (XX x) .....
Problem
pick verbs
Operation (function)
void main() XX x Fun(x)
62.2- Nhu?c di?m c?a POP
- Di?n d?t thi?u t? nhiên
- Có h?c sinh x
- Vi?t lý l?ch cho h?c sinh x
- x oi, vi?t lý l?ch di em
Di?n d?t nào t? nhiên hon?
7Nhu?c di?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 d?i v?i nhi?u ngu?i. - Quan h? gi?a các d? li?u du?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ó du?c phát hi?n, có khó khan trong bi?u di?n
l?n tính d? hi?u. - Thí d? ? slide sau.
8Nhu?c di?m c?a POP...
9Nhu?c di?m c?a POP...
- B?o m?t kém do không th? gi?i h?n truy xu?t d?n
m?t d? li?u.
struct STUDENT char Name21 int Age
int Score
void main() STUDENT x Hoa, 19, 5
x.Age1000 x.Score-20
B?n nghi sao v? 2 tác v? này?
10Nhu?c di?m c?a POP...
- C?n m?t phuong pháp l?p trình khác giúp gi?i
quy?t nh?ng nhu?c di?m này. - OOP có nh?ng d?c di?m vu?t tr?i so v?i POP và là
hu?ng l?p trình ch? d?o hi?n nay.
112.2- Tu duy hu?ng d?i tu?ng
- Ð?i tu?ng-Object
- L?p-Class
- Tính th?a k?- Inheritance
- Tính da hình-Polymorphism
12What is an object?
- Objects are key to understanding object-oriented
technology. - Some real-world objects your dog, your desk,
your television set, your bicycle. - Real-world objects share two characteristics
They all have state and behavior
13Objects
States name color breed (nòi) hungry current gear (nhông s? hi?n hành) current pedal cadence (nh?p d?p- rpm) current speed (m/h)
Behaviors barking fetching wagging tail changing gear changing pedal cadence applying brakes
- Identifying the state and behavior for real-world
objects is a great way to begin thinking in terms
of object-oriented programming.
14How to describe a real-object?
- Ask yourself two questions
- "What possible states can this object be in?
- "What possible behavior can this object
perform?". - Real-world objects vary in complexity
15How to describe a real-object?
- Your desktop lamp may have only two possible
states (on and off) and two possible behaviors
(turn on, turn off). - Your desktop radio might have additional states
(on, off, current volume, current station) and
behavior (turn on, turn off, increase volume,
decrease volume, seek, scan, and tune). - These real-world observations all translate into
the world of object-oriented programming.
16Software Object- Ð?i tu?ng ph?n m?m
- An object is a software bundle of related state
and behavior. - Software objects are often used to model the
real-world objects that you find in everyday
life.
17Software objects
18What is a class?
- In the real world, many individual objects belong
of the same kind. - Each bicycle was built from the same set of
blueprints and therefore contains the same
components. - In object-oriented terms, we say that your
bicycle is an instance of the class of objects
known as bicycles. - A class is the blueprint from which individual
objects are created
192.3-Di?n d?t hu?ng d?i tu?ng
- Thí d? 1 Xét hai di?n d?t
- Nhân viên van phòng vi?t lý l?ch cho sinh viên
Hoàng ? Vi?tLýL?ch(Hoàng) - Hoàng oi, vi?t lý l?ch di em.?Hoàng.Vi?tLýL?ch()
- ? Theo b?n, tình hu?ng nào dúng v?i th?c t??
- Thí d? 2 Xét hai di?n d?t
- Tính t?ng m?ng a có n ph?n t? ? T?ng(a,n)
- M?ng a oi, tình t?ng di em ?
a.T?ng() - Xem a là m?t d?i tu?ng.
20Di?n d?t hu?ng d?i tu?ng
- Di?n d?t tác v? theo hu?ng th? t?c
TênTácV?(Ð?iTu?ngD?Li?u) ? T?ng(a,n) - Di?n d?t tác v? theo hu?ng d?i tu?ng
Ð?iTu?ngD?Li?u.TênTácV?() ? a.T?ng() - Xem d? li?u là d?i tu?ng làm chuong trình
- t? nhiên hon vì gi?ng t? nhiên hon.
212.4- Uu di?m c?a OOP
- D? mô t? các quan h? phân c?p trong th? gi?i t?
nhiên.
22Benefits software objects
- Modularity The source code for an object can be
written and maintained independently of the
source code for other objects.. - Information-hiding By interacting only with an
object's methods, the details of its internal
implementation remain hidden from the outside
world. - Code re-use you can use (perhaps written by
another software developer) that object in your
program.. - Pluggability and debugging ease If a bolt (con
?c) breaks, you replace it, not the entire
machine.
23Thí d? v? che d?u thông tin
- Bên ngoài không th? tùy ti?n truy c?p m?t d? li?u
thu?c tính ? Security
24Thí d? v? tái s? d?ng code
Tái s? d?ng code
Tái s? d?ng code
252.5- Some OOP languages
- C ( Borland C, Visual C)
- Java
- C ( C sharp)
- Visual Basic.
- .....
26Ngôn ng? OOP
- C, MS VC h? tr? c? POP l?n OOP ? Lai OOP. H?
tr? da th?a k?. Ð?i tu?ng là bi?n c?a chuong
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? don th?a
k?.
272.6- Các khái ni?m can b?n c?a OOP
- OOP Object Oriented Programming.
- Chuong trình là s? ho?t d?ng c?a các d?i tu?ng ?
Gi?ng t? nhiên. - Trong t? nhiên Ð?i tu?ng du?c bi?u di?n b?ng
tr?ng thái (states) hành vi (behaviors). - Ð?i tu?ng th?c thi m?t ho?t d?ng t?c là d?i tu?ng
th?c hi?n m?t hành vi mà d?i tu?ng này có kh?
nang. - M?t chuong trình là m?t tr?t t? các l?i yêu c?u
d?i tu?ng th?c hi?n hành vi c?a mình. - ? Chuong trình là m?t kích b?n (script).
282.7- L?p - Ki?u d? li?u tr?u tu?ng
- Abstract Data Type.
- K?t q?a c?a vi?c khái quát hóa các th?c th?.
292.8- L?p- Ki?u d? li?u tr?u tu?ng
- Ð?i tu?ng (object) Bao gói d? li?u hành vi.
- Ð?i tu?ng ph?i thu?c m?t l?p (class).
- Xây d?ng m?t d?i tu?ng là xây d?ng m?t l?p
- Class data (bi?n mô t?) methods (code).
- data members
function members
302.9-Ba d?c di?m c?a OOP
- 3 khái ni?m co b?n c?a OOP
- Bao gói (dóng gói) d? li?u hành vi che di
nh?ng thành ph?n có tính t? nh? mà bên ngoài
không th? truy c?p. - Tính th?a k? M?t l?p có th? th?a k? t? l?p khác.
- Tính da hình K? thu?t cho phép có khác bi?t gi?a
code c?a cùng m?t hành vi trong l?p cha và trong
l?p con.
312.10- Bao gói - Encapsulation
- Che d?u di d? li?u.
- Bên ngoài ch? tuong tác du?c v?i d?i tu?ng qua
m?t s? hành vi. - Hành vi giao ti?p (public, interface methods)
Hành vi giúp d?i tu?ng giao ti?p v?i môi tru?ng. - Hành vi riêng/n?i (private, internal) hành vi x?
lý d? li?u n?i t?i c?a d?i tu?ng mà bên ngoài
không th? truy c?p.
class NGU?I Tên NamSinh TênNgu?iYêu .... getTen()
getNamSinh() getTenNguoiYeu() TiêuHóa() Nu?t() Ði(
) Ð?ng() Ch?y() Nh?y() .......
getTen()
getNamSinh()
getTenNguoiYeu()
Ði()
Ð?ng()
interfaces
32Bao gói.....
V?i khai báo này, bên ngoài có th? truy c?p 2
thu?c tính m?u hay không?
33Bao gói
- class
- CASSETTE
-
- Ð?cBang()
- GhiBang()
- X?LýNhi?u()
Play()
Stop()
Môi tru?ng bên ngoài
Rewind()
Forward()
Record()
Interfaces (public methods)
Hành vi n?i (private methods)
34Bao gói interface
- Set of common methods of a class through them, an
object can interact with the outside world. - The buttons on the front of your television set,
for example, are the interface between you and
the electrical wiring on the other side of its
plastic casing. You press the "power" button to
turn the television on and off.
352.11-Tính th?a k?-Inheritance
- Các lo?i d?i tu?ng khác nhau thu?ng có chung m?t
s? d?c di?m.
36Tính th?a k?
- T? nh?ng l?p d?i tu?ng dã có, ta có th? d?c t?
l?p d?i tu?ng m?i, l?p m?i s? mang nh?ng d?c tính
c?a nh?ng l?p dã có (di truy?n) nh?ng d?c tính
m?i c?a riêng nó ? Con Cha m?t tí khác
bi?t. - ? Ti?t ki?m công s?c vi?t code và test.
- T?n t?i m?i quan h? cha (l?p n?n,base,parent)-
con ( l?p d?n xu?t,derived class). - C cho phép da th?a k? (1 l?p có th? là d?n xu?t
c?a nhi?u l?p khác). - C, Java là ngôn ng? OO don th?a k?.
- ? Th?a k? là d?c di?m tái s? d?ng thông tin c?a
OOP.
37Tính th?a k?
Ð? du?c cái tuong duong
class STUDENT
ID_Num Name YearOfBirth Address getID_Num() setID_
Num(newID) ......
th?a k?
quan h? là 1
RollNum Score getScore() setSore(newScore) ......
tính ch?t riêng
class STUDENT
RollNum Score getScore() setSore(newScore) ......
Ch? ph?i hi?n th?c b?ng này
Con Cha m?t tí
382.12- Ða hình-Polymorphism
- Kh? nang có nh?ng hi?n th?c khác nhau cho cùng
m?t hành vi. - K? thu?t cho phép thay d?i n?i dung c?a cùng m?t
hành vi trong 2 l?p cha con. - B?n ch?t S?a code c?a cùng m?t hành vi ? 2 l?p
cha con d? các code này khác nhau. - Ða hình t?o ra kh? nang cho phép g?i m?t hành vi
c?a m?t l?p mà không c?n quan tâm d?n hi?n th?c
c?a hành vi này.
39Thí d? v? tính da hình
class ÐànBà void DiChuy?n()
class Ngu?i void DiChuy?n()
class ÐànÔng void DiChuy?n()
Ða hình t?o du?c tính m?m d?o/linh d?ng c?a
chuong trình
402.13-Phân bi?t L?p, Th? hi?n, Bi?n d?i tu?ng
- class Hi?n th?c c?a m?t t?p các d?i tu?ng
(object) cùng lo?i ? Cùng d? mô t? (data), cùng
hành vi (methods). - Th? hi?n instance M?t thông tin v? m?t d?i
tu?ng có trong b? nh? c?a chuong trình. - Bi?n d?i tu?ng (g?i t?t là d?i tu?ng)
- Pointer c?a d?i tu?ngTham chi?u d?n m?t th?c th?
c?a l?p.
7
5
Hoa
1000
300
obj
1000
Student obj new Student(Hoa,5,7)
412.14- Thông di?p, thông báo - Message
- G?i thông báo Yêu c?u 1 d?i tu?ng th?c thi m?t
hành vi. - Thí d?
- x là m?t HOCSINH lt Name, Agegt
- x.VietLyLich()
- String S x.getName()
- int n x.getAge()
422.15- G?i ý khi thi?t k? m?t l?p
- Ta c?n bi?t nh?ng thông tin gì v? m?t d?i tu?ng
thu?c l?p này. ? D? li?u mô t?. - Ta (bên ngoài) th?c s? c?n x? lý gì (d?ng t?)
trên d?i tu?ng ? Hành vi giao ti?p. - Ð? có du?c hành vi giao ti?p, có c?n nh?ng x? lý
thêm mà bên ngoài không c?n bi?t d?n ? Hành vi
n?i. - Ðon gi?n nh?t V?i m?i thu?c tính d? li?u c?a
l?p, s? có 2 hành vi thao tác (g?i là accessors)
get, set (g?i là getter, setter)thao tác lên d?
li?u này.
43Bài t?p t?i ch?
class Student
char code 12 char name30
int score1 int score2 int score3
void input()
void output()
- Thi?t k? l?p mô t? và x? lý m?t h?c sinh, bi?t
r?ng h?c sinh ph?i h?c 3 môn h?c.
char getCode()
void setCode(char newCode)
char getName()
void setName(char newName)
int getScore1()
void setScore1(int s1)
int getScore2()
void setScore2(int s2)
int getScore3()
void setScore3(int s3)
float avg()
442.16- G?i ý v? phân tích th?a k?
- (1) Li?t kê d?c di?m c?a các d?i tu?ng c?n quan
tâm. - (2) Tìm t?p giao c?a các tính ch?t gi?a các l?p,
tách t?p giao này d? xây d?ng l?p cha. - (3) Ð?t 1 tên g?i có ý nghia cho l?p cha.
- (4) Ph?n còn l?i sau khi tách t?p giao là các l?p
con.
45Th?a k? - Bài m?u
- Phân tích phân c?p th?a k? cho các l?p
- Hàng di?n máy ltmã hàng, tên hàng, nhà s?n xu?t,
giá, th?i gian b?o hành, di?n áp, công su?tgt - Hàng sành s? lt mã hàng, tên hàng, nhà s?n xu?t,
giá, lo?i nguyên li?ugt - Hàng th?c ph?m ltmã hàng, tên hàng, nhà s?n xu?t,
giá, ngày s?n xu?t, ngày h?t h?n dùnggt
46Bài gi?i
- HangÐienMay lt maH,tenH,nsx,gia, tgbh,da,cs gt
- HangSanhSu lt maH,tenH,nsx,gia, lnl gt
- HangThucPham lt maH,tenH,nsx,gia, ngsx,nhhd gt
47Th?a k?- Bài t?p làm t?i ch?
- Phân tích phân c?p th?a k? cho các d?i tu?ng
trong m?t h?c vi?n - Nhân viên qu?n lý ltmã nv, tên nv, nam sinh, trình
d?, tru?ng dào t?o, chuyên môn, luong cb, ph? c?p
ch?c v?gt - Nhân viên nghiên c?u ltmã nv, tên nv, nam sinh,
trình d?, tru?ng dào t?o, chuyên môn, luong cb,
ph? c?p d?c h?igt - Nhân viên ph?c v? ltmã nv, tên nv, nam sinh, trình
d?, luong cbgt
482.17- G?i ý v? cách gi?i bài toán theo OOP
Program
class XX type1 prop1 type2 prop2
....... type Method1(...) .....
properties
pick nouns
Bao gói d? li?u và hành vi thành class
Problem
pick verbs
Operation (function, method, behavior)
void main() XX x // object variable
x.Method(...)
49Ð? bài
- Vi?t chuong 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?), di?m (int). - Danh t? H?c sinh ? c?u trúc HS
- Ð?ng t?
- B?t d?u
- Nh?p m?t hs ? Hàm Nhap(HShs)
- Xu?t m?t hs ? Hàm Xuat(HS hs)
- Ngung.
50Gi?i bài toán hu?ng POP v?i C
51Gi?i bài toán hu?ng OOP
Thành ph?n public là thành ph?n cho phép bên
ngoài truy c?p.
52Ð?i ch?ng hai cách hi?n th?c
53Tóm t?t
- POP Xem d? li?u và tác v? r?i nhau.
- Các nhu?c di?m c?a POP
- Mô t? các quan h? gi?a các d?i tu?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.
54Tóm t?t
- OOP Xem d? li?u và tác v? là m?t th? th?ng nh?t.
- Uu di?m c?a OOP
- Mô t? các quan h? gi?a các d?i tu?ng d? li?u
trong t? nhiên theo cách t? nhiên. - Tính mo-dun hóa
- Có co ch? b?o m?t d? li?u.
- D? tái s? d?ng code.
- D? thay d?i (pluggability) và d? ki?m l?i.
55Câu h?i Ph?n t? h?c
- Trình b?y phuong pháp l?p trình POP.
- Trình b?y phuong pháp l?p trình OOP.
56Tr?c nghi?m
- V?i khai báo struct, ta v?n có th? t?o co ch? b?o
m?t m?t thành ph?n d? li?u. (a) Ðúng (b) Sai. - V?i khai báo struct, mu?n thao tác d?n d? li?u
b?t bu?c ph?i thông qua m?t hàm. (a) Ðúng (b)
Sai. - Ð? tái s? d?ng code C, code du?c tái s? d?ng
ph?i du?c d? trong m?t file và không có hàm main.
(a) dúng (b) sai.
57Bài t?p
- Phân tích ph? h? th?a k? cho các khái ni?m
sau - Window lt x_position, y_position, width, height,
backColor, foreColorgt - ListBox lt x_position, y_position, width, height,
backColor, foreColor, lineCount, lineHeight,
contentList, selectedTextgt - Button lt x_position, y_position, width, height,
backColor, forColor, title, icongt - ComboBox lt x_position, y_position, width, height,
backColor, foreColor, lineCount, lineHeight,
contentList, dropdownCount, selectedTextgt
58Question 1
- OOP stands for
- a- Object Online Programming
- b- Object Of a Program
- c- Object Oriented Programming
c?
59Question 2
- What descriptions below are not OOP format ?
- a- Write the record for student Phúc
- b- Write the record of student Phúc
- c- Hello Phúc, write your record.
60Question 3
- What description below is POP format?
- a- DrawCircle(v)
- b- v.Draw()
a?
61Question 4
- Identify the basic characteristics of OOP
- a- Data hidding.
- b- Inheritance.
- c- Polymorphism.
- d- All of the above
d?
62Question 5
- class is
- a- Data which describes a concept.
- b- A code segment of a program.
- c- Template of a set of objects which have the
same properties and behaviors. - d- All of the above are wrong.
c?
63Question 6
- Select incorrect statements
- a- class properties methods
- b- class properties
- c- class functions that will operate on data
b?
c?
64Question 7
- Indentify the correct statement.
- a- Encapsulation the packaging of attributes
(properties) and functionality (methods or
behaviors) to create an object that is
essentially a black box. - b- inheritance The transfer of the
characteristics of a class in object-oriented
programming to other classes derived from it. - c- polymorphism The ability to redefine a
routine in a derived class. - d- All of the above.
d?
65Question 8
- Identify the advantages of OOP
- a- High level modulization.
- b- Able to describe the complex relations in real
objects. - c- Able to reuse code.
- d- Easy to maintain application .
- e- All of the above
e?
66Question 9
- C is a
- a- Multiple inheritance OOP language.
- b- Single inheritance OOP language.
a?
67Question 10
- Identify the correct keywords that will be
used when a class is implemented using C - a- Class, Private, Public
- b- Class, private, public
- c- class, private, public
- d- CLASS, PRIVATE, PUBLIC
c?
68Question 11
- What is the correct syntax when a method is
implemented outside the class declaration block. - a- DataType Method (params)
- ltCodegt
- b- DataType ClassNameMethod (params)
- ltCodegt
b?
69Question 12
- Study error code below
- class A
- int x
- public
- void T()
-
- What line will cause an error?
- a- 1
- b- 2
- c- 3
- d- 4
- e- 5
70Question 13
- Identify the wrong statement
- a- All objects of a program will be alive and
dead at the same time. - b- The life of an object begins at the time when
the code line, that defines it, is executed, and
ends when the code block, that contains it, is
executed completely. - c- Scope of an object is code block that begins
at the line that the object is defined and ends
at the curly closed brace of the block.
a?
71Question 14
- In order to make easiness in maintaining an
application. - a- We should store class implement and using
class code separately. - b- We should not store class implement and using
class code separately.
a?
72THANK YOU