You are on page 1of 59

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
ntbichnguyen@gmail.com

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.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đóng gói dữ liệu (encapsulation):
 Cơ chế đóng gói là phương thức tốt để
thực hiện cơ chế che dấu thông tin so
với các ngôn ngữ lập trình cấu trúc.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính kế thừa (Inheritance):
 Việc sử dụng lại mã nguồn được thể hiện
thông qua cơ chế kế thừa.
 Cơ chế này cho phép các lớp đối tượng có
thể kế thừa từ các lớp đối tượng đã tồn tại
khác.
 Khi đó, trong các lớp kế thừa, có thể sử
dụng các phương thức hoạt động của các
lớp bị kế thừa, mà không cần phải định
nghĩa lại.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính kế thừa (Inheritance):
 Các lớp có thể được kế thừa nhau để tận dụng
các thuộc tính, các phương thức của nhau.
 Trong lớp dẫn xuất (lớp kế thừa) có thể sử dụng
lại các phương thức của lớp cơ sở (lớp bị lớp
khác kế thừa) mà không cần thiết phải cài đặt lại
mã nguồn.
 Ngay cả khi lớp dẫn xuất định nghĩa lại các
phương thức cho mình, lớp cơ sở cũng không bị
ảnh hưởng và không phải sửa lại bất kỳ một
đoạn mã nguồn nào.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính kế thừa (Inheritance):
 Ngoài ra, lớp dẫn xuất còn có thể bổ
sung thêm một số dữ liệu và phương
thức.
 Ưu điểm của kế thừa là khi thay đổi dữ
liệu của một lớp, chỉ cần thay đổi các
phương thức trong phạm vi lớp cơ sở
mà không cần thay đổi trong các lớp
dẫn xuất.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Đa hình là khái niệm luôn đi kèm với
kế thừa.
 Do tính kế thừa, một lớp có thể sử
dụng lại các phương thức của lớp
khác.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Tuy nhiên, nếu cần thiết, lớp dẫn xuất cũng có thể
định nghĩa lại một số phương thức của lớp cơ sở.
 Đó là sự nạp chồng phương thức trong kế thừa.
 Nhờ sự nạp chồng phương thức này, ta chỉ cần
gọi tên phương thức bị nạp chồng từ đối tượng mà
không cần quan tâm đó là đối tượng của lớp nào.
 Chương trình sẽ tự động kiểm tra xem đối tượng
là thuộc kiểu lớp cơ sở hay thuộc lớp dẫn xuất,
sau đó sẽ gọi phương thức tương ứng với lớp đó.
Đó là tính đa hình.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Khả năng để cho một thông điệp có thể
thay đổi cách thực hiện của nó theo
lớp cụ thể của đối tượng nhận thông
điệp.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Khi một lớp dẫn xuất được tạo ra, nó có thể thay đổi
cách thực hiện các phương thức nào đó mà nó thừa
hưởng từ lớp cơ sở của nó.
 Một thông điệp khi được gởi đến một đối tượng của
lớp cơ sở, sẽ dùng phương thức đã định nghĩa cho
nó trong lớp cơ sở.
 Nếu một lớp dẫn xuất định nghĩa lại một phương
thức thừa hưởng từ lớp cơ sở của nó thì một thông
điệp có cùng tên với phương thức này, khi được gởi
tới một đối tượng của lớp dẫn xuất sẽ gọi phương
thức đã định nghĩa cho lớp dẫn xuất.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Như vậy đa hình là khả năng cho phép
gởi cùng một thông điệp đến những
đối tượng khác nhau có cùng chung
một đặc điểm, nói cách khác thông
điệp được gởi đi không cần biết thực
thể nhận thuộc lớp nào, chỉ biết rằng
tập hợp các thực thể nhận có chung
một tính chất nào đó.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Tính đa hình (Polymorphsim):
 Chẳng hạn, thông điệp vẽ hình được
gởi đến cả hai đối tượng hình hộp và
hình tròn. Trong hai đối tượng này đều
có chung phương thức vẽ hình, tuy
nhiên tuỳ theo thời điểm mà đối tượng
nhận thông điệp, hình tương ứng sẽ
được vẽ lên.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Ưu điểm:
 Không còn nguy cơ dữ liệu bị thay đổi
tự do trong chương trình. Vì dữ liệu đã
được đóng gói vào các đối tượng. Nếu
muốn truy nhập vào dữ liệu phải thông
qua các phương thức được cho phép
của đối tượng.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Ưu điểm:
 Khi thay đổi cấu trúc dữ liệu của một
