ườ
ế
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#?