Tải bản đầy đủ (.pptx) (59 trang)

Giáo trình lập trình hướng đối tượng

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 (276.18 KB, 59 trang )

Học viện Công nghệ Bưu chính Viễn thông
Khoa Công nghệ thông tin

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Nguyễn Thị Bích Nguyên


TỔNG QUAN VỀ
LẬP TRÌNH HƯỚNG ĐỐI
TƯỢNG


NỘI DUNG


1.1. Phương pháp tiếp cận của lập trình truyền thống
 1.1.1 Lập trình tuyến tính
 1.1.2 Lập trình hướng cấu trúc




1.2. Phương pháp tiếp cận của lập trình hướng đối tượng
1.3 Các đặc trưng của lập trình hướng đối tượng
 1.3.1 Tính đóng gói dữ liệu
 1.3.2 Tính kế thừa
 1.3.3 Tính đa hình



1.4 Trừu tượng hóa


 1.4.1 Tổ chức trừu tượng theo sự phân cấp lớp
 1.4.2 Trừu tượng hóa – cơ sở của phát triển phần mềm



1.5 Xu hướng phát triển của lập trình hướng đối tượng
 1.5.1 Lập trình hướng thành phần
 1.5.2 Lập trình hướng tác nhân
 1.5.3 Lập trình hướng khía cạnh


PHƯƠNG PHÁP TIẾP CẬN CỦA LẬP
TRÌNH TRUYỀN THỐNG


Lập trình truyền thống đã trải qua hai
giai đoạn:
Giai đoạn sơ khai, khi khái niệm lập trình

mới ra đời, là lập trình tuyến tính.
Giai đoạn tiếp theo là lập trình hướng cấu
trúc.


LẬP TRÌNH TUYẾN TÍNH


Đặc trưng cơ bản của lập trình tuyến
tính là tư duy theo lối tuần tự. Chương
trình sẽ được thực hiện tuần tự từ đầu

đến cuối, lệnh này kế tiếp lệnh kia cho
đến khi kết thúc chương trình.


LẬP TRÌNH TUYẾN TÍNH
Đặc trưng: có hai đặc trưng.
 Đơn giản: Chương trình được tiến hành
đơn giản theo lối tuần tự, không phức
tạp.
 Đơn luồng: Chỉ có một luồng (thread)
công việc duy nhất, và các công việc
được thực hiện tuần tự trong luồng đó.


LẬP TRÌNH TUYẾN TÍNH
Tính chất:
 Ưu điểm: Do tính đơn giản, lập trình
tuyến tính có ưu điểm là chương trình
đơn giản, dễ hiểu. Lập trình tuyến tính
được ứng dụng cho các chương trình
đơn giản.
 Nhược điểm: Với các ứng dụng phức
tạp, người ta không thể dùng lập trình
tuyến tính để giải quyết.


LẬP TRÌNH TUYẾN TÍNH
Lưu ý:
 Ngày nay, lập trình tuyến tính chỉ tồn tại
trong phạm vi các mô đun nhỏ nhất của

các phương pháp lập trình khác.
 Ví dụ trong một chương trình con của
lập trình cấu trúc, các lệnh cũng được
thực hiện theo tuần tự từ đầu đến cuối
chương trình con.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Trong lập trình hướng cấu trúc:
 Chương trình chính được chia nhỏ
thành các chương trình con.
 Mỗi chương trình con thực hiện một
công việc xác định.
 Chương trình chính sẽ gọi đến chương
trình con theo một giải thuật, hoặc một
cấu trúc được xác định trong chương
trình chính.


LẬP TRÌNH HƯỚNG
CẤU TRÚC



Các ngôn ngữ lập trình cấu trúc phổ
biến là Pascal, C và C++.
Riêng C++ ngoài việc có đặc trưng của
lập trình cấu trúc do kế thừa từ C, còn
có đặc trưng của lập trình hướng đối

tượng. Cho nên C++ còn được gọi là
ngôn ngữ lập trình nửa cấu trúc, nửa
hướng đối tượng.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Đặc trưng:
 Đặc trưng cơ bản nhất của lập trình cấu
trúc thể hiện ở mối quan hệ:
Chương trình = Cấu trúc dữ liệu + Giải thuật


Trong đó:
Cấu trúc dữ liệu là cách tổ chức dữ liệu, cách
mô tả bài toán dưới dạng ngôn ngữ lập trình
Giải thuật là một quy trình để thực hiện một
công việc xác định.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Trong chương trình, giải thuật (GT) có
quan hệ phụ thuộc vào cấu trúc dữ
liệu (CTDL):
 Một CTDL chỉ phù hợp với một số hạn
chế các GT.
 Nếu thay đổi CTDL thì phải thay đổi GT
cho phù hợp.
 Một GT thường phải đi kèm với một

CTDL nhất định.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Tính chất:
 Mỗi chương trình con có thể được gọi thực
hiện nhiều lần trong một chương trình chính.
 Các chương trình con có thể được gọi đến để
thực hiện theo một thứ tự bất kỳ, tuỳ thuộc
vào giải thuật trong chương trình chính mà
không phụ thuộc vào thứ tự khai báo của các
chương trình con.
 Các ngôn ngữ lập trình cấu trúc cung cấp một
số cấu trúc lệnh điều khiển chương trình.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Ưu điểm:
 Chương trình sáng sủa, dễ hiểu, dễ
theo dõi.
 Tư duy giải thuật rõ ràng.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Nhược điểm:
 Lập trình cấu trúc không hỗ trợ mạnh
việc sử dụng lại mã nguồn: Giải thuật

luôn phụ thuộc chặt chẽ vào CTDL, do
đó, khi thay đổi CTDL, phải thay đổi giải
thuật, nghĩa là phải viết lại chương trình.


LẬP TRÌNH HƯỚNG
CẤU TRÚC
Nhược điểm:
 Không phù hợp với các phần mềm lớn:
tư duy cấu trúc với các giải thuật chỉ
phù hợp với các bài toán nhỏ, nằm
trong phạm vi một mô đun của chương
trình. Với dự án phần mềm lớn, lập
trình cấu trúc tỏ ra không hiệu quả
trong việc giải quyết mối quan hệ vĩ mô
giữa các mô đun của phần mềm.


PHƯƠNG PHÁP TIẾP CẬN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Xuất phát từ hai hạn chế chính của phương pháp lập
trình cấu trúc:
 Không quản lý được sự thay đổi dữ liệu khi có
nhiều chương trình cùng thay đổi một biến chung.
Vấn đề này đặc biệt nghiêm trọng khi các ứng dụng
ngày càng lớn, người ta không thể kiểm soát được
sự truy nhập đến các biến dữ liệu chung.
 Không tiết kiệm được tài nguyên con người: Giải
thuật gắn liền với CTDL, nếu thay đổi CTDL, sẽ
phải thay đổi giải thuật, và do đó, phải viết lại mã

chương trình từ đầu.


PHƯƠNG PHÁP TIẾP CẬN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


Để khắc phục được hai hạn chế này khi
giải quyết các bài toán lớn, người ta xây
dựng một phương pháp tiếp cận mới, là
phương pháp lập trình hướng đối
tượng, với hai mục đích chính:
 Đóng gói dữ liệu để hạn chế sự truy nhập tự

do vào dữ liệu, không quản lý được.
 Cho phép sử dụng lại mã nguồn, hạn chế
việc phải viết lại mã từ đầu cho các chương
trình.


PHƯƠNG PHÁP TIẾP CẬN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


Người ta coi các thực thể trong chương trình là
các đối tượng và sau đó trừu tượng hoá đối
tượng thành lớp đối tượng.




Dữ liệu được tổ chức thành các thuộc tính của
lớp. Nguời ta ngăn chặn việc thay đổi tùy tiện
dữ liệu trong chương trình bằng các cách giới
hạn truy nhập như chỉ cho phép truy nhập dữ
liệu thông qua đối tượng, thông qua các
phương thức mà đối tượng được cung cấp…


PHƯƠNG PHÁP TIẾP CẬN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


Quan hệ giữa các đối tượng là quan
hệ ngang hàng hoặc quan hệ kế thừa:
Nếu lớp B kế thừa từ lớp A thì A được
gọi là lớp cơ sở và B được gọi là lớp
dẫn xuất.


PHƯƠNG PHÁP TIẾP CẬN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Ngôn ngữ lập trình hướng đối tượng
phổ biến hiện nay là Java và C++.
 Tuy nhiên, C++ mặc dù cũng có những
đặc trưng cơ bản của lập trình hướng
đối tượng nhưng vẫn không phải là
ngôn ngữ lập trình thuần hướng đối
tượng. Java thật sự là một ngôn ngữ
lập trình thuần hướng đối tượng.




LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Các khái niệm cơ bản và đặc trưng:
 Khái niệm đối tượng (object)
 Tính đóng gói dữ liệu (encapsulation)
 Tính kế thừa (inheritance)
 Tính đa hình (polymorphism)


LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Đối tượng (Object):
 Được coi là đơn vị cơ bản nhỏ nhất. Các dữ
diệu và cách xử lí chỉ là thành phần của đối
tượng mà không được coi là thực thể.
 Một đối tượng chứa các dữ liệu của riêng
nó, đồng thời có các phương thức (hành
động) thao tác trên các dữ liệu đó:


Đối tượng = dữ liệu + phương thức


LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Lớp (Class):
 Khi có nhiều đối tượng giống nhau về
mặt dữ liệu và phương thức, chúng

được nhóm lại với nhau và gọi chung
là lớp.
 Lớp là sự trừu tượng hoá của đối
tượng.
 Đối tượng là một thể hiện của lớp.


LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đóng gói dữ liệu (Encapsulation):
 Các dữ liệu được đóng gói vào trong đối
tượng. Dữ liệu luôn được tổ chức thành các
thuộc tính của lớp đối tượng. Mỗi dữ liệu có
một phạm vi truy nhập riêng.
 Muốn truy nhập đến các dữ liệu đã được
bảo vệ, phải thông qua các đối tượng, nghĩa
là phải sử dụng các phương thức mà đối
tượng cung cấp mới có thể truy nhập đến
dữ liệu của đối tượng đó.


LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đóng gói dữ liệu (encapsulation):
 Trong một đối tượng, dữ liệu hay thao tác hay cả hai có thể
là riêng (private) hoặc chung (public) của đối tượng đó.
 Thao tác hay dữ liệu riêng là thuộc về đối tượng đó chỉ
được truy cập bởi các thành phần của đối tượng, điều này
nghĩa là thao tác hay dữ liệu riêng không thể truy cập bởi
các phần khác của chương trình tồn tại ngoài đối tượng.

 Khi thao tác hay dữ liệu là chung, các phần khác của
chương trình có thể truy cập nó mặc dù nó được định nghĩa
trong một đối tượng. Các thành phần chung của một đối
tượng dùng để cung cấp một giao tiếp có điều khiển cho
các thành thành riêng của đối tượng.


×