Chng 02 NHP MN LP TRNH HNG I

  • Slides: 72
Download presentation
Chương 02 NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Introduction to OOP (3 giờ)

Chương 02 NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Introduction to OOP (3 giờ) GV. Thân Văn Sử Chương 01 - Nhập môn OOP 1

Mục tiêu • Nhận biết sự khác biệt giữa lập trình hướng thủ tục

Mục tiêu • Nhận biết sự khác biệt giữa lập trình hướng thủ tục và lập trình hướng đối tượng. • 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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 2

Mục tiêu • Nắm vững một số định nghĩa trong OOP bao gồm: –

Mụ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. – Lớp, đối tượng, thể hiện. – Thông điệp và gửi thông điệp. – Tính bao đóng. – Tính kế thừa. – Tính đa hình GV. Thân Văn Sử Chương 01 - Nhập môn OOP 3

Nội dung chi tiết • • • Nhược điểm của lập trình thủ tục.

Nội dung chi tiết • • • Nhược điểm của lập trình thủ tục. Tư duy hướng đối tượng. Diễn đạt hướng đối tượng. Ưu điể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 OO. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 4

2. 1 - Lập trình thủ tục • POP- Procedure Oriented Programming. • Data

2. 1 - Lập trình thủ tục • 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 GV. Thân Văn Sử struct XX {. . . }; void main() { XX x; Fun(x); } Chương 01 - Nhập môn OOP 5

2. 2 - Nhược điểm của POP • Diễn đạt “thiếu tự nhiên” Có

2. 2 - Nhược điể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” Viet. Ly. Lich(x); x. Viet. Ly. Lich(); Diễn đạt nào tự nhiên hơn? “x ơi, viết lý lịch đi em” GV. Thân Văn Sử Chương 01 - Nhập môn OOP 6

Nhược điểm của POP. . . • Khó mô tả những quan hệ phức

Nhược điểm của POP. . . • 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. – Quan hệ giữa các dữ liệu được biểu diễn bằ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ăn trong biểu diễn lẫn tính dễ hiểu. • Thí dụ ở slide sau. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 7

Nhược điểm của POP. . . Tự nhiên Hiện thực Person struct PERSON {.

Nhược điểm của POP. . . Tự nhiên Hiện thực Person struct PERSON {. . }; is a Male is a Female struct MALE { PERSON Data <dữ liệu thêm> }; struct FEMALE { PERSON Data <dữ liệu thêm> }; GV. Thân Văn Sử Chương 01 - Nhập môn OOP Diễn đạt phải tường minh không tự nhiên 8

Nhược điểm của POP. . . • Bảo mật kém do không thể giới

Nhược điể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; }; GV. Thân Văn Sử void main() {STUDENT x = { “Hoa”, 19, 5}; x. Age=1000; Bạn nghĩ sao về 2 x. Score=-20; tác vụ này? } Chương 01 - Nhập môn OOP 9

Nhược điểm của POP. . . • Cần một phương pháp lập trình khác

Nhược điể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 điểm này. • OOP có những đặc điểm vượt trội so với POP và là hướng lập trình chủ đạo hiện nay. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 10

2. 2 - Tư duy hướng đối tượng • • Đối tượng-Object Lớp-Class Tính

2. 2 - Tư duy hướng đối tượng • • Đối tượng-Object Lớp-Class Tính thừa kế- Inheritance Tính đa hình-Polymorphism GV. Thân Văn Sử Chương 01 - Nhập môn OOP 11

What is an object? • Objects are key to understanding objectoriented technology. • Some

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 GV. Thân Văn Sử Chương 01 - Nhập môn OOP 12

Objects… States name color breed (nòi) hungry current gear (nhông số hiện hành) current

Objects… States 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) Behaviors barking fetching wagging tail changing gear changing pedal cadence applying brakes • Identifying the state and behavior for real-world objects is a great way to begin thinking in terms of object-oriented programming. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 13

How to describe a real-object? • Ask yourself two questions: – "What possible 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 GV. Thân Văn Sử Chương 01 - Nhập môn OOP 14

How to describe a real-object? … • Your desktop lamp may have only two

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 Sử Chương 01 - Nhập môn OOP 15

Software Object- Đối tượng phần mềm • An object is a software bundle of

Software Object- Đối tượng phần mềm • 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 Sử Chương 01 - Nhập môn OOP 16

Software objects GV. Thân Văn Sử Chương 01 - Nhập môn OOP 17

Software objects GV. Thân Văn Sử Chương 01 - Nhập môn OOP 17

What is a class? • In the real world, many individual objects belong of

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 Sử Chương 01 - Nhập môn OOP 18

