Bài giảng Lập trình hướng đối tượng - Chương 1: Giới thiệu lập trình hướng đối tượng cung cấp cho người học các kiến thức: Một số Mô thức lập trình, khái niệm Lớp và Đối tượng, ba nguyên tắc lập trình hướng đối tượng, một số phần mềm được viết theo hướng đối tượng. Mời các bạn cùng tham khảo.
Trang 1Click to edit Master subtitle style
GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM
CHƯƠNG 1:
Trang 2Một số Mô thức lập trình
Ba nguyên tắc lập trình hướng đối tượng
Một số phần mềm được viết theo hướng đối
tượng
NỘI DUNG
Trang 3Object Oriented Programming (OOP) là mô thức
quan trọng
Tất cả ngôn ngữ hiện đại điều object oriented hay hỗ trợ object và class
Các framework, library, API hiện đại đều object oriented
• NET Framework Class Library (C#), Java API classes (Java),
• Laravel (PHP), Rails (Ruby),
• STL (C++), Django (Python), Android, …
Bất kỳ ai bắt đầu công việc phát triển phần mềm
nên làm quen với OOP và OO modeling
Tại sao OOP?
Trang 4MỘT SỐ MÔ THỨC LẬP TRÌNH
Trang 5Programming paradigm: Mô thức/Mô hình lập trình
Cách chúng ta “nhìn” về việc xây dựng các chương trình máy tính
Trang 6Mô thức “Lập trình Tuần tự” với ý tưởng chủ
(explicit)) có thứ tự (step by step) dùng để thay
đổi trạng thái chương trình
Imperative programming
Input data
Process
Output data
Trang 7Ví dụ
DATA SEGMENT
A DB 1,2,3,4,5,6,7,8,9,10 DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA MOV DS,AX MOV CL,10 LEA BX,A MOV AH,00 MOV AL,00
L1:
ADD AL,BYTE PTR[BX]
INC BX DEC CL CMP CL,00
JNZ L1
MOV AH,4CH INT 21
END START
CODE ENDS
Trang 8Có những đoạn mã được viết nhiều lần
Ngôn ngữ: Assembly, Pascal, C, …
Imperative programming
Trang 9Mô thức “Lập trình Cấu trúc” là dạng
Imperative programming, nhưng Chương trình
có tổ chức, cấu trúc logic hơn:
if length(p.name)) > 5
{ addToList(result, toUpper(p.name));
}
} return sort(result);
Trang 10Khó phân công cho nhiều người cùng viết
Dữ liệu được “thả tự do”
Có những đoạn mã viết nhiều lần
Structured programming
Trang 11Mô thức “Lập trình Thủ tục” kế thừa structured
trình con (procedure/function) chứa các đoạn
mã thường sử dụng
chương trình con (procedure) và các chương trình con gọi nhau để giải quyết bài toán
Procedural programming
Trang 12Ví dụ
public static int Factorial(int n)
{ int result = 1;
for (int i = 2; i <= n; i++) result = result * i;
Trang 13Đặc điểm
Tập trung vào “action” của chương trình, không phải data
Phương pháp top-down, làm mịn dần:
Chia chương trình lớn thành các chương trình con, …
Biến toàn cục (global variable) và Biến cục bộ (local variable)
Trang 14Mô thức “Lập trình Hướng đối tượng” cải biên
procedure programming bằng cách đưa vào ý
objects giao tiếp với nhau để giải quyết bài
toán đặt ra
Object oriented programming
Đối tượng = Dữ liệu + Hàm thao tác trên Dữ liệu
Trang 16Ví dụ
class Program
{ static void Main(string[] args) {
InformaticsClass a = new InformaticsClass();
a Input();
Console.WriteLine("No " + a NumStudents());
} }
Trang 17Đặc điểm:
Tập trung xung quanh khái niệm object (tập trung vào
dữ liệu và những gì làm với dữ liệu đó)
• Tập trung cả Dữ liệu và Hàm
• Tổ chức code theo cách (mô phỏng) hoạt động của thế giới thực
• Mô hình hóa các đối tượng trong thế giới thực vào máy tính
Trang 19KHÁI NIỆM LỚP VÀ ĐỐI TƯỢNG
Trang 20Trong thế giới thực có nhiều đối tượng:
Đối tượng (object)
Trang 21Hoạt động thường ngày:
Sáng ra khỏi gường, dùng bàn chảy đánh răng,
ăn sáng và uống cafe,
đến công ty làm việc,
đến nhà hàng ăn trưa, giải lao,
rồi quay về công ty làm viêc, …
tối vào bếp nấu ăn, xem ti vi/ đọc sách, lên gường ngủ.
Life là quá trình tương tác giữa các đối tượng với nhau
Ý tưởng: Tiến trình viết phần mềm là quá trình mô hình
hóa từ thực tế vào máy tính
Đối tượng (object)
Trang 22Trong thế giới thực, đối tượng (object) thường có
Một số thuộc tính cấu tạo nên đối tượng Một số hành vi
Đối tượng (object)
Trang 23OOP là phương pháp chuyển các vấn đề thế giới thực (đối tượng thực) sang các mô hình (đối tượng trên máy tính) có thể giải quyết trên máy tính
Trong OOP, Đối tượng (object): Bất kỳ thứ gì có thể được mô
hình thành:
Dữ liệu (data/field/property/attribute/state)
Hàm (function/method/behaviour/operation) thao tác trên dữ
liệu
Trong OOP, Đối tượng (object) là biến có Tập dữ liệu và Hàm
Đối tượng (object)
Trang 24Real world object: Car
Properties: color, make, model, year, …
Trang 25Lớp (class): Nhiều đối tượng cụ thể “giống nhau”
được nhóm thành một loại/loài hay lớp (class)
(blueprint) để tạo đối tượng
Lớp (class)
Trang 26Lớp (class) – ví dụ
Trang 27Trong OOP, Lớp (class) dùng để định nghĩa/tạo
ra kiểu mới, từ đó tạo ra đối tượng, lớp có
Dữ liệu (data/field/property/attribute/state), dùng biến lưu trữ
Các hàm (function/method/behaviour) thao tác trên dữ liệu
Lớp (class)
Trang 28VD: Để tạo Car, Lấy Car class, dựa trên đó tạo Car
Trang 29Car a = new Car();
Car b = new Car();
Car c = new Car();
} }
Trang 303 NGUYÊN TẮC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 31Đóng gói (Encapsulation ) và Giao diện ( Interface )
Ẩn chi tiết của lớp (Đóng gói), chỉ cung cấp các phương thức cần thiết để dùng (Giao diện)
Tạo lớp mới thừa kế lớp đã có
Khả năng tạo ra các lớp dẫn xuất, cài đặt cùng một method
của lớp cơ sở theo những cách khác nhau (tùy từng lớp dẫn xuất)
3 nguyên tắc lập trình hướng đối tượng
Trang 32Đóng gói (Encapsulation )
Trong OOP, Đóng gói là
• Ẩn đi các property
• Ẩn đi một số method
• Ẩn đi các chi tiết hiện thực của method
Bản điều khiển cho phép dùng đối tượng
Trong OOP, Giao diện là tập các method cho phép dùng
object
Encapsulation và Interface
Trang 33Encapsulation và Interface
Trang 34Thừa kế (inheritance )
Tạo lớp mới thừa kế lớp đã có
Một cách tái sử dụng các lớp bằng cách mở rộng lớp đã có
thành một lớp cụ thể
“Lớp đã có”: base class, superclass, parent class
“Lớp mới”: derived class, subclass, child class
Thừa kế (inheritance)
Trang 35Thừa kế (inheritance)
Trang 36Thừa kế (inheritance)
Trang 37Thừa kế (inheritance)
Trang 38Thừa kế: Lớp con thừa kế
Các dữ liệu của lớp cha Các hàm của lớp cha
Ngoài ra, lớp con còn
Có những dữ liệu riêng của lớp con
Có những hàm riêng của lớp con
Thừa kế (inheritance)
Trang 39Đa hình (polymorphism)
Poly = many Morphism = forms
Các lớp con cài đặt cùng một hàm của lớp cha, nhưng mỗi lớp con có cách cài đặt khác nhau
Đa hình (polymorphism)
Trang 40Đa hình (polymorphism)
Trang 42Tại sao học OOP?
Đa hình ( Polymorphism )
ĐIỂM CHÍNH