ườ

ế

Tr

ng ĐH Kinh T  Tp.HCM

ọ Khoa Tin H c Qu n Lý

ƯỚ

Ố ƯỢ

L P TRÌNH H

NG Đ I T

NG 1

CHƯƠNG 1: TỔNG QUAN

 Trong chương này sinh viên sẽ được:

 Tìm hiểu các khái niệm cơ bản của lập trình

hướng đối tượng

 Tìm hiểu các đặc điểm của lập trình hướng đối

tượng

 Thiết kế theo hướng đối tượng

Mục tiêu

Nội dung

1. Các khái niệm cơ bản

2. Các đặc điểm của OOP

3. Thiết kế theo hướng đối tượng

 Sự tiến hóa của các phương pháp lập trình:

 Lập trình không cấu trúc (Unstructured

programming)

 Lập trình thủ tục (Procedural programming)  Lập trình đơn thể (Modular programming)  Lập trình hướng đối tượng (Object oriented

programming)  ………………

Tại sao phải lập trình hướng đối tượng?

 Một dãy các lệnh đơn giản

Lập trình không cấu trúc

được viết trong chương trình chính (Main program).

Program

 Các lệnh này cùng thao tác trên một dữ liệu (data) toàn cục.

Main Program

 Nhược điểm: Chỉ thích hợp cho các chương trình nhỏ

 Dẫn đến lập trình thủ tục

Data

 Chương trình có cấu

Lập trình thủ tục

trúc hơn

Program

Main Program

 Kiểm tra lỗi dễ hơn  Chương trình chính có nhiệm vụ truyền dữ liệu cho các thủ tục

 Nhóm các thủ tục

theo các chức năng: Lập trình đơn thể

Data

Procedure2 Procedure3 Procedure1

Main Program(Also a module)

Data

Module1

Module2

+ Data

Data1

+ Data

Data2

Procedure2

Procedure3

Procedure1

Lập trình đơn thể

Chương trình chính gọi phối hợp các thủ tục trong các module khác nhau và truyền dữ liệu như là các tham số

Object1

Dữ liệu và chức năng thao tác trên dữ liệu được gom lại thành một đối tượng

Data1+Procedures1

Chương trình không dựa trên chức năng mà dựa trên đối tượng

Object2

Data2 + Procedures2

Object3

Data3 + Procedures3

Object4

Data4 + Procedures4

Lập trình hướng đối tượng

 Lập trình hướng đối tượng (Object Oriented

Programming - OOP) là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình.

 Khi viết chương trình theo phương pháp hướng đối

tượng ta phải trả lời các câu hỏi:  Chương trình liên quan tới những đối tượng nào?  Mỗi đối tượng cần có những dữ liệu và thao tác nào?  Các đối tượng quan hệ với nhau như thế nào trong

chương trình?

Lập trình hướng đối tượng

Order

Product

Ship via

Lập trình hướng đối tượng

 Đối tượng (Object):

 Trong thế giới thực, khái niệm đối tượng được hiểu

như là một thực thể: người, vật, ….

 Mỗi đối tượng sẽ tồn tại trong một hệ thống và có ý

nghĩa nhất định trong hệ thống.

 Đối tượng được đặc trưng bởi các thuộc tính, và các

hoạt động (hành vi, thao tác, phương thức)

Đối tượng

 Các thuộc tính

 Thành phần dữ liệu của một đối tượng

 Xác định các đặc trưng mô tả của một đối tượng

Ví dụ: con chó của bạn có màu nâu, ĐTDĐ của bạn

thuộc hãng Nokia

 Các phương thức

 Thành phần xử lý của một đối tượng

 Xác định các hành vi của một đối tượng

Ví dụ: con chó đi, ĐTDĐ nhắn tin SMS

Đối tượng

Đối tượng =

Dữ liệu + Các phương thức

Đối tượng

=

+

Hoặc:

Đối tượng =

Trạng thái +

Hành vi

+

=

UNIQUE OBJECT IDENTIFIER (OID)

I am an object!

State

ATTRIBUTES NAME MARK DOB JOB

14/02/1964 LECTURER

Methods

BEHAVIOUR   CHANGE JOB GET AGE

Đối tượng

 Các đối tượng có các đặc tính tương tự nhau được

gom chung lại thành lớp.

 Lớp là một khung mẫu (template, blueprint, prototype)

để tạo đối tượng.

 Ví dụ: lớp “Mèo” xác định các thuộc tính và các phương

thức của một con mèo,

 Nhưng lớp “Mèo” không phải là một đối tượng.

 Một đối tượng được tạo từ một lớp  Là một minh họa của một lớp.

 Ví dụ: bạn là một minh họa của lớp “SinhViên”, con mèo