2. 3 -Diễn đạt hướng đối tượng Thí dụ 1: Xét hai diễn đạt:

2. 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ết. LýLịch(Hoàng); • Hoàng ơi, viết lý lịch đi em. Hoàng. Viết. Lý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ử 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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 19

Diễn đạt hướng đối tượng • Diễn đạt tác vụ theo hướng thủ tục

Diễn đạt hướng đối tượng • Diễn đạt tác vụ theo hướng thủ tục : Tên. Tác. Vụ(Đối. Tượng. DữLiệu); Tổng(a, n); • Diễn đạt tác vụ theo hướng đối tượng : Đối. Tượng. DữLiệu. Tên. Tác. Vụ(); a. Tổng(); • Xem dữ liệu là đối tượng làm chương trình tự nhiên hơn vì giống tự nhiên hơn. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 20

2. 4 - Ưu điểm của OOP • Dễ mô tả các quan hệ

2. 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. Tự nhiên class PERSON {. . }; Person is a Male Hiện thực is a class MALE: PERSON {<dữ liệu thêm> }; tự nhiên Female class FEMALE: PERSON { <dữ liệu thêm> }; GV. Thân Văn Sử Chương 01 - Nhập môn OOP 21

Benefits software objects 1. Modularity: The source code for an object can be written

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 Sử Chương 01 - Nhập môn OOP 22

Thí dụ về che dấu thông tin • Bên ngoài không thể tùy tiện

Thí dụ về 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 GV. Thân Văn Sử Chương 01 - Nhập môn OOP 23

Thí dụ về tái sử dụng code Tái sử dụng code GV. Thân Văn

Thí dụ về tái sử dụng code Tái sử dụng code GV. Thân Văn Sử Chương 01 - Nhập môn OOP 24

2. 5 - Some OOP languages • • • C++ ( Borland C++, Visual

2. 5 - Some OOP languages • • • C++ ( Borland C++, Visual C++) Java C# ( C sharp) Visual Basic. . . GV. Thân Văn Sử Chương 01 - Nhập môn OOP 25

Ngôn ngữ OOP • C++, MS VC++: hỗ trợ cả POP lẫn OOP Lai

Ngôn ngữ OOP • C++, MS VC++: hỗ trợ cả 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ỉ hỗ trợ OOP, hàm main phải nằm trong một lớp. Chỉ hỗ trợ đơn thừa kế. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 26

2. 6 - Các khái niệm căn bản của OOP • OOP – Object

2. 6 - 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 tượng thực hiện một hành vi mà đối tượng này có khả nă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). GV. Thân Văn Sử Chương 01 - Nhập môn OOP 27

2. 7 - Lớp - Kiểu dữ liệu trừu tượng • Abstract Data Type.

2. 7 - 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 Số nguyên ( int ) int, NGUOI, PERSON là các ADT Khái quát hóa GV. Thân Văn Sử attributes Chương 01 - Nhập môn OOP Danh từ chung trong ngôn ngữ tự nhiên Người ( PERSON ) <Code, Name, date_of_birth, Address, e-mail. . . . > 28

2. 8 - Lớp- Kiểu dữ liệu trừu tượng • Đối tượng (object): Bao

2. 8 - Lớp- Kiểu dữ liệu trừu tượng • Đố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). • Xây dựng một đối tượng là xây dựng một lớp Class = data (biến mô tả)+ methods (code). data members GV. Thân Văn Sử function members Chương 01 - Nhập môn OOP 29

2. 9 -Ba đặc điểm của OOP • 3 khái niệm cơ bản của

2. 9 -Ba đặc điể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ế từ lớ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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 30

2. 10 - Bao gói - Encapsulation • Che dấu đi dữ liệu. •

2. 10 - Bao gói - Encapsulation • Che dấu đi dữ liệu. • Bên ngoài chỉ tương tác được với đối tượ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 của đối tượng mà bên ngoài không thể truy cập. GV. Thân Văn Sử class NGƯỜI Tên Năm. Sinh get. Ten() Tên. Người. Yêu. . get. Nam. Sinh() get. Ten() get. Nam. Sinh() get. Ten. Nguoi. Yeu() Tiêu. Hóa() Đi() Nuốt() Đi() Đứng() Chạy() Nhẩy() interfaces. . . . Chương 01 - Nhập môn OOP 31

Bao gói. . . class CIRLCE Với khai báo này, bên ngoài có thể

Bao gói. . . class CIRLCE Với khai báo này, bên ngoài có thể truy cập 2 thuộc tính mầu hay không? public int get. X() public void set. X(int xx) public int get. Y() public void set. Y(int yy) public int get. R() int x, y, r; int Border. Color; int Bk. Color; public void set. R(int r) public double get. Perimeter() public double get. Area() GV. Thân Văn Sử Chương 01 - Nhập môn OOP 32

Bao gói… class CASSETTE Play() Môi trường bên ngoài Stop() Đọc. Băng(); Rewind() Ghi.

Bao gói… class CASSETTE Play() Môi trường bên ngoài Stop() Đọc. Băng(); Rewind() Ghi. Băng(); Forward() XửLýNhiễu(); Record() Interfaces (public methods) GV. Thân Văn Sử Hành vi nội (private methods) Chương 01 - Nhập môn OOP 33

Bao gói… interface • Set of common methods of a class through them, an

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 Sử Chương 01 - Nhập môn OOP 34

2. 11 -Tính thừa kế-Inheritance • Các loại đối tượng khác nhau thường có

2. 11 -Tính thừa kế-Inheritance • Các loại đối tượng khác nhau thường có chung một số đặc điểm. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 35

Tính thừa kế… • Từ những lớp đối tượng đã có, ta có thể

Tính thừa kế… • Từ những lớp đối tượng đã có, ta có thể đặc tả lớp đối tượng mới, lớp mới sẽ mang những đặc tính của những lớ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. • Tồn tại mối quan hệ cha (lớp nền, base, parent)- con ( lớp dẫ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 điểm tái sử dụng thông tin của OOP. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 36

Tính thừa kế… quan hệ “là 1” Chỉ phải hiện thực bằng này Để

Tính thừa kế… quan hệ “là 1” Chỉ phải hiện thực bằng này Để được cái tương đương class PERSON class STUDENT ID_Num Name Year. Of. Birth Address get. ID_Num() set. ID_Num(new. ID). . . Roll. Num Score get. Score() set. Sore(new. Score). . . class STUDENT Roll. Num Score get. Score() set. Sore(new. Score). . . GV. Thân Văn Sử thừa kế tính chất riêng Chương 01 - Nhập môn OOP Con = Cha + một tí 37

2. 12 - Đa hình-Polymorphism • Khả năng có những hiện thực khác nhau

2. 12 - Đa hình-Polymorphism • Khả nă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 mộ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 lớp cha con để các code này khác nhau. • Đa hình tạo ra khả nă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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 38

Thí dụ về tính đa hình… class CIRCLE class Đàn. Bà int x, y,

Thí dụ về tính đa hình… class CIRCLE class Đàn. Bà int x, y, r; void Draw () { circle (x, y, r); } void Di. Chuyển(); class SHAPE class Người void Di. Chuyển(); void Draw () { } class RECTANGLE int x 1, y 1, x 2, y 2; void Draw () { rectangle(x 1, y 1, x 2, y 2); } class TRIANGLE class ĐànÔng void Di. Chuyển(); Đa hình tạo được tính mềm dẻo/linh động của chương trình GV. Thân Văn Sử Chương 01 - Nhập môn OOP int x 1, y 1, x 2, y 2 , x 3, y 3; void Draw () { line(x 1, y 1, x 2, y 2); line(x 2, y 2, x 3, y 3); line(x 3, y 3, x 1, y 1); } 39

2. 13 -Phân biệt Lớp, Thể hiện, Biến đối tượng • class: Hiện thực

2. 13 -Phân biệt Lớp, Thể hiện, Biến đối tượng • 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: Một thông tin về một đối tượng có trong bộ nhớ của chương trình. • Biến đối tượng (gọi tắt là đối tượng): • Pointer của đối tượng: Tham chiếu đến một thực thể của lớp. 7 5 obj 1000 “Hoa” 300 1000 Student obj= new Student(“Hoa”, 5, 7); GV. Thân Văn Sử Chương 01 - Nhập môn OOP 40

2. 14 - Thông điệp, thông báo - Message • Gửi thông báo: Yêu

2. 14 - Thông điệp, thông báo - Message • Gửi thông báo: Yêu cầu 1 đối tượng thực thi một hành vi. • Thí dụ: x là một HOCSINH < Name, Age> x. Viet. Ly. Lich(); String S= x. get. Name(); int n= x. get. Age(); GV. Thân Văn Sử Chương 01 - Nhập môn OOP 41

2. 15 - Gợi ý khi thiết kế một lớp • Ta cần biết

2. 15 - Gợi ý khi thiết kế một lớp • Ta cần biết những thông tin gì về một đối tượng thuộc lớp này. Dữ liệu mô tả. • Ta (bên ngoài) thực sự cầ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 lớ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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 42

Bài tập tại chỗ class Student void input() • Thiết kế lớp mô tả

Bài tập tại chỗ class Student void input() • Thiết kế lớp mô tả và xử lý một học sinh, biết rằng học sinh phải học 3 môn học. void output() char* get. Code() void set. Code(char* new. Code) char* get. Name() void set. Name(char* new. Name) int get. Score 1() void set. Score 1(int s 1) int get. Score 2() char code [12]; char name[30]; int score 1; int score 2; int score 3; void set. Score 2(int s 2) int get. Score 3() void set. Score 3(int s 3) float avg() GV. Thân Văn Sử Chương 01 - Nhập môn OOP 43

2. 16 - Gợi ý về phân tích thừa kế (1) Liệt kê đặc

2. 16 - Gợi ý về phân tích thừa kế (1) Liệt kê đặc điể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 tập giao là các lớp con. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 44

Thừa kế - Bài mẫu Phân tích phân cấp thừa kế cho các lớp:

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 điện máy <mã hàng, tên hàng, nhà sả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à sản xuất, giá, loại nguyên liệu> • Hàng thực phẩm <mã hàng, tên hàng, nhà sản xuất, giá, ngày sản xuất, ngày hết hạn dùng> GV. Thân Văn Sử Chương 01 - Nhập môn OOP 45

Bài giải • HangĐien. May < ma. H, ten. H, nsx, gia, tgbh, đa,

Bài giải • HangĐien. May < ma. H, ten. H, nsx, gia, tgbh, đa, cs > • Hang. Sanh. Su < ma. H, ten. H, nsx, gia, lnl > • Hang. Thuc. Pham < ma. H, ten. H, nsx, gia, ngsx, nhhd > Hang. Hoa ma. H ten. H nsx gia Hang. Dien. May tgbh đa cx GV. Thân Văn Sử Hang. Sanh. Su lnl Hang. Thuc. Pham ngsx nghhd Chương 01 - Nhập môn OOP 46

Thừa kế- Bài tập làm tại chỗ Phân tích phân cấp thừa kế cho

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, năm sinh, trình độ, trường đào tạo, chuyên môn, lương cb, phụ cấp chức vụ> • Nhân viên nghiên cứu <mã nv, tên nv, năm sinh, trình độ, trường đào tạo, chuyên môn, lương cb, phụ cấp độc hại> • Nhân viên phục vụ <mã nv, tên nv, năm sinh, trình độ, lương cb> Nhan. Vien. QL Nhan. Vien ma. NV, ten. NV ns, tđ, luong. Cb GV. Thân Văn Sử Nhan. VienĐĐT trường chuyênmôn Chương 01 - Nhập môn OOP pccv Nhan. Vien. NC pcđh 47

2. 17 - Gợi ý về cách giải bài toán theo OOP Program pick

2. 17 - Gợi ý về cách giải bài toán theo OOP Program pick nouns Problem Bao gói dữ liệu và hành vi thành class pick verbs GV. Thân Văn Sử properties Operation (function, method, behavior) class XX { type 1 prop 1; type 2 prop 2; . . . . type Method 1(. . . ) { }. . . }; void main() { XX x; // object variable x. Method(. . . ); } Chương 01 - Nhập môn OOP 48

Đề bài • Viết chương trình nhập, xuất 1 học sinh. Thông tin cần

Đề 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 cấ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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 49

Giải bài toán hướng POP với C++ GV. Thân Văn Sử Chương 01 -

Giải bài toán hướng POP với C++ GV. Thân Văn Sử Chương 01 - Nhập môn OOP 50

Giải bài toán hướng OOP Thành phần public là thành phần cho phép bên

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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 51

Đối chứng hai cách hiện thực GV. Thân Văn Sử Chương 01 - Nhập

Đối chứng hai cách hiện thực GV. Thân Văn Sử Chương 01 - Nhập môn OOP 52

Tóm tắt • POP: Xem dữ liệu và tác vụ rời nhau. • Các

Tóm tắt • POP: Xem dữ liệu và tác vụ rời nhau. • Các nhược điểm của POP – Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên theo cách “không tự nhiên”. – Khó tái sử dụng code. – Bảo mật kém. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 53

Tóm tắt • OOP: Xem dữ liệu và tác vụ là một thể thống

Tóm tắt • OOP: Xem dữ liệu và tác vụ là một thể thống nhất. • Ưu điểm của OOP: – Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên theo cách “ tự nhiên”. – Tính mo-đun hóa – Có cơ chế bảo mật dữ liệu. – Dễ tái sử dụng code. – Dễ thay đổi (pluggability) và dễ kiểm lỗi. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 54

Câu hỏi – Phần tự học • Trình bầy phương pháp lập trình POP.

Câu hỏi – Phần tự học • Trình bầy phương pháp lập trình POP. • Trình bầy phương pháp lập trình OOP. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 55

Trắc nghiệm (1) Với khai báo struct, ta vẫn có thể tạo cơ chế

Trắc nghiệm (1) Với khai báo struct, ta vẫn có thể tạo cơ chế bảo mật một thành phần dữ liệu. (a) Đúng (b) Sai. (2) Với khai báo struct, muốn thao tác đến dữ liệu bắt buộc phải thông qua một hàm. (a) Đúng (b) Sai. (3) Để tái sử dụng code C++, code được tái sử dụng phải được để trong một file và không có hàm main. (a) đúng (b) sai. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 56

Bài tập - Phân tích phả hệ thừa kế cho các khái niệm sau:

Bài tập - Phân tích phả hệ thừa kế cho các khái niệm sau: Window < x_position, y_position, width, height, back. Color, fore. Color> List. Box < x_position, y_position, width, height, back. Color, fore. Color, line. Count, line. Height, content. List, selected. Text> Button < x_position, y_position, width, height, back. Color, for. Color, title, icon> Combo. Box < x_position, y_position, width, height, back. Color, fore. Color, line. Count, line. Height, content. List, dropdown. Count, selected. Text> GV. Thân Văn Sử Chương 01 - Nhập môn OOP 57

Question 1 c OOP stands for a- Object Online Programming b- Object Of a

Question 1 c OOP stands for a- Object Online Programming b- Object Of a Program c- Object Oriented Programming GV. Thân Văn Sử Chương 01 - Nhập môn OOP 58

Question 2 What descriptions below are not OOP format ? a- Write the record

Question 2 What descriptions below are not OOP format ? a- Write the record for student Phúc b b- Write the record of student Phúc c- Hello Phúc, write your record. a GV. Thân Văn Sử Chương 01 - Nhập môn OOP 59

Question 3 What description below is POP format? a a- Draw. Circle(v); b- v.

Question 3 What description below is POP format? a a- Draw. Circle(v); b- v. Draw(); GV. Thân Văn Sử Chương 01 - Nhập môn OOP 60

Question 4 Identify the basic characteristics of OOP: a- Data hidding. b- Inheritance. c-

Question 4 Identify the basic characteristics of OOP: a- Data hidding. b- Inheritance. c- Polymorphism. d d- All of the above GV. Thân Văn Sử Chương 01 - Nhập môn OOP 61

Question 5 class is: a- Data which describes a concept. b- A code segment

Question 5 class is: a- Data which describes a concept. b- A code segment of a program. c c- Template of a set of objects which have the same properties and behaviors. d- All of the above are wrong. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 62

Question 6 Select incorrect statements: a- class = properties + methods b b- class

Question 6 Select incorrect statements: a- class = properties + methods b b- class = properties c c- class = functions that will operate on data GV. Thân Văn Sử Chương 01 - Nhập môn OOP 63

Question 7 Indentify the correct statement. a- Encapsulation: the packaging of attributes (properties) and

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 d- All of the above. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 64

Question 8 Identify the advantages of OOP a- High level modulization. b- Able to

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 e- All of the above GV. Thân Văn Sử Chương 01 - Nhập môn OOP 65

Question 9 C++ is a a a- Multiple inheritance OOP language. b- Single inheritance

Question 9 C++ is a a a- Multiple inheritance OOP language. b- Single inheritance OOP language. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 66

Question 10 Identify the correct keywords that will be used when a class is

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 c- class, private, public d- CLASS, PRIVATE, PUBLIC GV. Thân Văn Sử Chương 01 - Nhập môn OOP 67

Question 11 What is the correct syntax when a method is implemented outside the

Question 11 What is the correct syntax when a method is implemented outside the class declaration block. ab b- Data. Type Method (params) { <Code>} Data. Type Class. Name: : Method (params) { <Code>} GV. Thân Văn Sử Chương 01 - Nhập môn OOP 68

Question 12 Study error code below: class A { int x; public: void T()

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 missing ‘; ’ at the end of class e e- 5 declaration GV. Thân Văn Sử Chương 01 - Nhập môn OOP 69

Question 13 Identify the wrong statement a a- All objects of a program will

Question 13 Identify the wrong statement a 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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 70

Question 14 a In order to make easiness in maintaining an application. a- We

Question 14 a 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. GV. Thân Văn Sử Chương 01 - Nhập môn OOP 71

THANK YOU GV. Thân Văn Sử Chương 01 - Nhập môn OOP 72

THANK YOU GV. Thân Văn Sử Chương 01 - Nhập môn OOP 72