đối tượng, không cần thay đổi mã
nguồn của các đối tượng khác, mà chỉ
cần thay đổi một số thành phần của đối
tượng dẫn xuất. Điều này hạn chế sự
ảnh hưởng xấu của việc thay đổi dữ
liệu đến các đối tượng khác trong
chương trình.
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Ưu điểm:
 Có thể sử dụng lại mã nguồn, tiết kiệm tài
nguyên, chi phí thời gian. Vì nguyên tắc kế
thừa cho phép các lớp dẫn xuất sử dụng
các phương thức từ lớp cơ sở như những
phương thức của chính nó, mà không cần
thiết phải định nghĩa lại.

 Phù hợp với các dự án phần mềm lớn, phức


tạp.
LẬP TRÌNH HƯỚNG
CẤU TRÚC VÀ ĐỐI TƯỢNG
Lập trình cấu trúc:
 data structures + algorithms = Program
 (cấu trúc dữ liệu + giải thuật = Chương
trình)

Lập trình hướng đối tượng:


 objects + messages = Program
 (đối tượng + thông điệp = Chương trình)
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp lớp:
 Thậm chí mặc dù nảo con người giỏi ở sự
trừu tượng các khái niệm như bản đồ
đường đi và cảnh quan, vẫn còn số lượng
rất lớn các công việc trừu tượng hoá riêng
lẻ mà chúng ta thường gặp trong cuộc sống.
 Để đối phó sự phức tạp này con người phải
sắp xếp thông tin một cách có hệ thống theo
các tiêu chuẩn nào đó; Xử lý này gọi là sự
phân lớp (classification).
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp lớp:
 Ví dụ như khoa học đã phân cấp theo lớp
tất cả đối tượng tự nhiên thuộc về động vật,
hoặc cây, hoặc khoáng sản.
 Để được phân là động vật, nó phải thoả
điều kiện sau:
 Vật thể sống.
 Tự di chuyển.
 Phản ứng khi bị kích thích.
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp
lớp:
 Qui luật cho một đối tượng là cây thì
hơi khác:
Vật thể sống (như động vật).
Không có hệ thần kinh.
Có màn cellulose.
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp
lớp:
 Sau khi phân lớp đơn giản như trên ta
có thể thêm vài qui luật để có các loại
động vật cụ thể hơn cho đến khi có
một sự phân cấp theo sự trừu tượng
từ cao (đỉnh) xuống thấp (đáy).
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp
lớp:
 Sơ đồ phân cấp trừu tượng của các
đối tượng tự nhiên:
TRỪU TƯỢNG HÓA
Tổ chức trừu tượng theo sự phân cấp
lớp:
 Sơ đồ phân cấp trừu tượng của các
đối tượng tự nhiên
TRỪU TƯỢNG HÓA
Trừu tượng hóa – cơ sở của phát triển phần
mềm:
 Khi ghi nhận các yêu cầu cho một dự án phần
mềm, chúng ta thường bắt đầu bằng cách thu
thập thông tin chi tiết về tình hình thực tế mà
trên đó hệ thống sẽ hoạt động. Những chi tiết
này thường là một sự tổng hợp của:
 Thông tin từ những người sử dụng hệ thống được
chúng ta phỏng vấn.
 Những hoạt động mà chúng ta quan sát từ nghiệp
vụ hàng ngày của người sử dụng hệ thống.
TRỪU TƯỢNG HÓA
Trừu tượng hóa – cơ sở của phát triển phần
mềm:
 Kế đến chúng ta phải chọn lọc ra những chi tiết
nào liên quan tới mục đích sử dụng hệ thống.
 Việc này là cần thiết vì chúng ta không thể tự
động hoá tất cả hệ thống nghiệp vụ bằng phần
mềm!
 Việc bao gồm quá nhiều chi tiết sẽ làm hệ thống
phức tạp và khó khăn hơn trong việc thiết kế,
kiểm tra chương trình, dò lỗi, tạo sưu liệu, bảo trì
và mở rộng chương trình sau này.
TRỪU TƯỢNG HÓA
Trừu tượng hóa – cơ sở của phát triển
phần mềm:
 Sự trừu tưởng hoá sẽ giúp người phân
tích hệ thống có được các nét đặc
trưng của hệ thống trong miền
(domain) bài toán, tập trung vào vấn đề
của hệ thống dự định phát triển.
TRỪU TƯỢNG HÓA
Trừu tượng hóa – cơ sở của phát triển phần mềm:
 VD: Khi thể hiện một người trong chương trình,
màu mắt của họ có quan trọng không? Về gien ?
Lương ? Sở thích ?
 Câu trả lời là bất kỳ đặc tính nào của người có thể
