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

Bài giảng lập trình hướng đối tượng nhập môn trần phước tuấn

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 (335.84 KB, 15 trang )

c tiêu

L P TRÌNH
NG
IT
NG
Nh p Môn
Tr n Ph c Tu n



• Nh n bi t s khác bi t gi a l p trình
ng th
c và l p trình h ng i
ng.
• Luy n t p t duy l p trình h ng i
ng.
• Nh n di n m t s ngôn ng OOP.

1

i dung chi ti t

c tiêu
• N m v ng m t s
bao g m:

nh ngh a trong OOP

– Tr u t ng hóa d li u.
– L p, i t ng, th hi n.


– Thông
p và g i thông
– Tính bao óng.
– Tính k th a.
– Tính a hình

p.

1.
2.
3.
4.
5.
6.

Nh c
m c a l p trình th
c.
T duy h ng i t ng.
Di n t h ng i t ng.
u
m c a l p trình h ng i t ng
Các khái ni m c n b n c a OOP
Nh ng g i ý c n thi t khi l p trình OOP.


1- L p trình th

c


1- Nh

• POP- Procedure Oriented Programming.
• Data structure + Algorithm = Program
• K thu t POP:
Program
pick
nouns

Data
structure

pick
verbs

Operation
(function)

type Fun (XX x)
{.....
}

Problem

1- Nh

c

struct XX
{.....

};

m c a POP...

– Quan h gi a các d li u
c bi u di n
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.

slide sau.

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”
Di n

void main()
{ XX x;
Fun(x);
}

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


• Thí d

c

t nào t

VietLyLich(x);
x.VietLyLich();

nhiên h n?

“x i, vi t lý l ch i em”

1- Nh

c

m c a POP...

nhiên

struct PERSON
{....
};

Person

is a


Male

Hi n th c

is a

Female

struct MALE
{ PERSON Data
<d li u thêm>
};
struct FEMALE
{ PERSON Data
<d li u thêm>
};

Di n t
ph i
ng minh
không
nhiên


1- Nh

c

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;
};

2-

duy h

void main()
{STUDENT x = { “Hoa”, 19, 5};
x.Age=1000;
n ngh sao v 2
x.Score=-20;
tác v này?
}

ng

it

i t ng-Object
• L p-Class
• Tính th a k - Inheritance
• Tính a hình-Polymorphism

ng


1- Nh

c

m c a POP...

• C n m t ph ng pháp l p trình khác giúp
gi i quy t nh ng nh c
m này.
• OOP có nh ng c
m v t tr i so v i
POP và là
ng l p trình ch
o hi n
nay.

What is an object?
• Objects are key to understanding objectoriented 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


Objects…
States

Behaviors


How to describe a real-object?

name
color
breed (nòi)
hungry

current gear (nhông s hi n hành)
current pedal cadence (nh p p- rpm)
current speed (m/h)

barking
fetching
wagging tail

changing gear
changing pedal cadence
applying brakes



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


• Identifying the state and behavior for real-world
objects is a great way to begin thinking in terms of
object-oriented programming.

How to describe a real-object? …

Software Object-

it

ng ph n m m

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

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



What is a class?

Software objects

• 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

p trình H

ng

it

ng

• Trong th gi i th c, chung quanh chúng ta là
nh ng
i t ng, ó là các th c th có m i
quan h
i nhau. Ví d : các phòng trong m t
công ty
• L p trình h ng
i t ng (Object Oriented
Programming - LTH T) là ph ng pháp l p

trình l y
i t ng làm n n t ng
xây d ng
thu t gi i, xây d ng ch ng trình

t s khái ni m
it

ng (object):

– Trong th gi i th c, khái ni m i t ng
c
hi u nh là m t th c th : ng i, v t ho c m t
ng d li u….
– M i i t ng s
n t i trong m t h th ng và có
ý ngh a nh t nh trong h th ng.


i t ng giúp bi u di n t t h n th gi i th c
trên máy tính


t s khái ni m

t s khái ni m

• L p:
– Các i t ng có các c tính
ng t nhau

