1.Tổng quan về phát triển phần mềm
2.Các phương pháp lập trình cổ điển
▫ PP lập trình tuyến tính
▫ PP lập trình thủ tục/hàm
▫ PP lập trình đơn thể
3.Phương pháp lập trình hướng đối tượng
▫ Các khái niệm
▫ Đặc điểm
▫ Các bước thực hiện
25 trang |
Chia sẻ: lylyngoc | Lượt xem: 1766 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Chương 2 Tổng quan lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tổng Quan
Lập Trình Hướng Đối Tượng
Môn Lập Trình Hướng Đối Tượng – Chương 2
Nguyễn Minh Thành
[M] : Thanhnm@itc.edu.vn
1
Giới thiệu
Học một ngôn ngữ lập trình mới là quan trọng. Tuy
nhiên việc hiểu ý nghĩa của 1 khái niệm, 1 cách suy
nghĩ mới còn quan trọng hơn gấp nhiều lần.
Hiểu được “hướng đối tượng” không phải thông qua
cách học 1 ngôn ngữ hay một bộ công cụ nào đó
Mà đó là 1 cách tiếp cận, 1 cách suy nghĩ khác
2
Nội dung
1. Tổng quan về phát triển phần mềm
2. Các phương pháp lập trình cổ điển
▫ PP lập trình tuyến tính
▫ PP lập trình thủ tục/hàm
▫ PP lập trình đơn thể
3. Phương pháp lập trình hướng đối tượng
▫ Các khái niệm
▫ Đặc điểm
▫ Các bước thực hiện
3
1. Phần Mềm
Viết 1 phần mềm bao gồm rất nhiều công đoạn: phân tích &
thiết kế, cài đặt, kiểm tra/thử nghiệm và bảo trì.
Cài đặt (programming/coding) chỉ là 1 phần trong quá trình
trên.
C++/C#/Java v.v… là ngôn ngữ lập trình để cài đặt.
PP lập trình là các cách tiếp cận giúp cho quá trình cài đặt hiệu
quả hơn.
4
Phần mềm (tt)
Phương pháp lập trình phải có :
Tính tái sử dụng (reusability): thiết kế các thành phần có thể được
sử dụng trong nhiều phần mềm khác nhau
Tính mở rộng (extensibility): hỗ trợ các plug-ins.
Tính mềm dẻo (flexibility):
Có thể dễ dàng thay đổi khi thêm mới dữ liệu hay tính năng.
Các thay đổi không làm ảnh hưởng nhiều đến toàn bộ hệ thống
5
2. Các pp lập trình cổ điển
1.Lập trình tuyến tính
Chương trình là một dãy các lệnh.
Lập trình là xây dựng các lệnh trong dãy lệnh.
Không mang tính tái sử dụng, mở rộng & mềm dẻo.
2.Lập trình thủ tục / hàm
Chương trình là một hệ thống các thủ tục và hàm. Mỗi thủ
tục và hàm là một dãy các lệnh.
Lập trình là xác định xem chương trình gồm bao nhiêu thủ
tục và hàm, và sau đó xác định các lệnh trong từng thủ tục
và hàm.
Kết quả là hệ thống cấu trúc và mối quan hệ giữa các
hàm/thủ tục
6
Các pp lập trình cổ điển (tt)
3. Lập trình đơn thể
Chương trình là một hệ thống những đơn thể. Đơn thể là một
hệ thống các thủ tục và hàm có liên quan mật thiết với nhau.
Mỗi thủ tục và hàm là một dãy các lệnh. Các đơn thể được
lưu trên các tập tin đặc biệt và được biên dịch các tập tin
khác nhau.
Phân tích và tìm ra các đơn thể bao gồm thành phần dữ liệu
và các hàm/thủ tục liên quan.
Cách thực hiện dựa vào việc gom nhóm các thành phần
tương tự nhau về ý nghĩa, phạm vi…
7
Các pp lập trình cổ điển (tt)
• Ví dụ 1: Xét chương trình nhập vào họ tên, điểm văn, điểm
toán của một học sinh và xuất điểm trung bình tương ứng.
Hãy viết chương trình trên bằng các cách viết có thể có.
8
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và biến toàn
cục)
9
class Program
{
static string hoten;
static int van, toan;
static float dtb;
static void Main(string[] args)
{
Console.Write("Nhap ho ten: ");
hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
van = int.Parse(Console.ReadLine());
dtb = (float)(toan + van) / 2;
Console.WriteLine("Diem trung binh: {0: 0.00}", dtb);
}
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và biến cục
bộ)
10
class Program
{
static void Main(string[] args)
{
string hoten;
int van, toan;
float dtb;
Console.Write("Nhap ho ten: ");
hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
van = int.Parse(Console.ReadLine());
dtb = (float)(toan + van) / 2;
Console.WriteLine("Diem trung binh: {0: 0.00}", dtb);
}
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và cấu trúc
toàn cục)
11
class Program
{
static HOCSINH hs;
static void Main(string[] args)
{
Console.Write("Nhap ho ten: ");
hs.hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
hs.toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
hs.van = int.Parse(Console.ReadLine());
hs.dtb = (float)(hs.toan + hs.van) / 2;
Console.WriteLine("Diem trung binh: {0:
0.00}", hs.dtb);
}
}
struct HOCSINH
{
public string hoten;
public int van, toan;
public float dtb;
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và cấu trúc
cục bộ)
12
class Program
{
static void Main(string[] args)
{
HOCSINH hs;
Console.Write("Nhap ho ten: ");
hs.hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
hs.toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
hs.van = int.Parse(Console.ReadLine());
hs.dtb = (float)(hs.toan + hs.van) / 2;
Console.WriteLine("Diem trung binh: {0:
0.00}", hs.dtb);
}
}
struct HOCSINH
{
public string hoten;
public int van, toan;
public float dtb;
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình thủ tục (dùng biến toàn cục)
13
class Program
{
static string hoten;
static int van, toan; static float dtb;
static void Main(string[] args)
{
Nhap();
TinhTrungBinh();
Xuat();
}
static void Nhap()
{
Console.Write("Nhap ho ten: ");
hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
van = int.Parse(Console.ReadLine());
}
static void Xuat()
{
Console.WriteLine("Diem trung
binh: {0: 0.00}", dtb);
}
static void TinhTrungBinh()
{
dtb = (float)(toan + van) / 2;
}
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình thủ tục (dùng biến cục bộ)
14
static void Xuat(string hoten, int
van, int toan, float dtb)
{
Console.WriteLine("Diem trung
binh: {0: 0.00}", dtb);
}
static float TinhTrungBinh(int
van, int toan)
{
return (float)(toan + van) / 2;
}
}
class Program
{
static void Main(string[] args)
{
string hoten; int van, toan; float dtb;
Nhap(out hoten, out van, out toan);
dtb = TinhTrungBinh(van, toan);
Xuat(hoten, van, toan, dtb);
}
static void Nhap(out string hoten, out int van,
out int toan)
{
Console.Write("Nhap ho ten: ");
hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
van = int.Parse(Console.ReadLine());
}
Phải quan tâm đến tham số: Trị,
chiếu và giá trị trả về của mỗi
phương thức.
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình thủ tục (dùng biến cấu trúc cục bộ)
15
struct HOCSINH
{
public string hoten; public int van, toan; public float dtb;
}
class Program
{ static void Main(string[] args)
{
HOCSINH hs; Nhap(out hs); Xuat(hs);
}
static void Nhap(out HOCSINH hs)
{
Console.Write("Nhap ho ten: "); hs.hoten = Console.ReadLine();
Console.Write("Nhap diem toan: "); hs.toan = int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: "); hs.van = int.Parse(Console.ReadLine());
hs.dtb = (float)(hs.toan + hs.van) / 2;
}
static void Xuat(HOCSINH hs)
{
Console.WriteLine("Diem trung binh: {0: 0.00}", hs.dtb);
}
}
Các pp lập trình cổ điển (tt)
• Cài đặt với pp lập trình thủ tục (dùng biến cấu trúc toàn cục)
16
struct HOCSINH
{
public string hoten;
public int van, toan;
public float dtb;
}
class Program
{
static HOCSINH hs;
static void Main(string[] args)
{
Nhap();
Xuat();
}
static void Nhap()
{
Console.Write("Nhap ho ten: ");
hs.hoten = Console.ReadLine();
Console.Write("Nhap diem toan: ");
hs.toan =
int.Parse(Console.ReadLine());
Console.Write("Nhap diem van: ");
hs.van =
int.Parse(Console.ReadLine());
hs.dtb = (float)(hs.toan + hs.van) / 2;
}
static void Xuat()
{
Console.WriteLine("Diem trung binh:
{0: 0.00}", hs.dtb);
}
}
3. PP Lập trình hướng đối tượng
Phương pháp lấy đối tượng làm nền tảng để xây dựng chương
trình.
Chương trình là một hệ thống những lớp đối tượng. Mỗi một
lớp đối tượng tương ứng với những đối tượng có xuất hiện trong
thực tế mà chương trình cần quản lý.
Lập trình hướng đối tượng là xây dựng những lớp đối tượng, từ
đó tạo ra các đối tượng cần quản lý.
Lập trình hướng đối tượng là phương pháp lập trình dựa trên
kiến trúc lớp (class) và đối tượng (object)
17
3. Lập trình hướng đối tượng (tt)
• Đối tượng là sự gắn kết giữa dữ liệu của đối tượng và các hàm
(còn gọi là phương thức) thao tác trên các dữ liệu này.
Đối tượng = Dữ liệu + Phương thức
• 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 lớp đố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?
• Ví dụ : Chương trình quản lý đào tạo có những lớp đói tượng
nào ? Đối tượng nào ?
18
Sự trừu tượng hoá
19
Thực thể
Thuộc tính
Hành động
Thế giới thực Trừu tượng hóa Phần mềm
Dữ liệu
hàm
Đặc điểm của pp lập trình HĐT
• Tính đóng gói (Encapsulation): Đây là quan điểm trung tâm
trong lập trình hướng đối tượng với việc che dấu dữ liệu thông
qua sự đóng gói. Sự đóng gói chính là khả năng cất giữ riêng
biệt dữ liệu và phương thức tác động lên dữ liệu đó. Do vậy
chúng ta không phải quan tâm tới việc “phải làm như thế nào”
mà chỉ điều khiển bằng “làm việc gì”. Sự đóng gói không chỉ
đơn thuần là gom chung dữ liệu và chương trình vào trong
một khối mà phải có sự đồng nhất giữa dữ liệu và các thao
tác tác động lên dữ liệu đó.
20
Đặc điểm của pp lập trình HĐT
• Tính thừa kế (inheritance): Mục tiêu của lập trình hướng đối tượng
là sử dụng lại những gì đã được xây dựng. Với tính thừa kế chúng ta
không phải mất công xây dựng lại từ đầu những đối tượng mới, chỉ
cần bổ sung để có được những đặc tính cần thiết trong đối tượng
mới. Những lớp đối tượng đã có được sử dụng lại gọi là lớp cơ sở.
Những lớp thừa kế những hành vi và dữ liệu của lớp cơ sở gọi là lớp
dẫn xuất, ngoài những đặc điểm của lớp cơ sở chúng còn có những
tính chất riêng của mình. Cứ như vậy lớp dẫn xuất lại đóng vai trò
lớp cơ sở của các lớp dẫn xuất khác.
• Tính đa hình (pholymorphism): Cho phép gởi cùng một thông điệp
đến những đối tượng khác nhau cùng có chung một đặc điểm
21
Một số khái niệm
Thế giới thực Phương pháp lập
trình
Ngôn ngữ lập trình
Đối tượng trong thế giới thực Đối tượng Biến có kiểu cấu trúc
Khái niệm chung về đối tượng Lớp đối tượng Kiểu dữ liệu cấu trúc
Các thông tin được quan tâm
về 1 đối tượng
Thuộc tính Thành phần thuộc tính
của kiểu cấu trúc
Các khả năng của đối tượng Hành động Các phương thức
Phân công giữa các đối tượng Yêu cầu Gọi thực hiện phương
thức
22
Một đối tượng phải có:
•Một tên gọi.
•Có chu trình sống (sinh ra, hoạt động và mất đi).
Một số ngôn ngữ lập trình HĐT
• C++
• C#, VB.Net, J#, VC++
• Java
• JavaScript
• PHP
• …
23
FAQs
24
Hết Chương 2
Môn Lập Trình Hướng Đối Tượng
25