1. Trang chủ
  2. » Công Nghệ Thông Tin

CHƯƠNG 1: NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG potx

12 421 0

Đ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 12
Dung lượng 786,02 KB

Nội dung

{ 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 6 nhau hoặc một pointer.. y Một chương trình là một trật tự các lời

Trang 1

CHƯƠNG 1:

NHẬP MÔN LẬP TRÌNH

HƯỚNG ĐỐI TƯỢNG

1

MỤC TIÊU

yNhậ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

yPhân tích, thiết kế và hiện thực được một chương trình theo phương pháp hướng đối tượng

2

yNhận diện một số ngôn ngữ OOP

yNhận biết các khái niệm cơ bản của OOP

NỘI DUNG CHI TIẾT

{ ĐỐI TƯỢNG

3

{ HÀNH VI

{ THÔNG ĐIỆP

{ DỮ LIỆU

{ ĐẶC TÍNH

LẬP TRÌNH THỦ TỤC

y POP- Procedure Oriented Programming.

{ Phân công việc → những việc nhỏ hơn { Là các chương trình con

{ Thiết kế top-down

y Kỹ thuật POP:

Program struct XX

4

Problem

Data structure

Operation (function)

{

};

type Fun (XX x) {

};

void main() { X x;

Fun(x);

};

pick nouns

pick verbs

Data structure + Algorithm = Program

Trang 2

NHƯỢC ĐIỂM CỦA POP

yDiễ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”

VietLyLich(x);

x VietLyLich();

5

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

x.VietLyLich();

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

NHƯỢC ĐIỂM CỦA POP

yKhó 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

6

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.

yBả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?

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

7

OOP

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.

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

y OOP – Object Oriented Programming.

y Chương trình là sự hoạt động của các đối tượng Æ Giống tự nhiên.

y Đố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

8

một hành vi mà đối tượng này có khả năng.

y 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 3

yTừ những đối tượng, sự vật, sự kiện, tạo nên chương

trình

yThiết kế bottom-up

9

Đối tượng = Dữ liệu + Hành vi

ƯU ĐIỂM CỦA OOP

y Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên.

Tự nhiên Person

class PERSON {

} ;

Hiện thực

10

is a is a class MALE: PERSON

{<dữ liệu thêm>

} ;

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

} ;

tự nhiên

yCó tính bảo mật cao: Bên ngoài không thể tùy tiện

truy cập một dữ liệu thuộc tính

11

ƯU ĐIỂM CỦA OOP

12

Tái sử dụng code

Tái sử dụng code

Trang 4

SỰ KHÁC BIỆT

y Theo thủ tục ¾ Hướng đối tượng

13

Rút tiền (withdraw), gửi tiền

(deposit), chuyển tiền (transfer)

Khách hàng (customer), tiền (money), tài khoản (account)

SƠ LƯỢC VỀ OOP

Đối tượng = Dữ liệu + Hành vi

14

ĐỐI TƯỢNG

yMột đối tượng như là một hộp đen,

mà chi tiết bên trong được dấu kín

yCác đối tượng giao tiếp với nhau

15

Các đối tượng giao tiếp với nhau thông qua việc truyền các thông điệp

(messages)

yThông điệp được nhận bởi các hành vi

của đối tượng

girl

class object

16

Lan Cúc Trúc Mai

Trang 5

DỮ LIỆU (data):

-Xinh đẹp -Dịu dàng -

17

Mai

HÀNH VI (behavior ):

-mua sắm -làm việc nhà -…

HÀNH VI (BEHAVIOR)

yThao tác (operation)

yPhương thức (method)

yHàm (function)

yThủ tục (procedure)

18

DỮ LIỆU (DATA)

yThông tin (information)

yTính chất (property)

yThuộc tính (attribute)

yTrường (field)

19

NHỮNG GÌ LÀ ĐỐI TƯỢNG

y Vật có thể sờ mó được

(Tangible things)

yVai trò (Roles)

S iệ ả ì h iế

¾ Như là xe hơi, máy in,

¾ Công nhân, người chủ,

20

y Sự việc xảy ra, tình tiết

(Incidents)

y Sự tương tác

(Interactions)

ySự mô tả (Specifications)

¾ Chuyến bay, tràn số,

¾ Ký kết thỏa ước, mua hàng,

¾ Màu, hình dạng

Trang 6

THÔNG ĐIỆP

yGửi thông điệp: Yêu cầu 1 đối tượng thực thi một

hành vi

yThí dụ:

x là một HOCSINH < Name, Age>

i i h()

21

x.VietLyLich();

String S= x.getName();

int n= x.getAge();

MỘT SỐ ĐẶC TÍNH

22

TÍNH ĐÓNG GÓI (ENCAPSULATION)

yDữ liệu và thao tác được nhóm lại với nhau

Thực chất là sự ghép chung những hiểu

Account

23

chung những hiểu biết về thế giới thực

→ Có sự đồng nhất giữa dữ liệu và thao tác trên dữ liệu

Account

Withdraw

Deposit

Transfer

TÍNH THỪA KẾ (INHERITANCE)

yTạo ra một kiểu dữ liệu mới

từ kiểu đã có

yNhằm sử dụng lại, và bổ sung

hữ ì ầ hiế

24

những gì cần thiết

yThực chất là sự phân lớp

(classification) trong việc

thiết kế hệ thống theo hướng đối tượng

Trang 7

TÍNH THỪA KẾ (INHERITANCE)

yTheo ngôn ngữ lớp, sự thừa kế có nghĩa là một lớp

thừa kế các đặc tính của lớp khác

yĐây chính là quan hệ “là một” (“is a”)

25

A car is a vehicle

A teacher is a person

A dog is an animal

TÍNH ĐA HÌNH (POLYMORPHISM)

yNhiều đối tượng cùng chia sẻ đặc tính chung, nhưng

có những tác động khác nhau

yCó cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng khác nhau

yThực chất là tính đa dạng (many form)

26

yThực chất là tính đa dạng (many form)

yĐể hiện thực được tính đa hình, ngôn ngữ đối tượng

có đặc tính như overload, override

Overloaded và Overridden methods ?

yOverloaded methods:

{ Nhằm cung cấp các dạng khác nhau của hành vi, nhưng vẫn có

cùng tên gọi.

yOverridden methods:

{ Hiện thực lại hành vi đã có của tổ tiên

27

{ Hiện thực lại hành vi đã có của tổ tiên

{ Phải có cùng tên và trùng mọi yếu tố tạo nên hành vi này.

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

yC++ ( Borland C++, Visual C++)

yC# ( C sharp)

yVisual Basic

28

y

Trang 8

yC++, 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

yJava (Sun), C# (Microsoft): chỉ hỗ trợ OOP, hàm

i hải ằ t ột lớ Chỉ hỗ t đ thừ kế

29

main phải nằm trong một lớp Chỉ hỗ trợ đơn thừa kế

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

Fortran (1954)

Algol (1958) LISP (1957)

Scheme (1975)

CPL (1963), U Cambridge Combined Programming Language

30

BCPL (1967), MIT Basic Combined Programming Language

B (1969), Bell Labs

C (1970), Bell Labs C++ (1983), Bell Labs Java (1995), Sun

Objective C

Phương pháp giải bài toán theo OOP

properties

Program class XX { type1 prop1;

type2 prop2;

type Method1( )

pick

nouns

31

Problem

Operation (function, method, behavior)

type Method1( ) {

}

};

void main() { XX x; // object variable

x.Method( );

};

pick

verbs

Bao gói dữ liệu và

hành vi thành class

SO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNH

yViết chương trình nhập, xuất1 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)

yDanh từ: Học sinh Æ cấu trúc HS

32

yĐộ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.

Trang 9

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

33

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

34

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

35

TÓM TẮT

yPOP: Xem dữ liệu và tác vụ rời nhau

yCá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 cac1h “không tự nhiên”.

{ Khó tái sử d ng code

36

{ Khó tái sử dụng code.

{ Bảo mật kém.

Chương trình=cấu trúc dữ liệu + thuật toán

Trang 10

TÓM TẮT

yOOP: Xem dữ liệu và tác vụ là một thể thống nhất

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

{ Dễ tái sử d ng code

37

{ Dễ tái sử dụng code.

{ Có cơ chế bảo mật dữ liệu.

Đối tượng = Dữ liệu + Hành vi

TÓM TẮT

TRONG OOP

yĐối tượng phải thuộc một lớp (class)

{TÍNH ĐÓNG GÓI (ENCAPSULATION)

38

{ TÍNH THỪA KẾ (INHERITANCE)

{ TÍNH ĐA HÌNH (POLYMORPHISM)

y Lập trình OOP cũng tương tự như lập trình POP nhưng mô tả bài toán

dưới dạng các class, các tác vụ xử lý dữ liệu thành các hành vi của

class.

y Khai báo class cũng tương tự như khai báo struct nhưng có khác

struct ở chỗ đưa các tác vụ thao tác lên struct vào trong class và gọi

chúng là các methods của lớp

struct StructName class ClassName public

39

{

<data>

};

Type1 Func1 (StructName stru)

{ <code>}

Type2 Func2 (StructName stru)

{<code>}

các hàm đều toàn cục

{

<data>

Modifier : Type1 Func1 ()

{ <code>}

Modifier : Type2 Func2 ()

{ <code>}

};

Chỉ có method public là toàn cục

public private protected

CÂU HỎI PHẦN TỰ HỌC

TỰ DIỄN TẢ THEO Ý BẢN THÂN

yTrình bày phương pháp lập trình POP

yTrình bày phương pháp lập trình OOP

40

Trang 11

BÀI TẬP TẠI LỚP

y HÃY PHÂN TÍCH CÁC BÀI TẬP SAU, XÁC ĐỊNH ĐỐI

TƯỢNG CẦN QUAN TÂM LÀ GÌ, THÀNH PHẦN DỮ LiỆU

VÀ THÀNH PHẦN HÀNH VI CỦA CÁC ĐỐI TƯỢNG ĐÓ,

TỪ ĐÓ XÂY DỰNG THÀNH LỚP (CHƯA YÊU CẦU VIẾT

CODE).

41

1) Nhập vào 3 số thực Kiểm tra xem đó có phải là 3 cạnh của

tam giác hay không Nếu phải, hãy cho biết tam giác đó là

tam giác gì (vuông, cân, đều, thường) và tính diện tích tam

giác đó.

2) Nhập vào 3 số ngày, tháng, năm Kiểm tra xem ngày tháng

năm đó có hợp lệ không? Nếu có in ra ngày hôm sau.

3) Nhập vào 1 ma trận mxn Tính tổng các phần tử nằm trên

đường chéo chính.

BÀI TẬP TẠI LỚP

4. Viết chương trình tính tổng, hiệu, tích, thương của

2 phân số nhập từ bàn phím In ra kết quả dưới dạng tối giản

5. Viết chương trình giải phương trình bậc 1: ax+b=0

ới b là ố th hậ từ bà hí

42

với a,b là 2 số thực nhập từ bàn phím

6. Viết chương trình nhập hồ sơ học sinh của lớp học gồm: tên, tuổi, điểm trung bình cả năm

{ In ra tuổi lớn nhất, tuổi nhỏ nhất của lớp, { Học sinh có điểm trung bình lớn nhất, học sinh có điểm trung bình nhỏ nhất

{ In danh sách theo thự tự của tên.

BÀI TẬP TẠI LỚP

7 Nhập vào tọa độ 2 điểm trong mặt phẳng Tính và in ra tọa

độ trung điểm của chúng.

8 Nhập vào thời gian bắt đầu chạy và thời gian đến của một

vận động viên Cho biết thời gian chạy của vận động viên

đó.

43

9 Tính diện tích của hình tròn, hình vuông, hình chữ nhật,

hình tam giác.

10 Nhập danh sách n học sinh gồm họ lót, tên, ngày sinh,

điểm văn, toán, lí, hoá.

a) In ra màn hình họ tên của học sinh có điểm trung bình

cao nhất.

b) In ra màn hình danh sách được xếp theo điểm trung

bình giảm dần.

BÀI CHUẨN BỊ TRƯỚC

{ Kiểu dữ liệu { Biến, hằng, biểu thức, phép toán { Câu lệnh điều kiện: if, switch { Câu lệnh lặp: for while do while

44

{ Câu lệnh lặp: for, while, do while { Hàm: khai báo, truyền tham số, gọi hàm,…

{ Mảng 1 chiều, 2 chiều { Chuỗi ký tự { Cấu trúc struct { Con trỏ

yLàm bài tập về nhà

Trang 12

THANK YOU

Ngày đăng: 27/07/2014, 13:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w