của bạn là một minh họa của lớp “Mèo”

Lớp

Lớp

Lớp và đối tượng

Sự khác biệt giữa một lớp và một đối tượng:  Một lớp định nghĩa một thực thể, trong khi đó một đối

tượng là một trường hợp của thực thể ấy.

 Đối tượng là một mô hình thực, trong khi lớp là một mô hình khái niệm định nghĩa tất cả các thuộc tính và các phương thức cần thiết của một đối tượng.

 Tất cả các đối tượng thuộc về cùng một lớp có cùng

các thuộc tính và các phương thức.

Lớp và đối tượng

Lớp và đối tượng

Lớp và đối tượng

Object

Class

Cô gái

H ngồ

Huệ

H ngươ

Hoa

Lớp và đối tượng

Các đặc điểm của OOP

Đặc điểm quan trọng của OOP:  Tính trừu tượng (abstraction)  Tính đóng gói (encapsulation)  Tính đa hình (polymorphism)  Tính kế thừa (inheritance)

Các đặc điểm của OOP

Tính trừu tượng (abstraction)  Là cách nhìn đơn giản hóa về một đối tượng mà trong đó chỉ bao gồm các đặc điểm được quan tâm và bỏ qua những chi tiết không cần thiết.

 Đây là khả năng của chương trình bỏ qua hoặc không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết.

Các đặc điểm của OOP

Professor

Student

Course Offering (9:00 AM, Monday-Wednesday-Friday)

Course (e.g. Algebra)

Các đặc điểm của OOP

Các đặc điểm của OOP

Các đặc điểm của OOP

Tính đa hình (polymorphism)  Là khả năng gửi một thông điệp chung tới nhiều đối tượng mà mỗi đối tượng lại có cách xử lý riêng theo ngữ cảnh của nó.

 Ví dụ:

o Định nghĩa 2 đối tượng “hinh_vuong” và

“hinh_tron” có một phương thức chung là “ve” o Khi gọi phương thức này thì nếu đối tượng là

“hinh_vuong” nó sẽ vẽ theo cách khác với khi đối tượng là “hinh_tron”

Các đặc điểm của OOP

Các đặc điểm của OOP

Tính đa hình (polymorphism)  Trong các ngôn ngữ lập trình OOP, tính đa hình thể hiện qua khả năng cho phép mô tả những phương thức có tên giống nhau trong các lớp khác nhau.  Đặc điểm này giúp người lập trình không phải viết những cấu trúc điều khiển rườm rà trong chương trình, các khả năng khác nhau của thông điệp chỉ thực sự đòi hỏi khi chương trình thực hiện.

Các đặc điểm của OOP

Các đặc điểm của OOP

Tính đóng gói (encapsulation)  Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng.  Chỉ có các phương thức nội tại của đối tượng cho phép

thay đổi trạng thái của nó.

 Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã.

 Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

OBJECT OBJECT

GET AGE

G E T A G E

M E T H O D

NAME: MARK 14/02/64 DOB: LECTURER JOB:

CHANGE JOB

M E T H O D

C H A N G E J O B

Các đặc điểm của OOP

Các đặc điểm của OOP

Tính kế thừa (inheritance)  Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.

 Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

Các đặc điểm của OOP

Các đặc điểm của OOP

Tính kế thừa (inheritance)  Kế thừa hình thành nên phân cấp các lớp  Lợi ích của kế thừa:

o Chia sẻ các thuộc tính và phương thức (tránh viết lại

code)

o Mô hình hóa sự tổng quát hóa và chuyên biệt hóa

trong thế giới thực

o Viết các thành phần phần mềm chung, tổng quát (lớp cha/ lớp cơ sở), sau đó mở rộng/ dẫn xuất ra các lớp con/ dẫn xuất cần thiết

Các đặc điểm của OOP

 Lập trình hướng đối tượng là quy trình tạo một chương trình dựa theo một thiết kế hướng đối tượng.

 Phương pháp này tiến hành tiến trình phân tích, thiết kế chương trình thông qua việc xây dựng các đối tượng có sự tương hợp với các đối tuợng thực tế.

 Điều này làm cho việc sửa đổi dễ dàng hơn khi

cần thay đổi chương trình.

Thiết kế theo hướng đối tượng

Vì sao chọn C#?

 C# được coi là một ngôn ngữ hướng đối tượng vì nó cung cấp các tiện ích đặc biệt cho việc tổ chức chương trình và dữ liệu theo mô hình hướng đối tượng.

Vì sao chọn C#?