intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:15

139
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài "Nhập môn" của bài giảng Lập trình hướng đối tượng giúp người học nhận biết được sự khác biệt giữa lập trình hướng đối tượng và lập trình hướng thủ tục, giúp người học luyện tập tư duy lập trình hướng đối tượng, nhận diện một số ngôn ngữ OOP. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn

  1. c tiêu • Nh n bi t s khác bi t gi a l p trình L P TRÌNH ng th c và l p trình h ng i NG IT NG ng. Nh p Môn • Luy n t p t duy l p trình h ng i ng. Tr n Ph c Tu n • Nh n di n m t s ngôn ng OOP. tuantp@hcmup.edu.vn http://giaotrinh.tranphuoctuan.com 1 c tiêu i dung chi ti t 1. Nh c m c a l p trình th c. • N m v ng m t s nh ngh a trong OOP 2. T duy h ng i t ng. bao g m: 3. Di n t h ng i t ng. – Tr u t ng hóa d li u. – L p, i t ng, th hi n. 4. u m c a l p trình h ng i t ng – Thông p và g i thông p. 5. Các khái ni m c n b n c a OOP – Tính bao óng. 6. Nh ng g i ý c n thi t khi l p trình OOP. – Tính k th a. – Tính a hình
  2. 1- L p trình th c 1- Nh c m c a POP • POP- Procedure Oriented Programming. • Data structure + Algorithm = Program • Di n t “thi u t nhiên” • K thu t POP: Program Có h c sinh x struct XX {..... “Vi t lý l ch cho h c sinh x” VietLyLich(x); pick Data }; nouns structure “x i, vi t lý l ch i em” x.VietLyLich(); type Fun (XX x) Problem {..... } pick Di n t nào t nhiên h n? Operation verbs (function) void main() { XX x; } Fun(x); “x i, vi t lý l ch i em” 1- Nh c m c a POP... 1- Nh c m c a POP... nhiên Hi n th c • Khó mô t nh ng quan h ph c t p c a struct PERSON th gi i t nhiên. Bi u di n d ng c u trúc Person {.... }; “ph c t p” không ph i là d dàng i v i struct MALE nhi u ng i. is a is a { PERSON Data Di n t – Quan h gi a các d li u c bi u di n }; ph i Male Female ng minh ng c u trúc l ng nhau ho c m t pointer. không struct FEMALE Tính phân l p khó c phát hi n, có khó { PERSON Data nhiên kh n trong bi u di n l n tính d hi u. }; • Thí d slide sau.
  3. 1- Nh c m c a POP... 1- Nh c m c a POP... • B o m t kém do không th gi i h n truy • C n m t ph ng pháp l p trình khác giúp xu t n m t d li u. gi i quy t nh ng nh c m này. • OOP có nh ng c m v t tr i so v i struct STUDENT { char Name[21]; void main() {STUDENT x = { “Hoa”, 19, 5}; POP và là ng l p trình ch o hi n int Age; int Score; x.Age=1000; x.Score=-20; n ngh sao v 2 nay. tác v này? }; } 2- duy h ng it ng What is an object? i t ng-Object • Objects are key to understanding object- • L p-Class oriented technology. • Tính th a k - Inheritance • Some real-world objects: your dog, your • Tính a hình-Polymorphism desk, your television set, your bicycle. • Real-world objects share two characteristics: They all have state and behavior
  4. Objects… How to describe a real-object? States name current gear (nhông s hi n hành) • Ask yourself two questions: color current pedal cadence (nh p p- rpm) breed (nòi) current speed (m/h) – "What possible states can this object be in?“ hungry – "What possible behavior can this object Behaviors barking changing gear perform?". fetching changing pedal cadence wagging tail applying brakes • 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 • An object is a software bundle of related states (on and off) and two possible behaviors state and behavior. (turn on, turn off). • Software objects are often used to model • Your desktop radio might have additional states the real-world objects that you find in (on, off, current volume, current station) and behavior (turn on, turn off, increase volume, everyday life. decrease volume, seek, scan, and tune). • These real-world observations all translate into the world of object-oriented programming.
  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 p trình H ng it ng t s khái ni m • 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 it ng (object): công ty – 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 • L p trình h ng i t ng (Object Oriented ng d li u…. Programming - LTH T) là ph ng pháp l p – M i i t ng s n t i trong m t h th ng và có trình l y i t ng làm n n t ng xây d ng ý ngh a nh t nh trong h th ng. thu t gi i, xây d ng ch ng trình – i t ng giúp bi u di n t t h n th gi i th c trên máy tính
  6. t s khái ni m t s khái ni m • L p: • M i thao tác trên m t l p i t ng c th – Các i t ng có các c tính ng t nhau c ng ng v i m t cài t c th khác nhau. gom chung l i thành l p i t ng. Ví d Ng i là t cài t nh v y c g i là m t ph ng t l p i t ng. M t l p i t ng c c th c (method). tr ng b ng các thu c tính, và các ho t ng (hành vi, thao tác). • Cùng m t thao tác(ph ng th c) có th c – Thu c tính (attribute) là m t thành ph n c a i áp d ng cho nhi u l p i t ng khác nhau, ng, có giá tr nh t nh cho m i i t ng t i m i t thao tác nh v y c g i là có tính a th i m trong h th ng. Vd: Tên, Tu i, Cân n ng là hình (polymorphism). các thu c tính c a Ng i • M t i t ng c th thu c m t l p c g i là – Thao tác (operation) th hi n hành vi c a m t i t th hi n (instance) a l p ó. ng tác ng qua l i v i các i t ng khác ho c – Joe Smith, 25 tu i, n ng 58kg, là m t th hi n c a l p i chính nó. ng i. it ng p và th hi n Teân lôùp Sinh vieân (Sinh vieân) • Ta dùng s i t ng mô t các l p i Hoï teân Nguyeãn Vaên A ng. i t ng bao g m s p và Naêm sinh 1984 th hi n Thuoäc tính Maõ soá 0610234T • S p mô t các l p it ng trong h Ñieåm TB 9.2 th ng, m t l p i t ng c di n t ng m t Ñi hoïc hình ch nh t có 3 ph n: Thao taùc Ñi thi – ph n u ch tên l p, Phaân loaïi – ph n th hai mô t các thu c tính Sô ñoà lôùp Sô ñoà theå hieän – ph n th ba mô t các thao tác c a các i ng trong l p ó. it ng = D li u + Ph ng th c
  7. 3- Di n th ng it ng 3- Di n th ng it ng Thí d 1: Xét hai di n t: • Di n t tác v theo h ng th c: • Nhân viên v n phòng vi t lý l ch cho sinh viên TênTácV iT ngD Li u); “Hoàng” Vi tLýL ch(Hoàng); ng(a,n); • 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 ? • Di n t tác v theo h ng i t ng : iT ngD Li u.TênTácV (); Thí d 2: Xét hai di n t: a.T ng(); • 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 d li u là i t ng làm ch ng trình Xem a là m t i t ng. nhiên h n vì gi ng t nhiên h n. 4- u i m c a OOP Benefits software objects • D mô t các quan h phân c p trong th gi i t nhiên. 1. Modularity: The source code for an object can nhiên Hi n th c be written and maintained independently of the class PERSON source code for other objects.. Person {.... 2. Information-hiding: By interacting only with }; an object's methods, the details of its internal implementation remain hidden from the outside is a is a class MALE: PERSON world. { }; nhiên 3. Code re-use: you can use (perhaps written by Male Female another software developer) that object in your program.. class FEMALE: PERSON 4. Pluggability and debugging ease: If a bolt { }; (con c) breaks, you replace it, not the entire machine.
  8. 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 ng code Tái s ng code Ngôn ng OOP Some OOP languages • C++, MS VC++: h tr POP l n OOP • C++ ( Borland C++, Visual C++) Lai OOP. H tr a th a k . i t ng • Java là bi n c a ch ng trình. Hàm main() là POP. • C# ( C sharp) • Java (Sun), C# (Microsoft): ch tr • Visual Basic. OOP, hàm main ph i n m trong m t l p. • ..... Ch tr n th a k .
  9. 5- L p - Ki u d li u tr u t ng 5- Các khái ni m c n b n c a OOP • Abstract Data Type. • OOP – Object Oriented Programming. • K t q a c a vi c khái quát hóa các th c th . • Ch ng trình là s ho t ng c a các i t ng Gi ng t nhiên. 1 5 7 Khái nguyên quát • Trong t nhiên: i t ng c bi u di n b ng -3 8 .... hóa ( int ) tr ng thái (states) + hành vi (behaviors). i t ng th c thi m t ho t ng t c là i int, NGUOI, PERSON Danh t chung trong ng th c hi n m t hành vi mà i t ng này là các ADT ngôn ng nhiên có kh ng. Ng i • M t ch ng trình là m t tr t t các l i yêu c u Khái ( PERSON ) 5- L p- Ki u d li u tr u t ng 5- Ba c m c a OOP it ng (object): Bao gói d li u + hành • 3 khái ni m c b n c a OOP vi. – Bao gói óng gói) d li u + hành vi + che i i t ng ph i thu c m t l p (class). nh ng thành ph n có tính “t nh ” mà bên ngoài không th truy c p. • Xây d ng m t i t ng là xây d ng m t – Tính th a k : M t l p có th th a k p p khác. Class = data (bi n mô t )+ methods (code). – Tính a hình: K thu t cho phép có khác bi t data members function members gi a code c a cùng m t hành vi trong l p cha và trong l p con.
  10. Bao gói..... 5- Bao gói - Encapsulation • Che d u i d li u. class CIRLCE • Bên ngoài ch ng class NG I i khai báo này, tác cv i i Tên public int getX() bên ngoài có th ng qua m t s truy c p 2 thu c tính hành vi. getTen() mSinh public void setX(int xx) TênNg iYêu u hay không? • Hành vi giao ti p public int getY() (public, interface .... int x, y, r; getNamSinh() public void setY(int yy) methods): Hành vi giúp getTen() int BorderColor; i t ng giao ti p v i getNamSinh() public int getR() int BkColor; môi tr ng. getTenNguoiYeu() getTenNguoiYeu() public void setR(int r) • Hành vi riêng/n i TiêuHóa() (private, internal): hành i() Nu t() public double getPerimeter() vi x lý d li u n i t i i() public double getArea() a i t ng mà bên ng() ng() ngoài không th truy Ch y() p. Nh y() interfaces ....... Bao gói… Bao gói… interface class • Set of common methods of a class Play() CASSETTE through them, an object can interact with Môi tr ng Stop() cB ng(); the outside world. bên ngoài Rewind() • The buttons on the front of your television Forward() GhiB ng(); set, for example, are the interface between Record() LýNhi u(); you and the electrical wiring on the other side of its plastic casing. You press the Interfaces "power" button to turn the television on (public methods) Hành vi n i and off. (private methods)
  11. 5-Tính th a k -Inheritance Tính th a k … • 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 • Các lo i i 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. ng khác • Ti t ki m công s c vi t code và test. nhau th ng • n t i m i quan h cha (l p n n,base,parent)- con ( l p có chung m t n xu t,derived class). c m. • 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 … c cái ng ng 5- a hình-Polymorphism class PERSON class STUDENT ID_Num Name ID_Num Name • Kh ng có nh ng hi n th c khác nhau cho YearOfBirth th a YearOfBirth cùng m t hành vi. Address Address getID_Num() getID_Num() • K thu t cho phép thay i n i dung c a cùng setID_Num(newID) setID_Num(newID) t hành vi trong 2 l p cha –con. ...... ...... quan h “là 1” tính RollNum • B n ch t: S a code c a cùng m t hành vi 2 Score class STUDENT ch t getScore() p cha con các code này khác nhau. RollNum riêng Ch ph i Score setSore(newScore) ...... a hình t o ra kh ng cho phép g i m t hành getScore() hi n th c setSore(newScore) vi c a m t l p mà không c n quan tâm n hi n ng này ...... Con = Cha + m t tí th c c a hành vi này.
  12. 5- Phân bi t L p, Th hi n, Bi n it ng Thí d tính a hình… class CIRCLE • class: Hi n th c c a m t t p class ànBà int x,y,r; void DiChuy n(); void Draw () các i t ng (object) cùng lo i { circle (x,y,r); Cùng d mô t (data), cùng 7 } hành vi (methods). 5 class RECTANGLE 1000 “Hoa” class SHAPE class Ng i void Draw () int x1,y1, x2, y2; void Draw () • Th hi n – instance: t thông void DiChuy n(); { { rectangle(x1,y1, x2, y2); tin v t i t ng có trong } } nh a ch ng trình. class TRIANGLE • Bi n i t ng (g i t t là i class ànÔng int x1,y1, x2, y2 , x3, y3; ng): void DiChuy n(); void Draw () { line(x1,y1, x2, y2); • Pointer c a i t ng:Tham line(x2,y2, x3, y3); chi u n m t th c th a l p. obj 300 1000 line(x3,y3, x1, y1); a hình t o c tính m m d o/linh ng } a ch ng trình Student obj= new Student(“Hoa”,5,7); 5- Thông i p, thông báo - Message 6- G i ý khi thi t k tl p • G i thông báo: Yêu c u 1 it ng th c • 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 . thi m t hành vi. • Ta (bên ngoài) th c s n x lý gì ( ng t ) • Thí d : trên i t ng Hành vi giao ti p. x là m t HOCSINH < Name, Age> 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 x.VietLyLich(); Hành vi n i. String S= x.getName(); 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) int n= x.getAge(); get, set (g i là getter, setter)thao tác lên d li u này.
  13. Bài t p t i ch class Student 6- G i ý v phân tích th a k void input() void output() • Thi t k char* getCode() (1) Li t kê c m c a các p mô i t ng c n quan tâm. void setCode(char* newCode) và x lý m t char* getName() (2) Tìm t p giao c a các tính char code [12]; ch t gi a các l p, tách t p c void setName(char* newName) char name[30]; sinh, int getScore1() int score1; giao này xây d ng l p bi t void setScore1(int s1) int score2; cha. int score3; ng int getScore2() (3) t 1 tên g i có ý ngh a c sinh void setScore2(int s2) cho l p cha. ph i h c 3 môn int getScore3() (4) Ph n còn l i sau khi tách c. void setScore3(int s3) p giao là các l p con. float avg() Bài gi i Th a k - Bài m u • Hang ienMay < maH,tenH,nsx,gia, tgbh, a,cs > • HangSanhSu < maH,tenH,nsx,gia, lnl > Phân tích phân c p th a k cho các l p: • HangThucPham < maH,tenH,nsx,gia, ngsx,nhhd > • Hàng n máy maH tenH • Hàng sành s < mã hàng, tên hàng, nhà nsx gia n xu t, giá, lo i nguyên li u> • Hàng th c ph m cx
  14. Th a k - Bài t p làm t i ch 6- G i ý v cách gi i bài toán theo OOP 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ý • Nhân viên nghiên c u pick { type1 prop1; properties • Nhân viên ph c v nouns type2 prop2; ....... type Method1(...) Problem Bao gói d li u và { NhanVienQL hành vi thành class } ..... pccv }; NhanVien NhanVien T pick maNV, tenNV tr ng Operation NhanVienNC verbs void main() ns, , luongCb chuyênmôn (function, { XX x; // object variable pc h method, x.Method(...); behavior) } Gi i bài toán h ng POP v i C++ 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.
  15. Gi i bài toán h ng OOP i ch ng hai cách hi n th c Thành ph n public là thành ph n cho phép bên ngoài truy c p.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2