c
gom chung l i thành l p i t ng. Ví d Ng i là
t l p
i t ng. M t l p
i t ng
c
c
tr ng b ng các thu c tính, và các ho t
ng (hành
vi, thao tác).
– Thu c tính (attribute) là m t thành ph n c a
i
ng, có giá tr nh t nh cho m i i t ng t i m i
th i
m trong h th ng. Vd: Tên, Tu i, Cân n ng là
các thu c tính c a Ng i
– Thao tác (operation) th hi n hành vi c a m t
i
ng tác ng qua l i v i các i t ng khác ho c
i chính nó.

it

• M i thao tác trên m t l p
i t ng c th
ng ng v i m t cài
t c th khác nhau.
t cài
t nh v y
c g i là m t ph ng

th c (method).
• Cùng m t thao tác(ph ng th c) có th
c
áp d ng cho nhi u l p
i t ng khác nhau,
t thao tác nh v y
c g i là có tính a
hình (polymorphism).
• M t i t ng c th thu c m t l p
t th hi n (instance) a l p ó.

– Joe Smith, 25 tu i, n ng 58kg, là m t th hi n c a l p
ng i.

p và

ng

Sinh viên

Tên lớp

• Ta dùng s
i t ng
mơ t các l p i
ng.
i t ng bao g m s
p và
th hi n


Thuộc tính

• S
p mơ t các l p
th ng, m t l p i t ng
hình ch nh t có 3 ph n:

Họ tên
Năm sinh
Mã số
Điểm TB

Thao tác

Đi học
Đi thi
Phân loại

– ph n

it

ng trong h
c di n t
ng m t

u ch tên l p,

– ph n th hai mơ t các thu c tính
– ph n th ba mơ t các thao tác c a các

ng trong l p ó.

c g i là

Sơ đồ lớp

i

it

th hi n
(Sinh viên)
Nguyễn Văn A
1984
0610234T
9.2

Sơ đồ thể hiện

ng = D li u + Ph

ng th c


3- Di n

th

ng


it

3- Di n

ng

Thí d 1: Xét hai di n t:
• Nhân viên v n phòng vi t lý l ch cho sinh viên
“Hoàng”
Vi tLýL ch(Hoàng);
• Hoàng i, vi t lý l ch i em. Hoàng.Vi tLýL ch();
Theo b n, tình hu ng nào úng v i th c t ?
Thí d 2: Xét hai di n t:
• Tính t ng m ng a có n ph n t
ng(a,n);
• M ng a i, tình t ng i em:
a.T ng();
Xem a là m t i t ng.

4-

u i m c a OOP

is a

Male

Hi n th c
class PERSON
{....

};

Person

is a

ng

it

ng

• Di n t tác v theo h ng th
c:
TênTácV
iT ngD Li u);
ng(a,n);
• Di n

t tác v theo h ng i t ng :
iT ngD Li u.TênTácV ();
a.T ng();

• Xem d li u là i t ng làm ch ng trình
nhiên h n vì gi ng t nhiên h n.

Benefits software objects

• D mô t các quan h phân c p trong th gi i t nhiên.
nhiên


th

class MALE: PERSON
{<d li u thêm>
};

Female
class FEMALE: PERSON
{ <d li u thêm>
};

nhiên

1. Modularity: The source code for an object can
be written and maintained independently of the
source code for other objects..
2. Information-hiding: By interacting only with
an object's methods, the details of its internal
implementation remain hidden from the outside
world.
3. Code re-use: you can use (perhaps written by
another software developer) that object in your
program..
4. Pluggability and debugging ease: If a bolt
(con c) breaks, you replace it, not the entire
machine.


Thí d


che d u thông tin

Thí d

tái s

ng code

• Bên ngoài không th tùy ti n truy c p m t d li u thu c
tính
Security

Tái s

Tái s

Some OOP languages






C++ ( Borland C++, Visual C++)
Java
C# ( C sharp)
Visual Basic.
.....


Ngôn ng

ng code

ng code

OOP

• C++, MS VC++: h tr
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
tr
OOP, hàm main ph i n m trong m t l p.
Ch
tr
n th a k .


5- Các khái ni m c n b n c a OOP
• 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.
• Trong t nhiên:
i t ng
c bi u di n b ng
tr ng thái (states) + hành vi (behaviors).

i t ng th c thi m t ho t ng t c là i
ng th c hi n m t hành vi mà i t ng này
có kh
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).

5- L p- Ki u d li u tr u t
it

ng

ng (object): Bao gói d li u + hành

vi.
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
p
Class = data (bi n mô t )+ methods (code).
data members

function members

5- L p - Ki u d

li u tr u t

ng


• Abstract Data Type.
• K t q a c a vi c khái quát hóa các th c th .
1
-3

5 7
8 ....

Khái
quát
hóa

nguyên
( int )

int, NGUOI, PERSON
là các ADT

Khái
quát
hóa

5- Ba

c

attributes

Danh t chung trong
ngôn ng

nhiên
Ng i
( PERSON )
date_of_birth,
Address, e-mail
.......>

m c a OOP

• 3 khái ni m c b n c a OOP
– Bao gói óng gói) d li u + hành vi + che i
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
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 vi trong l p cha
và trong l p con.


Bao gói.....

5- Bao gói - Encapsulation








Che d u i d li u.
Bên ngoài ch
ng
tác
cv i i
ng qua m t s
hành vi.
Hành vi giao ti p
(public, interface
methods): Hành vi giúp
i t ng giao ti p v i
môi tr ng.
Hành vi riêng/n i
(private, internal): hành
vi x lý d li u n i t i
a i t ng mà bên
ngoài không th truy
p.

class CIRLCE
class NG
I
Tên
mSinh
getTen()
TênNg iYêu
....
getNamSinh()

getTen()
getNamSinh()
getTenNguoiYeu() getTenNguoiYeu()
TiêuHóa()
i()
Nu t()
i()
ng()
ng()
Ch y()
Nh y()
interfaces
.......

Bao gói…

Play()
Stop()
Rewind()
Forward()

CASSETTE
cB ng();
GhiB ng();
LýNhi u();

Record()
Interfaces
(public methods)


public void setX(int xx)
public int getY()
public void setY(int yy)
public int getR()

int x, y, r;
int BorderColor;
int BkColor;

public void setR(int r)
public double getPerimeter()
public double getArea()

Bao gói… interface
class

Môi tr ng
bên ngoài

i khai báo này,
bên ngoài có th
truy c p 2 thu c tính
u hay không?

public int getX()

Hành vi n i
(private methods)

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


5-Tính th a k -Inheritance

Tính th a k …


• Các lo i i
ng khác
nhau th ng
có chung m t
c
m.

nh ng l p i t ng ã có, ta có th
ct
p i
ng m i, l p m i s mang nh ng c tính c a nh ng
p ã có (di truy n) + nh ng 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.
n t i m i quan h cha (l p n n,base,parent)- con ( l p

n xu t,derived class).




• C++ cho phép a 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
n th a k .
Th a k là

Tính th a k …
ng

quan h
“là 1”

Ch ph i
hi n th c
ng này

c cái
ng

class PERSON

class STUDENT

ID_Num
Name

YearOfBirth
Address
getID_Num()
setID_Num(newID)
......

ID_Num
Name
YearOfBirth
Address
getID_Num()
setID_Num(newID)
......
RollNum
Score
getScore()
setSore(newScore)
......

class STUDENT
RollNum
Score
getScore()
setSore(newScore)
......

th a

tính
ch t

riêng

Con = Cha + m t tí

5-

c

m tái s

ng thông tin c a OOP.

a hình-Polymorphism

• Kh
ng 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 i n i dung c a cùng
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
p cha con
các code này khác nhau.
a hình t o ra kh
ng cho phép g i m t hành
vi c a m t l p mà không c n quan tâm n hi n
th c c a hành vi này.


Thí d


5- Phân bi t L p, Th hi n, Bi n

tính a hình…
class CIRCLE

class ànBà

int x,y,r;
void Draw ()
{ circle (x,y,r);
}

void DiChuy n();

class RECTANGLE

class SHAPE
class Ng

int x1,y1, x2, y2;
void Draw ()
{ rectangle(x1,y1, x2, y2);
}

void Draw ()
{
}

i


void DiChuy n();

