1. Trang chủ
  2. » Giáo án - Bài giảng

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

15 116 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 335,84 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

L P TRÌNH

Tr n Ph c Tu n

tuantp@hcmup.edu.vn http://giaotrinh.tranphuoctuan.com

c tiêu

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

c tiêu

• N m v ng m t s nh ngh a trong OOP

bao g m:

– Tr u t ng hóa d li u.

– Tính bao óng.

– Tính k th a.

– Tính a hình

i dung chi ti t

5 Các khái ni m c n b n c a OOP

6 Nh ng g i ý c n thi t khi l p trình OOP.

Trang 2

1- L p trình th c

• POP- Procedure Oriented Programming.

• Data structure + Algorithm = Program

• K thu t POP:

Problem

Data structure

Operation (function)

Program struct XX {

};

type Fun (XX x) {

} void main() { XX x;

Fun(x);

}

pick nouns

pick verbs

• 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 t nào t nhiên h n?

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

VietLyLich(x);

x.VietLyLich();

• 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

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

nhiên

Person

is a is a

struct PERSON {

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

Hi n th c

Trang 3

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;

};

void main() {STUDENT x = { “Hoa”, 19, 5};

x.Age=1000;

x.Score=-20;

}

n ngh sao v 2 tác v này?

• C n m t ph ng pháp l p trình khác giúp

nay.

i t ng-Object

• L p-Class

• Tính th a k - Inheritance

• Tính a hình-Polymorphism

What 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

Trang 4

• Identifying the state and behavior for real-world

objects is a great way to begin thinking in terms of

object-oriented programming.

changing gear changing pedal cadence applying brakes

barking

fetching

wagging tail

Behaviors

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

name

color

breed (nòi)

hungry

States

How 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

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

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

Trang 5

Software objects What 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

• 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

i t ng (object):

hi u nh là m t th c th : ng i, v t ho c m t

ng d li u….

ý ngh a nh t nh trong h th ng.

trên máy tính

Trang 6

t s khái ni m

• L p:

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

t s khái ni m

• 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 c g i là

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

• 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

• S p mơ t các l p i t ng trong h

th ng, m t l p i t ng c di n t ng m t

hình ch nh t cĩ 3 ph n:

– ph n 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 i

ng trong l p ĩ.

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

Đi học

Đi thi Phân loại

(Sinh viên) Nguyễn Văn A 1984

0610234T 9.2

Tên lớp

Thuộc tính

Thao tác

Sơ đồ lớp Sơ đồ thể hiện

i t ng = D li u + Ph ng th c

Trang 7

3- Di n t h ng i t 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.

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

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.

nhiên

Person

is a is a

class PERSON {

} ;

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

} ;

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

} ;

nhiên

Hi n th c

Benefits software objects

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

(con c) breaks, you replace it, not the entire machine.

Trang 8

Thí d 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

Tái s ng code

Tái s ng code

Some OOP languages

• C++ ( Borland C++, Visual C++)

• Java

• C# ( C sharp)

• Visual Basic.

Ngôn ng OOP

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.

Trang 9

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.

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

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

• Abstract Data Type.

• K t q a c a vi c khái quát hóa các th c th

Khái quát hóa

Khái quát hóa

1 5 7 -3 8

nguyên ( int )

Ng i ( PERSON )

<Code, Name, date_of_birth, Address, e-mail >

Danh t chung trong ngôn ng nhiên

attributes

int, NGUOI, PERSON

là các ADT

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

vi.

i t ng ph i thu c m t l p (class).

p

Class = data (bi n mô t )+ methods (code).

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

Trang 10

5- Bao gói - Encapsulation

• Che d u i d li u.

tác c v 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 NG I

Tên mSinh TênNg iYêu

getTen() getNamSinh() getTenNguoiYeu() TiêuHóa()

Nu t() i() ng()

Ch y()

Nh y()

getTen() getNamSinh() getTenNguoiYeu()

i() ng()

interfaces

Bao gói

class CIRLCE

int x , y , r;

int BorderColor;

int BkColor;

public int getX() public void setX(int xx)

public int getY() public void setY(int yy)

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

i khai báo này, bên ngoài có th truy c p 2 thu c tính

u hay không?

Bao gói…

class

CASSETTE

cB ng();

GhiB ng();

LýNhi u();

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

Môi tr ng

bên ngoài

Interfaces (public methods)

Hành vi n i (private methods)

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

Trang 11

5-Tính th a k -Inheritance

• Các lo i i

ng khác

nhau th ng

có chung m t

c m.

Tính th a k …

• nh ng l p i t ng ã có, ta có th c t 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à c m tái s ng thông tin c a OOP.

Tính th a k …

ID_Num

Name

YearOfBirth

Address

getID_Num()

setID_Num(newID)

class PERSON

RollNum

Score

getScore()

setSore(newScore)

class STUDENT

quan h

“là 1”

Ch ph i

hi n th c

ng này

c cái

ng ng

ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID)

class STUDENT

RollNum Score getScore() setSore(newScore)

th a

tính

ch t riêng

Con = Cha + m t tí

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

Trang 12

Thí d tính a hình…

class Ng i

void DiChuy n();

class ànÔng

void DiChuy n();

class ànBà

void DiChuy n();

class SHAPE void Draw () {

}

class CIRCLE int x,y,r;

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

} class RECTANGLE int x1,y1, x2, y2;

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

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

}

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

a ch ng trình

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

ng):

chi u n m t th c th a l p. 300

1000 “Hoa”

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

5 7

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

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();

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

Trang 13

Bài t p t i ch

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

class Student

char code [12];

char name[30];

int score1;

int score2;

int score3;

void input() void output()

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()

6- G i ý v phân tích th a k

(2) Tìm t p giao c a các tính

ch t gi a các l p, tách t p

cha.

cho l p cha.

(4) Ph n còn l i sau khi tách

p giao là các l p con

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 <mã hàng, tên hàng, nhà

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 <mã hàng, tên hàng, nhà

n xu t, giá, ngày s n xu t, ngày h t h n

dùng>

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

Trang 14

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ý < mã nv, tên nv, m sinh, trình , tr ng ào

o, chuyên môn , ng cb , ph p ch c v >

• Nhân viên nghiên c u < mã nv, tên nv, m sinh, trình , tr ng

ào t o, chuyên môn , ng cb , ph p c h i>

• Nhân viên ph c v < mã nv, tên nv, m sinh, trình , ng cb >

NhanVien

maNV, tenNV

ns, , luongCb

NhanVien T

tr ng chuyênmôn

NhanVienQL pccv

NhanVienNC

pc h

6- G i ý v cách 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

bài

• 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 Hàm Nhap(HS&hs)

– Xu t m t hs Hàm Xuat(HS hs);

– Ng ng.

Trang 15

Gi i bài toán h ng OOP

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

i ch ng hai cách hi n th c

Ngày đăng: 03/01/2016, 10:22

TỪ KHÓA LIÊN QUAN