Click to edit Master subtitle style
CHƯƠNG 1:
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 tố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;
class Program
{
public void Input()
static void Main(string[] args)
{
{
}
InformaticsClass a = new InformaticsClass();
public int NumStudents()
a.Input();
{
Console.WriteLine("No. " + a.NumStudents());
if (students == null)
return 0;
}
}
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
…
Behaviours:
-
GetAge
SetName
…
Attributes:
-
Title
Author
Pages
…
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