class TRIANGLE
int x1,y1, x2, y2 , x3, y3;
void Draw ()
{ line(x1,y1, x2, y2);
line(x2,y2, x3, y3);
line(x3,y3, x1, y1);
}

class ànÔng
void DiChuy n();

a hình t o

c tính m m d o/linh
a ch ng trình

ng

it

• class: Hi n th c c a m t t p
các i t ng (object) cùng lo i
Cùng d mô t (data), cùng
hành vi (methods).
• Th hi n – instance:
t thông
tin v
t

i t ng có trong
nh
a ch ng trình.
• Bi n i t ng (g i t t là
i
ng):
• Pointer c a
i t ng:Tham
chi u n m t th c th
a l p.

ng

7
5
1000

“Hoa”

300

1000

obj

Student obj= new Student(“Hoa”,5,7);

5- Thông i p, thông báo - Message

6- G i ý khi thi t k


• G i thông báo: Yêu c u 1
thi m t hành vi.
• Thí d :

• Ta c n bi t nh ng thông tin gì v
t i t ng
thu c l p này.
li u mô t .
• Ta (bên ngoài) th c s
n x lý gì ( ng t )
trên i t ng
Hành vi giao ti p.

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 n
Hành vi n i.
n gi n nh t: V i m i thu c tính d li u c a
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.

it

x là m t HOCSINH < Name, Age>
x.VietLyLich();
String S= x.getName();
int n= x.getAge();

ng th c


tl p


Bài t p t i ch

class Student

void input()

• Thi t k
p mô
và x
lý m t
c
sinh,
bi t
ng
c sinh
ph i h c
3 môn
c.

void output()
char* getCode()
void setCode(char* newCode)
char* getName()
void setName(char* newName)
int getScore1()
void setScore1(int s1)

int getScore2()

char code [12];
char name[30];
int score1;
int score2;
int score3;

void setScore2(int s2)
int getScore3()
void setScore3(int s3)
float avg()

Th a k - Bài m u
Phân tích phân c p th a k cho các l p:
• Hàng
n máy n xu t, giá, th i gian b o hành, i n áp,
công su t>
• Hàng sành s < mã hàng, tên hàng, nhà
n xu t, giá, lo i nguyên li u>
• Hàng th c ph m n xu t, giá, ngày s n xu t, ngày h t h n
dùng>

6- G i ý v phân tích th a k
(1) Li t kê c
m c a các
i t 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
xây d ng l p
cha.
(3)
t 1 tên g i có ý ngh a
cho l p cha.
(4) Ph n còn l i sau khi tách
p giao là các l p con.

Bài gi i
• Hang ienMay < maH,tenH,nsx,gia, tgbh, a,cs >
• HangSanhSu
< maH,tenH,nsx,gia, lnl >
• HangThucPham < maH,tenH,nsx,gia, ngsx,nhhd >
HangHoa
maH
tenH
nsx
gia

HangDienMay
tgbh
a
cx

HangSanhSu
lnl

HangThucPham

ngsx
nghhd


Th 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 i t ng trong m t h c vi n:
• Nhân viên qu n lý o, chuyên môn,
ng cb, ph
p ch c v >
• Nhân viên nghiên c u ào t o, chuyên môn,
ng cb, ph
p c h i>
• Nhân viên ph c v ng cb>

6- G i ý v cách gi i bài toán theo OOP
Program

pick
nouns

Problem
NhanVienQL
NhanVien
maNV, tenNV
ns, , luongCb

NhanVien


T

tr ng
chuyênmôn

NhanVienNC

pick
verbs

pc h

Gi i bài toán h

• 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
u trúc HS
ng t :
B t u;
Nh p m t hs
Xu t m t hs
Ng ng.

Bao gói d li u và
hành vi thành class

pccv


bài






Hàm Nhap(HS&hs)
Hàm Xuat(HS hs);

properties

Operation
(function,
method,
behavior)

class XX
{ type1 prop1;
type2 prop2;
.......
type Method1(...)
{
}
.....
};
void main()
{ XX x; // object variable
x.Method(...);

}

ng POP v i C++


Gi i bài toán h

i ch ng hai cách hi n th c

ng OOP

Thành ph n public là
thành ph n cho phép
bên ngoài truy c p.



×