liên quan hay không liên quan tuỳ thuộc vào hệ
thống mà ta định phát triển là:
 Chương trình tính lương
 Chương trình tiếp thị theo tuổi tác
 CSDL bệnh nhân nhãn khoa
 Hệ thống theo dõi những kẻ bị truy nã
TRỪU TƯỢNG HÓA
Trừu tượng hóa – cơ sở của phát triển phần mềm:
 Khi đã xác định các đặc trưng quan trọng của một
tình huống, ta cần chuẩn bị một mô hình hoá cho
nó.
 Mô hình hoá là xử lý nhằm phát triển một khuôn
mẫu để tạo ra một thứ gì đó; ví dụ như bản thiết kế
ngôi nhà, sơ đồ mạch điện, một khuôn bánh.
 Một mô hình đối tượng của hệ thống phần mềm là
một mẫu như vậy. Mô hình hoá và trừu tượng hoá
luôn đi với nhau vì một mô hình là sự mô tả đồ họa
hay vật lý của trừu tượng.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
 Lập trình hướng thành phần
(Component-Oriented programming-
COP)
 Lập trình hướng tác nhân (Agent-
Oriented Programming)
 Lập trình hướng khía cạnh (Aspect-
Oriented Programming-AOP)
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng thành phần:
 Ý tưởng:
Giải quyết bài toán bằng cách xây dựng
một tập các thành phần (component) có
tính độc lập tương đối với nhau. Mỗi thành
phần đảm nhiệm một phần công việc nhất
định.
Sau đó, người ta ghép các thành phần với
nhau để thu được một phần mềm thoả
mãn một tập các yêu cầu xác định.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng thành phần:
 Phương pháp:
 Xây dựng một thư viện các thành phần, mỗi
thành phần thực hiện một công việc xác định.
 Khi cần phát triển một phần mềm cụ thể,
người ta chỉ cần chọn những thành phần có
sẵn trong thư viện để ghép lại với nhau.
Người lập trình chỉ phải phát triển thêm các
thành phần mình cần mà chưa có trong thư
viện.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng thành phần:
 Ưu điểm:
 Lập trình viên có thể chia sẻ với nhau những
thành phần mình đã xây dựng cho nhiều người
khác dùng chung.
 Khi cần, lập trình viên có thể lắp ghép các
thành phần có sẵn khác nhau để tạo thành các
chương trình có chức năng khác nhau. Tất cả
chỉ cần dựa trên công nghệ lắp ghép thành
phần, tiết kiệm được rất nhiều công sức lập
trình.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng tác nhân:
 Lập trình hướng agent có thể xem là một
mức trừu tượng cao hơn của lập trình
hướng thành phần.
 Trong đó, các agent là các thành phần có
khả năng hoạt động độc lập, tự chủ để hoàn
thành công việc của mình. Hơn nữa, các
agent có khả năng chủ động liên lạc với các
agent khác để có thể phối hợp, cộng tác hay
cạnh tranh nhau để hoàn thành nhiệm vụ.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng tác nhân:
 Đặc trưng cơ bản:
Thứ nhất là khả năng tự chủ của mỗi
agent để hoàn thành nhiệm vụ riêng của
nó.
Thứ hai là tính tổ chức xã hội giữa các
agent, cho phép các agent phối hợp, cộng
tác, cạnh tranh nhau để hoàn thành nhiệm
vụ chung của toàn hệ thống.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng khía cạnh:
 Phương pháp lập trình hướng khía cạnh là
phương pháp lập trình phát triển tư duy tách
biệt các mối quan tâm khác nhau thành các mô
đun khác nhau.
 Ở đây, một mối quan tâm thường không phải
một chức năng nghiệp vụ cụ thể và có thể đóng
gói mà là một khía cạnh (thuộc tính) chung mà
nhiều mô đun phần mềm trong cùng hệ thống
nên có, ví dụ lưu vết thao tác và lỗi (error
logging).
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng khía cạnh:
 Với AOP, chúng ta có thể cài đặt các mối
quan tâm chung cắt ngang hệ thống bằng
các mô đun đặc biệt gọi là aspect thay vì
dàn trải chúng trên các mô đun nghiệp vụ
liên quan.
 Các aspect sau đó được tự kết hợp với
các mô đun nghiệp vụ khác bằng quá trình
gọi là đan (weaving) bằng bộ biên dịch đặc
biệt.
XU HƯỚNG PHÁT TRIỂN CỦA LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng khía cạnh:
 AspectJ là một công cụ AOP cho ngôn
ngữ lập trình Java. Trình biên dịch
AspectJ sẽ đan xen chương trình Java
chính với các aspect thành các tập tin
bytecode chạy trên máy ảo Java.

You might also like