GV. Thân Văn SChương 01- Nhp môn OOPSlide 1/54 Chương 02 NHP MÔN LP TRÌNH HƯNG ĐI TƯNG Introduction to OOP (3 gi)
GV. Thân Văn SChương 01- Nhp môn OOPSlide 2/54 Mc tiêu Nhn bit s khác bit gia lp trình hưng th tc và lp trình hưng đi tưng. Luyn tp tư duy lp trình hưng đi tưng. Nhn din mt s ngôn ng OOP.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 3/54 Mc tiêu Nm vng mt s đnh nghĩa trong OOP bao gm: –Tru tưng hóa d liu. –Lp, đi tưng, th hin. –Thông đip và gi thông đip. –Tính bao đóng. –Tính k tha. –Tính đa hình
GV. Thân Văn SChương 01- Nhp môn OOPSlide 4/54 Ni dung chi tit Nhưc đim ca lp trình th tc. Tư duy hưng đi tưng. Din đt hưng đi tưng. Ưu đim ca lp trình hưng đi tưng Các khái nim căn bn ca OOP Nhng gi ý cn thit khi lp trình OO.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 5/ Lp trình th tc POP- Procedure Oriented Programming. Data structure + Algorithm = Program K thut POP: Problem Data structure Operation (function) Program struct XX {..... }; type Fun (XX x) {..... } void main() { XX x; Fun(x); } pick nouns pick verbs
GV. Thân Văn SChương 01- Nhp môn OOPSlide 6/ Nhưc đim ca POP Din đt thiu t nhiên Có hc sinh x Vit lý lch cho hc sinh x x ơi, vit lý lch đi em Din đt nào t nhiên hơn? x ơi, vit lý lch đi em VietLyLich(x); x.VietLyLich();
GV. Thân Văn SChương 01- Nhp môn OOPSlide 7/54 Nhưc đim ca POP... Khó mô t nhng quan h phc tp ca th gii t nhiên. Biu din dng cu trúc phc tp không phi là d dàng đi vi nhiu ngưi. –Quan h gia các d liu đưc biu din bng cu trúc lng nhau hoc mt pointer. Tính phân lp khó đưc phát hin, có khó khăn trong biu din ln tính d hiu. Thí d slide sau.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 8/54 Nhưc đim ca POP... T nhiên Person MaleFemale is a struct PERSON {.... } ; struct MALE { PERSON Data } ; struct FEMALE { PERSON Data } ; Din đt phi tưng minh không t nhiên Hin thc
GV. Thân Văn SChương 01- Nhp môn OOPSlide 9/54 Nhưc đim ca POP... Bo mt kém do không th gii hn truy xut đn mt d liu. struct STUDENT { char Name[21]; int Age; int Score; }; void main() {STUDENT x = { Hoa, 19, 5}; x.Age=1000; x.Score=-20; } Bn nghĩ sao v 2 tác v này?
GV. Thân Văn SChương 01- Nhp môn OOPSlide 10/54 Nhưc đim ca POP... Cn mt phương pháp lp trình khác giúp gii quyt nhng nhưc đim này. OOP có nhng đc đim vưt tri so vi POP và là hưng lp trình ch đo hin nay.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 11/ Tư duy hưng đi tưng Đi tưng-Object Lp-Class Tính tha k- Inheritance Tính đa hình-Polymorphism
GV. Thân Văn SChương 01- Nhp môn OOPSlide 12/54 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 13/54 Objects… Identifying the state and behavior for real-world objects is a great way to begin thinking in terms of object-oriented programming. Statesname color breed (nòi) hungry current gear (nhông s hin hành) current pedal cadence (nhp đp- rpm) current speed (m/h) Behaviorsbarking fetching wagging tail changing gear changing pedal cadence applying brakes
GV. Thân Văn SChương 01- Nhp môn OOPSlide 14/54 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 15/54 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.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 16/54 Software Object- Đi tưng phn mm 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.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 17/54 Software objects
GV. Thân Văn SChương 01- Nhp môn OOPSlide 18/54 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 19/ Din đt hưng đi tưng Thí d 1: Xét hai din đt: Nhân viên văn phòng vit lý lch cho sinh viên Hoàng VitLýLch(Hoàng); Hoàng ơi, vit lý lch đi em. Hoàng.VitLýLch(); Theo bn, tình hung nào đúng vi thc t? Thí d 2: Xét hai din đt: Tính tng mng a có n phn t Tng(a,n); Mng a ơi, tình tng đi em: a.Tng(); Xem a là mt đi tưng.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 20/54 Din đt hưng đi tưng Din đt tác v theo hưng th tc : TênTácV(ĐiTưngDLiu); Tng(a,n); Din đt tác v theo hưng đi tưng : ĐiTưngDLiu.TênTácV(); a.Tng(); Xem d liu là đi tưng làm chương trình t nhiên hơn vì ging t nhiên hơn.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 21/ Ưu đim ca OOP D mô t các quan h phân cp trong th gii t nhiên. T nhiên Person MaleFemale is a class PERSON {.... } ; class MALE: PERSON { } ; class FEMALE: PERSON { } ; t nhiên Hin thc
GV. Thân Văn SChương 01- Nhp môn OOPSlide 22/54 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.. 4.Pluggability and debugging ease: If a bolt (con c) breaks, you replace it, not the entire machine.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 23/54 Thí d v che du thông tin Bên ngoài không th tùy tin truy cp mt d liu thuc tính Security
GV. Thân Văn SChương 01- Nhp môn OOPSlide 24/54 Thí d v tái s dng code Tái s dng code
GV. Thân Văn SChương 01- Nhp môn OOPSlide 25/ Some OOP languages C++ ( Borland C++, Visual C++) Java C# ( C sharp) Visual Basic......
GV. Thân Văn SChương 01- Nhp môn OOPSlide 26/54 Ngôn ng OOP C++, MS VC++: h tr c POP ln OOP Lai OOP. H tr đa tha k. Đi tưng là bin ca chương trình. Hàm main() là POP. Java (Sun), C# (Microsoft): ch h tr OOP, hàm main phi nm trong mt lp. Ch h tr đơn tha k.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 27/ Các khái nim căn bn ca OOP OOP – Object Oriented Programming. Chương trình là s hot đng ca các đi tưng Ging t nhiên. Trong t nhiên: Đi tưng đưc biu din bng trng thái (states) + hành vi (behaviors). Đi tưng thc thi mt hot đng tc là đi tưng thc hin mt hành vi mà đi tưng này có kh năng. Mt chương trình là mt trt t các li yêu cu đi tưng thc hin hành vi ca mình. Chương trình là mt kích bn (script).
GV. Thân Văn SChương 01- Nhp môn OOPSlide 28/ Lp - Kiu d liu tru tưng Abstract Data Type. Kt qa ca vic khái quát hóa các thc th. Khái quát hóa Khái quát hóa S nguyên ( int ) Ngưi ( PERSON ) <Code, Name, date_of_birth, Address, > Danh t chung trong ngôn ng t nhiên attributes int, NGUOI, PERSON là các ADT
GV. Thân Văn SChương 01- Nhp môn OOPSlide 29/ Lp- Kiu d liu tru tưng Đi tưng (object): Bao gói d liu + hành vi. Đi tưng phi thuc mt lp (class). Xây dng mt đi tưng là xây dng mt lp Class = data (bin mô t)+ methods (code). data members function members
GV. Thân Văn SChương 01- Nhp môn OOPSlide 30/ Ba đc đim ca OOP 3 khái nim cơ bn ca OOP –Bao gói (đóng gói) d liu + hành vi + che đi nhng thành phn có tính t nh mà bên ngoài không th truy cp. –Tính tha k: Mt lp có th tha k t lp khác. –Tính đa hình: K thut cho phép có khác bit gia code ca cùng mt hành vi trong lp cha và trong lp con.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 31/ Bao gói - Encapsulation Che du đi d liu. Bên ngoài ch tương tác đưc vi đi tưng qua mt s hành vi. Hành vi giao tip (public, interface methods): Hành vi giúp đi tưng giao tip vi môi trưng. Hành vi riêng/ni (private, internal): hành vi x lý d liu ni ti ca đi tưng mà bên ngoài không th truy cp. class NGƯI Tên NămSinh TênNgưiYêu.... getTen() getNamSinh() getTenNguoiYeu() TiêuHóa() Nut() Đi() Đng() Chy() Nhy() getTen() getNamSinh() getTenNguoiYeu() Đi() Đng() interfaces
GV. Thân Văn SChương 01- Nhp môn OOPSlide 32/54 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() Vi khai báo này, bên ngoài có th truy cp 2 thuc tính mu hay không?
GV. Thân Văn SChương 01- Nhp môn OOPSlide 33/54 Bao gói… class CASSETTE ĐcBăng(); GhiBăng(); XLýNhiu(); Play() Stop() Rewind() Forward() Record() Môi trưng bên ngoài Interfaces (public methods) Hành vi ni (private methods)
GV. Thân Văn SChương 01- Nhp môn OOPSlide 34/54 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.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 35/ Tính tha k-Inheritance Các loi đi tưng khác nhau thưng có chung mt s đc đim.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 36/54 Tính tha k… T nhng lp đi tưng đã có, ta có th đc t lp đi tưng mi, lp mi s mang nhng đc tính ca nhng lp đã có (di truyn) + nhng đc tính mi ca riêng nó Con = Cha + mt tí khác bit. Tit kim công sc vit code và test. Tn ti mi quan h cha (lp nn,base,parent)- con ( lp dn xut,derived class). C++ cho phép đa tha k (1 lp có th là dn xut ca nhiu lp khác). C#, Java là ngôn ng OO đơn tha k. Tha k là đc đim tái s dng thông tin ca OOP.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 37/54 Tính tha 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 phi hin thc bng này Đ đưc cái tương đương ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID) class STUDENT RollNum Score getScore() setSore(newScore) tha k tính cht riêng Con = Cha + mt tí
GV. Thân Văn SChương 01- Nhp môn OOPSlide 38/ Đa hình-Polymorphism Kh năng có nhng hin thc khác nhau cho cùng mt hành vi. K thut cho phép thay đi ni dung ca cùng mt hành vi trong 2 lp cha –con. Bn cht: Sa code ca cùng mt hành vi 2 lp cha con đ các code này khác nhau. Đa hình to ra kh năng cho phép gi mt hành vi ca mt lp mà không cn quan tâm đn hin thc ca hành vi này.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 39/54 Thí d v tính đa hình… class Ngưi void DiChuyn(); class ĐànÔng void DiChuyn(); class ĐànBà void DiChuyn(); 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 to đưc tính mm do/linh đng ca chương trình
GV. Thân Văn SChương 01- Nhp môn OOPSlide 40/ Phân bit Lp, Th hin, Bin đi tưng class: Hin thc ca mt tp các đi tưng (object) cùng loi Cùng d mô t (data), cùng hành vi (methods). Th hin – instance: Mt thông tin v mt đi tưng có trong b nh ca chương trình. Bin đi tưng (gi tt là đi tưng): Pointer ca đi tưng:Tham chiu đn mt thc th ca lp Hoa obj 1000 Student obj= new Student(Hoa,5,7); 5 7
GV. Thân Văn SChương 01- Nhp môn OOPSlide 41/ Thông đip, thông báo - Message Gi thông báo: Yêu cu 1 đi tưng thc thi mt hành vi. Thí d: x là mt HOCSINH x.VietLyLich(); String S= x.getName(); int n= x.getAge();
GV. Thân Văn SChương 01- Nhp môn OOPSlide 42/ Gi ý khi thit k mt lp Ta cn bit nhng thông tin gì v mt đi tưng thuc lp này. D liu mô t. Ta (bên ngoài) thc s cn x lý gì (đng t) trên đi tưng Hành vi giao tip. Đ có đưc hành vi giao tip, có cn nhng x lý thêm mà bên ngoài không cn bit đn Hành vi ni. Đơn gin nht: Vi mi thuc tính d liu ca lp, s có 2 hành vi thao tác (gi là accessors) get, set (gi là getter, setter)thao tác lên d liu này.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 43/54 Bài tp ti ch Thit k lp mô t và x lý mt hc sinh, bit rng hc sinh phi hc 3 môn hc. 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()
GV. Thân Văn SChương 01- Nhp môn OOPSlide 44/ Gi ý v phân tích tha k (1) Lit kê đc đim ca các đi tưng cn quan tâm. (2) Tìm tp giao ca các tính cht gia các lp, tách tp giao này đ xây dng lp cha. (3) Đt 1 tên gi có ý nghĩa cho lp cha. (4) Phn còn li sau khi tách tp giao là các lp con.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 45/54 Tha k - Bài mu Phân tích phân cp tha k cho các lp: Hàng đin máy Hàng sành s Hàng thc phm
GV. Thân Văn SChương 01- Nhp môn OOPSlide 46/54 Bài gii HangĐienMay HangSanhSu HangThucPham HangHoa maH tenH nsx gia HangDienMay tgbh đa cx HangSanhSu lnl HangThucPham ngsx nghhd
GV. Thân Văn SChương 01- Nhp môn OOPSlide 47/54 Tha k- Bài tp làm ti ch Phân tích phân cp tha k cho các đi tưng trong mt hc vin: Nhân viên qun lý Nhân viên nghiên cu Nhân viên phc v NhanVien maNV, tenNV ns, tđ, luongCb NhanVienĐĐT trưng chuyênmôn NhanVienQL pccv NhanVienNC pcđh
GV. Thân Văn SChương 01- Nhp môn OOPSlide 48/ Gi ý v cách gii 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 liu và hành vi thành class
GV. Thân Văn SChương 01- Nhp môn OOPSlide 49/54 Đ bài Vit chương trình nhp, xut 1 hc sinh. Thông tin cn quan tâm v 1 hc sinh: Mã hc sinh (8 ký t), tên hc sinh (30 ký t), đim (int). Danh t: Hc sinh cu trúc HS Đng t: –Bt đu; –Nhp mt hs Hàm Nhap(HS&hs) –Xut mt hs Hàm Xuat(HS hs); –Ngưng.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 50/54 Gii bài toán hưng POP vi C++
GV. Thân Văn SChương 01- Nhp môn OOPSlide 51/54 Gii bài toán hưng OOP Thành phn public là thành phn cho phép bên ngoài truy cp.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 52/54 Đi chng hai cách hin thc
GV. Thân Văn SChương 01- Nhp môn OOPSlide 53/54 Tóm tt POP: Xem d liu và tác v ri nhau. Các nhưc đim ca POP –Mô t các quan h gia các đi tưng d liu trong t nhiên theo cách không t nhiên. –Khó tái s dng code. –Bo mt kém.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 54/54 Tóm tt OOP: Xem d liu và tác v là mt th thng nht. Ưu đim ca OOP: –Mô t các quan h gia các đi tưng d liu trong t nhiên theo cách t nhiên. –Tính mo-đun hóa –Có cơ ch bo mt d liu. –D tái s dng code. –D thay đi (pluggability) và d kim li.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 55/54 Câu hi – Phn t hc Trình by phương pháp lp trình POP. Trình by phương pháp lp trình OOP.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 56/54 Trc nghim (1)Vi khai báo struct, ta vn có th to cơ ch bo mt mt thành phn d liu. (a) Đúng (b) Sai. (2)Vi khai báo struct, mun thao tác đn d liu bt buc phi thông qua mt hàm. (a) Đúng (b) Sai. (3)Đ tái s dng code C++, code đưc tái s dng phi đưc đ trong mt file và không có hàm main. (a) đúng (b) sai.
GV. Thân Văn SChương 01- Nhp môn OOPSlide 57/54 Bài tp Phân tích ph h tha k cho các khái nim sau: -Window -ListBox -Button -ComboBox
GV. Thân Văn SChương 01- Nhp môn OOPSlide 58/54 Question 1 OOP stands for a- Object Online Programming b- Object Of a Program c- Object Oriented Programming c
GV. Thân Văn SChương 01- Nhp môn OOPSlide 59/54 Question 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. a b
GV. Thân Văn SChương 01- Nhp môn OOPSlide 60/54 Question 3 What description below is POP format? a- DrawCircle(v); b- v.Draw(); a
GV. Thân Văn SChương 01- Nhp môn OOPSlide 61/54 Question 4 Identify the basic characteristics of OOP: a- Data hidding. b- Inheritance. c- Polymorphism. d- All of the above d
GV. Thân Văn SChương 01- Nhp môn OOPSlide 62/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 63/54 Question 6 Select incorrect statements: a- class = properties + methods b- class = properties c- class = functions that will operate on data b c
GV. Thân Văn SChương 01- Nhp môn OOPSlide 64/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 65/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 66/54 Question 9 C++ is a a- Multiple inheritance OOP language. b- Single inheritance OOP language. a
GV. Thân Văn SChương 01- Nhp môn OOPSlide 67/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 68/54 Question 11 What is the correct syntax when a method is implemented outside the class declaration block. a- DataType Method (params) { } b- DataType ClassName::Method (params) { } b
GV. Thân Văn SChương 01- Nhp môn OOPSlide 69/54 Question 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 e missing ; at the end of class declaration
GV. Thân Văn SChương 01- Nhp môn OOPSlide 70/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 71/54 Question 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
GV. Thân Văn SChương 01- Nhp môn OOPSlide 72/54 THANK YOU