72
GV. Thân Văn Sử Chương 01- Nhập môn OOP Slide 1/54 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ờ)

  • Upload
    kasi

  • View
    54

  • Download
    2

Embed Size (px)

DESCRIPTION

Chương 02 NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Introduction to OOP (3 giờ). 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. Mục tiêu. - PowerPoint PPT Presentation

Citation preview

Page 1: 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 Slide 1/54

Chương 02NHẬP MÔN

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGIntroduction to OOP

(3 giờ)

Page 2: 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 Slide 2/54

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.

Page 3: 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 Slide 3/54

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

Page 4: 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 Slide 4/54

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.

Page 5: 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 Slide 5/54

2.1- Lập trình thủ tục

• POP- Procedure Oriented Programming.• Data structure + Algorithm = Program• Kỹ thuật POP:

Problem

Datastructure

Operation(function)

Program

struct XX{.....};

type Fun (XX x){.....}

void main(){ XX x; Fun(x);}

picknouns

pickverbs

Page 6: 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 Slide 6/54

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

Page 7: 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 Slide 7/54

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.

Page 8: 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 Slide 8/54

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

Tự nhiên

Person

Male Female

is a is a

struct PERSON{....} ;

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

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

Diễn đạtphải

tường minh không tự nhiên

Hiện thực

Page 9: 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 Slide 9/54

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;};

void main(){STUDENT x = { “Hoa”, 19, 5}; x.Age=1000; x.Score=-20; }

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

Page 10: 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 Slide 10/54

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.

Page 11: 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 Slide 11/54

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

Page 12: 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 Slide 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

Page 13: 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 Slide 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.

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

Page 14: 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 Slide 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

Page 15: 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 Slide 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.

Page 16: 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 Slide 16/54

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.

Page 17: 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 Slide 17/54

Software objects

Page 18: 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 Slide 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

Page 19: 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 Slide 19/54

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

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.

Page 20: 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 Slide 20/54

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.

Page 21: 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 Slide 21/54

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

Person

Male Female

is a is a

class PERSON{....} ;

class MALE: PERSON{<dữ liệu thêm>} ;

class FEMALE: PERSON{ <dữ liệu thêm>} ;

tự nhiên

Hiện thực

Page 22: 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 Slide 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.

Page 23: 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 Slide 23/54

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

Page 24: 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 Slide 24/54

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

Tái sử dụng code

Tái sử dụng code

Page 25: 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 Slide 25/54

2.5- Some OOP languages

• C++ ( Borland C++, Visual C++)

• Java

• C# ( C sharp)

• Visual Basic.

• .....

Page 26: 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 Slide 26/54

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

Page 27: 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 Slide 27/54

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

Page 28: 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 Slide 28/54

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áthóa

Khái quáthó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, PERSONlà các ADT

Page 29: 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 Slide 29/54

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

Page 30: 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 Slide 30/54

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.

Page 31: 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 Slide 31/54

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.

class NGƯỜITên

NămSinhTênNgườiYêu

....getTen()

getNamSinh()getTenNguoiYeu()

TiêuHóa()Nuốt()

Đi()Đứng()Chạy()Nhẩy().......

getTen()

getNamSinh()

getTenNguoiYeu()

Đi()

Đứng()

interfaces

Page 32: 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 Slide 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()

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?

Page 33: 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 Slide 33/54

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

methods) Hành vi nội (private methods)

Page 34: 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 Slide 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.

Page 35: 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 Slide 35/54

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.

Page 36: 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 Slide 36/54

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.

Page 37: 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 Slide 37/54

Tính thừa kế…

ID_NumNameYearOfBirthAddressgetID_Num()setID_Num(newID)......

class PERSON

RollNumScoregetScore()setSore(newScore)......

class STUDENT

quan hệ “là 1”

Chỉ phải hiện thựcbằng này

Để được cái tương đương

ID_NumNameYearOfBirthAddressgetID_Num()setID_Num(newID)......

class STUDENT

RollNumScoregetScore()setSore(newScore)......

thừakế

tínhchấtriêng

Con = Cha + một tí

Page 38: 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 Slide 38/54

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.

Page 39: 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 Slide 39/54

Thí dụ về tính đa hình…

class Ngườivoid DiChuyển();

class ĐànÔngvoid DiChuyển();

class ĐànBàvoid DiChuyển();

class SHAPEvoid Draw (){}

class CIRCLEint x,y,r;void Draw (){ circle (x,y,r);}

class RECTANGLEint x1,y1, x2, y2;void Draw (){ rectangle(x1,y1, x2, y2);}

class TRIANGLEint 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

của chương trình

Page 40: 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 Slide 40/54

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

1000 “Hoa”

obj 1000

Student obj= new Student(“Hoa”,5,7);

57

Page 41: 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 Slide 41/54

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.VietLyLich();

String S= x.getName();

int n= x.getAge();

Page 42: 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 Slide 42/54

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.

Page 43: 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 Slide 43/54

Bài tập tại chỗ

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

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

Page 44: 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 Slide 44/54

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.

Page 45: 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 Slide 45/54

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>

Page 46: 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 Slide 46/54

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

maHtenHnsxgia

HangDienMay

tgbhđacx

HangSanhSu

lnl

HangThucPham

ngsxnghhd

Page 47: 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 Slide 47/54

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>

NhanVien

maNV, tenNVns, tđ, luongCb

NhanVienĐĐT

trườngchuyênmôn

NhanVienQL

pccv

NhanVienNC

pcđh

Page 48: 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 Slide 48/54

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(...);}

picknouns

pickverbs

Bao gói dữ liệu và hành vi thành class

Page 49: 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 Slide 49/54

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

Page 50: 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 Slide 50/54

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

Page 51: 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 Slide 51/54

Giải bài toán hướng OOP

Thành phần public là thành phần cho phépbên ngoài truy cập.

Page 52: 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 Slide 52/54

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

Page 53: 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 Slide 53/54

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.

Page 54: 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 Slide 54/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”.– 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.

Page 55: 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 Slide 55/54

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.

Page 56: 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 Slide 56/54

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.

Page 57: 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 Slide 57/54

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>

Page 58: 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 Slide 58/54

Question 1

OOP stands for

a- Object Online Programming

b- Object Of a Program

c- Object Oriented Programmingc

Page 59: 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 Slide 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

Page 60: 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 Slide 60/54

Question 3

What description below is POP format?

a- DrawCircle(v);

b- v.Draw();

a

Page 61: 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 Slide 61/54

Question 4

Identify the basic characteristics of OOP:

a- Data hidding.

b- Inheritance.

c- Polymorphism.

d- All of the aboved

Page 62: 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 Slide 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

Page 63: 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 Slide 63/54

Question 6

Select incorrect statements:

a- class = properties + methods

b- class = properties

c- class = functions that will operate on data

b

c

Page 64: 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 Slide 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

Page 65: 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 Slide 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 abovee

Page 66: 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 Slide 66/54

Question 9

C++ is a

a- Multiple inheritance OOP language.

b- Single inheritance OOP language.

a

Page 67: 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 Slide 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

Page 68: 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 Slide 68/54

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

Page 69: 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 Slide 69/54

Question 12

Study error code below:class A{ int x; public: void T() { } }What line will cause an error?a- 1b- 2c- 3d- 4e- 5e missing ‘;’ at the end of class

declaration

Page 70: 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 Slide 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

Page 71: 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 Slide 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

Page 72: 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 Slide 72/54

THANK YOU