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

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

Đ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

c tiêu L P TRÌNH NG IT NG Nh p Mơn Tr n Ph c Tu n tuantp@hcmup.edu.vn http://giaotrinh.tranphuoctuan.com • Nh n bi t s khác bi t gi a l p trình ng th c l p trình h ng i ng • Luy n t p t l p trình h ng i ng • Nh n di n m t s ngơn ng OOP i dung chi ti t c tiêu • N m v ng m t s bao g m: nh ngh a OOP – Tr u t ng hóa d li u – L p, i t ng, th hi n – Thơng p g i thơng – Tính bao óng – Tính k th a – Tính a hình p Nh c m c a l p trình th c T 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 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 d li u c bi u di n ng c u trúc l ng ho c m t pointer Tính phân l p khó c phát hi n, có khó kh n 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 d dàng i v i nhi u ng i • Thí d c t 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 }; struct FEMALE { PERSON Data }; Di n t ph i ng minh khơng nhiên 1- Nh c m c a POP • B o m t 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- h void main() {STUDENT x = { “Hoa”, 19, 5}; x.Age=1000; n ngh v 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 • OOP có nh ng c m v t tr i so v i POP ng l p trình ch o hi n 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 nh ng i t ng, ó th c th có m i quan h i Ví d : phòng m t cơng ty • L p trình h ng i t ng (Object Oriented Programming - LTH T) 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 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 m t h th ng có ý ngh a nh t nh h th ng – i t ng giúp bi u di n t t h n th gi i th c 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 tính ng t c gom chung l i thành l p i t ng Ví d Ng i t l p i t ng M t l p i t ng c c tr ng b ng thu c tính, ho t ng (hành vi, thao tác) – Thu c tính (attribute) 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 h th ng Vd: Tên, Tu i, Cân n ng 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 i t ng khác ho c i it • M i thao tác m t l p i t ng c th ng ng v i m t cài t c th khác t cài t nh v y c g i 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 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, m t th hi n c a l p ng i p ng Sinh viên Tên lớp • Ta dùng s i t ng mơ t l p i ng i t ng bao g m s p th hi n Thuộc tính • S p mơ t l p th ng, m t l p i t ng hình ch nh t có 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 h c di n t ng m t u ch tên l p, – ph n th hai mơ t thu c tính – ph n th ba mơ t thao tác c a ng l p ó c g i Sơ đồ lớp i it th hi n (Sinh viên) Nguyễn Văn A 1984 0610234T 9.2 Sơ đồ thể 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 “Hồng” Vi tLýL ch(Hồng); • Hồng i, vi t lý l ch i em Hồng.Vi tLýL ch(); Theo b n, tình hu ng ú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 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 i t ng làm ch ng trình nhiên h n gi ng t nhiên h n Benefits software objects • D mơ t quan h phân c p th gi i t nhiên nhiên th class MALE: PERSON { }; Female class FEMALE: PERSON { }; nhiên 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 Thí d che d u thơng tin Thí d tái s ng code • Bên ngồ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 bi n c a ch ng trình Hàm main() POP • Java (Sun), C# (Microsoft): ch tr OOP, hàm main ph i n m 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 s ho t ng c a 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 i ng th c hi n m t hành vi mà i t ng có kh ng • M t ch ng trình m t tr t t l i u c u i t ng th c hi n hành vi c a Ch ng trình 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 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 qt hóa th c th -3 Khái qt hóa ngun ( int ) int, NGUOI, PERSON ADT Khái qt hóa 5- Ba c attributes Danh t chung ngơn ng nhiên Ng i ( PERSON ) m c a OOP • 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 ngồ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 m t hành vi l p cha l p Bao gói 5- Bao gói - Encapsulation • • • • Che d u i d li u Bên ngồ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 ngồi khơng th truy p class CIRLCE class NG I Tên mSinh getTen() TênNg iu 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 ngồi i khai báo này, bên ngồi có th truy c p 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 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 Con = Cha + m t tí khác bi t Ti t ki m cơng s c vi t code test n t i m i quan h cha (l p n n,base,parent)- ( l p n xu t,derived class) • • • C++ cho phép a th a k (1 l p có th d n xu t c a nhi u l p khác) • C#, Java ngơn ng OO n th a k Th a k Tính th a k … ng quan h “là 1” Ch ph i hi n th c ng c 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 cho m t hành vi • K thu t cho phép thay i n i dung c a t hành vi l p cha –con • B n ch t: S a code c a m t hành vi p cha code khác a hình t o 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 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 i t ng (object) lo i Cùng d mơ t (data), hành vi (methods) • Th hi n – instance: t thơng tin v t i t ng có nh a ch ng trình • Bi n i t ng (g i t t i ng): • Pointer c a i t ng:Tham chi u n m t th c th a l p ng 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 ý thi t k • G i thơng báo: u c u thi m t hành vi • Thí d : • Ta c n bi t nh ng thơng tin v t i t ng thu c l p li u mơ t • Ta (bên ngồi) th c s n x lý ( ng t ) 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 ngồ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ó hành vi thao tác (g i accessors) get, set (g i getter, setter)thao tác lên d li u it x 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ơ x lý m t c sinh, bi t ng c sinh ph i h c 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 l p: • Hàng n máy • Hàng sành s < mã hàng, tên hàng, nhà n xu t, giá, lo i ngun li u> • Hàng th c ph m 6- G i ý v phân tích th a k (1) Li t kê c m c a i t ng c n quan tâm (2) Tìm t p giao c a tính ch t gi a l p, tách t p giao xây d ng l p cha (3) t tên g i có ý ngh a cho l p cha (4) Ph n l i sau tách p giao l p 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 i t ng m t h c vi n: • Nhân viên qu n lý • Nhân viên nghiên c u • Nhân viên ph c v 6- G i ý v cách gi i tốn theo OOP Program pick nouns Problem NhanVienQL NhanVien maNV, tenNV ns, , luongCb NhanVien T tr ng chunmơn NhanVienNC pick verbs pc h Gi i tốn h • Vi t ch ng trình nh p, xu t h c sinh Thơng tin c n quan tâm v 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 hành vi thành class pccv – – – – 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 tốn h i ch ng hai cách hi n th c ng OOP Thành ph n public thành ph n cho phép bên ngồi truy c p [...]... • Nhân viên nghiên c u • Nhân viên ph c v 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... 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ý 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... 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... 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 • Hàng sành s < mã hàng, tên hàng, nhà n xu t, giá, lo i nguyên li ... x.Age=1000; n ngh v x.Score =-2 0; 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... 1- L p trình th c 1- Nh • POP- Procedure Oriented Programming • Data structure + Algorithm = Program • K thu t... 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?

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan