1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nhập Môn Lập Trình Hướng Đối Tượng Introduction to OOP (3 giờ)

72 441 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 72
Dung lượng 463 KB

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

Nội dung

• Ư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... Diễn đạt hướng đối tượng• Diễn đạt tác vụ theo hướng thủ tục : TênTác

Trang 1

Chương 02

NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Introduction to OOP

(3 giờ)

Trang 2

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

Trang 3

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

Trang 4

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.

Trang 5

2.1- Lập trình thủ tụ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

Trang 6

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”

Diễn đạt nào tự nhiên hơn?

“x ơi, viết lý lịch đi em”

VietLyLich(x); x.VietLyLich();

Trang 7

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ó

khăn trong biểu diễn lẫn tính dễ hiểu.

• Thí dụ ở slide sau.

Trang 8

Nhược điểm của POP

} ;

struct MALE { PERSON Data <dữ liệu thêm>

} ;

struct FEMALE { PERSON Data <dữ liệu thêm>

} ;

Diễn đạt phải tường minh

 không

tự nhiên

Hiện thực

Trang 9

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.

x.Age=1000;

x.Score=-20;

}

Bạn nghĩ sao về 2 tác vụ này?

Trang 10

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.

Trang 11

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

Trang 12

• Real-world objects share two

characteristics: They all have state and

behavior

Trang 13

• Identifying the state and behavior for real-world

objects is a great way to begin thinking in terms of object-oriented programming

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

Trang 14

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

Trang 15

How to describe a real-object? …

states (on and off) and two possible behaviors (turn on, turn off).

(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

Trang 16

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

Trang 17

Software objects

Trang 18

• 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

Trang 19

2.3-Diễn đạt hướng đối tượng

• 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ế?

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

Trang 20

Diễn đạt hướng đối tượng

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

TênTácVụ(ĐốiTượngDữLiệu);  Tổ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

tự nhiên hơn vì giống tự nhiên hơn.

Trang 21

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.

Hiện thực

Trang 22

Benefits software objects

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

Trang 23

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

Trang 24

Thí dụ về tái sử dụng code

Tái sử dụng code

Tái sử dụng code

Trang 25

2.5- Some OOP languages

Trang 26

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

Trang 27

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

Trang 28

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

Khái quát hóa

Khái quát hóa

1 5 7 -3 8 Số nguyên ( int )

Người ( PERSON )

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

Danh từ chung trong ngôn ngữ tự nhiên

attributes

int, NGUOI, PERSON

là các ADT

Trang 29

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 function members

Trang 30

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.

Trang 31

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

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.

class NGƯỜI

Tên 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

Trang 32

public double getPerimeter()

public double getArea()

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?

Trang 33

Bao gói…

class

CASSETTE

ĐọcBăng();

GhiBăng();

XửLýNhiễu();

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

Môi trường bên

ngoài

Interfaces (public

(private methods)

Trang 34

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 36

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.

Trang 37

Tính thừa kế…

ID_Num Name YearOfBirth Address

getID_Num() setID_Num(newID)

class PERSON

RollNum Score

getScore() setSore(newScore)

ID_Num Name YearOfBirth Address

getID_Num() setID_Num(newID)

class STUDENT

RollNum Score

getScore() setSore(newScore)

thừa kế

tính chất riêng

Con = Cha + một tí

Trang 38

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

Trang 39

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

Trang 40

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

Trang 41

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.

Trang 42

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 

Trang 43

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

Trang 44

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.

Trang 45

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>

Trang 47

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 >

NhanVienQL

pccv

NhanVienNC

pcđh

Trang 48

2.17- 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

Trang 49

Đề 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

Trang 50

Giải bài toán hướng POP với C++

Trang 51

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.

Trang 52

Đối chứng hai cách hiện thực

Trang 53

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.

Trang 54

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

Trang 55

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.

Trang 56

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.

Trang 57

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,

backColor, foreColor>

- ListBox < x_position, y_position, width, height,

backColor, foreColor, lineCount, lineHeight, contentList, selectedText>

- Button < x_position, y_position, width, height,

backColor, forColor, title, icon>

- ComboBox < x_position, y_position, width, height,

backColor, foreColor, lineCount, lineHeight, contentList, dropdownCount, selectedText>

Trang 58

Question 1

OOP stands for

a- Object Online Programming

b- Object Of a Program

c- Object Oriented Programming

c

Trang 59

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

Trang 62

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

Trang 63

Question 6

Select incorrect statements:

a- class = properties + methods

Trang 64

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

Trang 65

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

Trang 66

Question 9

C++ is a

a- Multiple inheritance OOP language.

b- Single inheritance OOP language.

a

Trang 67

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

Trang 68

Question 11

What is the correct syntax when a

method is implemented outside the class declaration block.

a- DataType Method (params)

{ <Code>}

b- DataType ClassName::Method (params) { <Code>}

b

Trang 70

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

Trang 72

THANK YOU

Ngày đăng: 25/08/2017, 09:49

TỪ KHÓA LIÊN QUAN

w