Tải bản đầy đủ (.pdf) (25 trang)

Bài giảng lập trình hướng đối tượng chương 2 nguyễn minh thành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (350.87 KB, 25 trang )

1

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] :


2

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


3

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


4

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.



5

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


6

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



7

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…


8

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ó.


9

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)
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);
}
}


10

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ộ)
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);
}
}


11

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)
struct HOCSINH
{
public string hoten;
public int van, toan;
public float dtb;

}

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);
}
}


12

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ộ)
struct HOCSINH
{
public string hoten;

public int van, toan;
public float dtb;
}

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);
}
}


13

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)

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;
}
}



14

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ộ)

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());
}

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;
}
}

 Phải quan tâm đến tham số: Trị,
chiếu và giá trị trả về của mỗi
phương thức.


15

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ộ)
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);
}
}


16

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)
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);
}
}



17

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)


18

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 ?



19

Sự trừu tượng hoá
Thế giới thực

Trừu tượng hóa

Thuộc tính

Phần mềm

Dữ liệu

Thực thể

Hành động

hàm


20

Đặ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 đó.


21

Đặ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


22

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

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).


23

Một số ngôn ngữ lập trình HĐT
• C++
• C#, VB.Net, J#, VC++
• Java
• JavaScript
• PHP
• …


24

FAQs


25

Hết Chương 2
Môn Lập Trình Hướng Đối Tượng



×