Click to edit
Master subtitle
CHƯƠNG
1: 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
1
NỘI DUNG
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
2
Tại sao OOP?
Object 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
3
MỘT SỐ MƠ THỨC LẬP TRÌNH
4
Mơ thức lập trình
Programming 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
Một số programming paradigm:
Imperative
Structured
Procedural
Object oriented
Functional
Declarative
…
5
Imperative programming
Mơ thức “Lập trình Tuần tự” với ý tưởng chủ
đạo là lệnh (commands)
Input data
Process
Output data
Chương trình là chuỗi các lệnh (cụ thể/rõ ràng
(explicit)) có thứ tự (step by step) dùng để thay
đổi trạng thái chương trình
6
Ví 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
7
Imperative programming
Đặc điểm:
Các biến toàn cục
Mỗi bước ảnh hưởng đến trạng thái tồn cục của
chương trình
Có lệnh goto để nhảy đến lệnh khác
Có những đoạn mã được viết nhiều lần
Ngơn ngữ: Assembly, Pascal, C, …
8
Structured programming
Mơ 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:
result = [];
for i = 0; i < length(people); i++
{
p = people[i];
if length(p.name)) > 5
{
addToList(result, toUpper(p.name));
}
}
return sort(result);
9
Structured programming
Đặc điểm:
Lệnh tuần tự (Sequence), Lệnh lặp (Loop), Lệnh điều kiện
(Condition)
Phong cách lập trình Thục đầu dịng (indentation)
Loại bỏ/hạn chế lệnh goto
Ngơn ngữ: Pascal, C, …
Khuyết điểm:
Khó 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
10
Procedural programming
Mơ thức “Lập trình Thủ tục” kế thừa structured
programming và đưa thêm ý tưởng chương
trình con (procedure/function) chứa các đoạn
mã thường sử dụng
Chương trình máy tính có thể chia thành các
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
11
Ví dụ
public static int Factorial(int n)
{
int result = 1;
for (int i = 2; i <= n; i++)
result = result * i;
}
return result;
static void Main(string[] args)
{
int fact;
fact = Factorial(5);
Console.WriteLine("5! = " + fact);
}
int n = 10;
int m = 5;
fact = Factorial(n) + Factorial(m);
Console.WriteLine("n! + m! = " + fact);
12
Procedural programming
Đặ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 tồn cục (global variable) và Biến cục bộ (local variable)
Ngôn ngữ: Pascal, C, …
Khuyết điểm:
Mối quan hệ giữa dữ liệu và hàm không được quan tâm, quản
lý
13
Object oriented programming
Mơ thức “Lập trình Hướng đối tượng” cải biên
procedure programming bằng cách đưa vào ý
tưởng object (đối tượng)
Đối tượng = Dữ liệu + Hàm thao tác trên Dữ liệu
Chương trình máy tính gồm các objects, các
objects giao tiếp với nhau để giải quyết bài
toán đặt ra
14
Ví dụ
class Student
{
string code;
string name;
int yearOfBirth;
public Student(string studentCode, string studentName, int year)
{
code = studentCode;
name = studentName;
yearOfBirth = year;
}
}
public int GetYearOld()
{
return DateTime.Now.Year - yearOfBirth;
}
15
Ví dụ
class InformaticsClass
{
Student[] students;
string className;
public void Input()
{
}
public int NumStudents()
{
if (students == null)
return 0;
}
}
class Program
{
static void Main(string[] args)
{
InformaticsClass a = new InformaticsClass();
}
}
a.Input();
Console.WriteLine("No. " + a.NumStudents());
return students.Length;
16
Object Oriented Programming
Đặ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
Hỗ trợ Các ngun tắc:
• Đóng gói (encapsulation)
• Thừa kế (inheritance)
• Đa hình (polymorphism), …
17
Object Oriented Programming
Ưu điểm:
Quản lý mối quan hệ giữa Dữ liệu và Hàm
(trong object)
Tổ chức code hiệu quả theo cách thức tổ chức
trong tự nhiên
Giúp mơ hình hóa các đối tượng trong thế giới thực
trên máy tính
Ngơn ngữ: C++, Java, C#, …
18
KHÁI NIỆM LỚP VÀ ĐỐI TƯỢNG
19
Đối tượng (object)
Trong thế giới thực có nhiều đối tượng:
20
Đối tượng (object)
Hoạ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à q trình mơ hình
hóa từ thực tế vào máy tính
21
Đối tượng (object)
Trong 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
Attributes:
- ID
- Name
- YearOfBirth
- …
Attributes:
- Title
- Author
- Pages
- …
Behaviours:
- GetAge
- SetName
- …
Behaviours:
- CountWords
- BookMark
- SetTitle
- …
22
Đối tượng (object)
OOP 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
23
Đối tượng (object) – ví dụ
Real world object: Car
Properties: color, make, model, year, …
• Velocity
Methods:
• Accelerator (chân ga)
• Brake (thắng)
• Speedmotor (đồng hồ tốc độ)
24
Lớp (class)
Lớp (class): Nhiều đối tượng cụ thể “giống nhau”
được nhóm thành một loại/lồi hay lớp (class)
Lớp (class) là mẫu (template) hay bản thiết kế
(blueprint) để tạo đối tượng
25