Đ
ạ
i h
ọ
c Qu
ố
c gia Thành Ph
ố
H
ồ
Chí Minh
Trường Đại học Công nghệ Thông tin
H
ọ
c viên: Dương Hoàng Thanh
Mã số: CH0901050
4.1.1 Lớp 20
4.1.2 Thực thể 21
4.1.3 Phương thức 21
4.2 Các tính chất cơ bản 21
4.2.1 Tính trừu tượng 21 4.2.2 Tính đóng gói và che giấu thông tin 22
4.2.3 Tính đa hình 22
4.2.4 Tính kế thừa (inheritance) 22
4.3 Các ngôn ngữ và ứng dụng của OOP 23
5 Ý TƯỞNG VỀ LẬP TRÌNH HƯỚNG ONTOLOGY 23
5.1 Khái niệm 25
5.2 Các thành phần của OnOP 26
5.2.1 Lớp 27
5.2.2 Cá thể 27
5.2.3 Quan hệ 28
5.2.4 Tiên đề 29
5.2.5 Bộ suy diễn 29
5.3 Các bước xây dựng chương trình 29
5.3.1 Khai báo tri trức 29
5.3.2 Khởi tạo tri thức 29
5.3.3 Viết mã lệnh 29
5.4 Ngôn ngữ lập trình 29
5.5 Ưu điểm và thách thức 30
5.5.1 Ưu điểm của OnOP 30
5.5.2 Thách thức 30
6 HƯỚNG PHÁT TRIỂN 30
7 TỔNG KẾT 31
8 TÀI LIỆU THAM KHẢO 31
về một hệ thống có khả năng tiếp nhận tri thức và tự đưa ra quy trình xử lý công
việc đang trở nên gần hơn bao giờ hết.
Trong một vài năm gần đây, việc áp dụng ontology như một hình thức biểu
diễn tri thức trong các lĩnh vực ứng dụng khác nhau đã có những bước tiến quan
trọng. Ontology mô tả không chỉ khái niệm và thuộc tính mà còn cung cấp các
quan hệ cũng như các tiên đề phục vụ cho việc suy luận. Ontology có rất nhiều
lợi thế như cho phép thêm ngữ nghĩa vào dữ liệu, quản lý và cập nhật tri thức,
tích hợp dữ liệu cũng như tái sử dụng các thành phần dễ dàng hơn. Nhờ đó,
ontology là mô tả chính thức của một số bộ từ vựng chuyên môn.
Công dụng quan trọng nhất của ontology là biểu diễn tri thức. Ontology đã
được sử dụng thành công trong các hệ thống chuyên gia, mạng ngữ nghĩa… Do
hình thức lý thuyết là logic mô tả, ontology có lợi thế cả về diễn đạt ngữ nghĩa
lẫn cơ chế suy luận.
Do đó, nội dung chủ yếu của đề tài này là phác thảo nên những ý tưởng ban
đầu về một nguyên lý lập trình lấy Ontology và việc mô tả cơ sở tri thức làm
trọng tâm, đó là Nguyên lý Lập trình Hướng Ontology.
2 TỔNG QUAN VỀ ONTOLOGY
2.1 Khái niệm Ontology (bản thể)
Việc biểu diễn tri thức và lập luận là vấn đề then chốt cho quá trình xử lý
thông tin tự động trong các hệ thống thông minh. Trong thời gian gần đây, một
vấn đề quan trọng đã và đang được nhiều nhà nghiên cứu quan tâm đó là biểu
diễn và xử lý tri thức trên Web. Năm 1998, Tim Berners-Lee đã nghiên cứu và
phát triển Semantic web (web ngữ nghĩa), theo cách này các trang web không
chỉ thực hiện chức năng nhận và hiển thị thông tin mà còn có khả năng tự động
trích rút thông tin, truy vấn, lập luận trong cơ sở tri thức để có thể cho ra các
thông tin một cách tự động, chính xác. Năm 2003, F, Baader đã phát triển logic
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 2
mô tả (Description Logic – DLs) và xem nó như là ngôn ngữ biểu diễn cho tri
định nghĩa các mặt giới hạn trên v. Một vài mặt giới hạn bao gồm loại
(f
t
), lực lượng (f
c
) và phạm vi (f
r
). Mặt giới hạn f
t
có thể là bất kỳ kiểu
dữ liệu nào được hỗ trợ bởi trình soạn thảo ontology, ví dụ như f
t
∈
{boolean, integer, float, string, symbol, instance, class, …}. Mặt giới
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 3
hạn lực lượng f
c
định nghĩa cận trên và cận dưới của số lượng giá trị
thuộc tính. Mặt giới hạn phạm vi f
r
chỉ định một phạm vi các giá trị có
thể gán cho thuộc tính.
R = {r | r C × C × R
t
} là một tập các quan hệ ngữ nghĩa hai ngôi
được định nghĩa giữa các khái niệm trong C. R
t
= {một-một, một-nhiều,
kiện tương ứng là sự quy nạp. Quan hệ quy nạp diễn tả quan hệ “là một
phần của”. Liên đới là một quan hệ ngữ nghĩa giữa các lớp trong một
tầng.
1111
, ,,
21 qCCC
AAA
1111
, ,,
21 qCCC
OOO
2222
, ,,
21 qCCC
AAA
2222
, ,,
21 qCCC
OOO
3333
, ,,
21 qCCC
AAA
3333
, ,,
21 qCCC
OOO
4444
, ,,
21 qCCC
trong đó mô tả những đối tượng thuật ngữ thuộc một tập hợp các lĩnh vực.
Có rất nhiều ontology được chuẩn hóa có thể sử dụng được, bao gồm
Dublin Core, GFO, OpenCyc/ResearchCyc, SUMO, và DOLCE.
WorldNet, đôi khi được xem như một ontology thượng tầng, thực ra
không hoàn toàn là một ontology. Mặc dù vậy, WorldNet được cài đặt
như là một công cụ ngôn ngữ để nghiên cứu ontology chuyên môn.
2.3 Ứng dụng của Ontology
2.3.1 Mạng ngữ nghĩa
Người đặt nền tảng cho mạng thông tin toàn cầu Tim Berners-Lee đã
nhiều lần đề cập đến mạng ngữ nghĩa (Sematic Web). Trong đó, các hệ
thống có thể giao tiếp với nhau, phân tích và diễn giải ý nghĩa của mọi dữ
liệu trên site, rồi tập hợp nội dung liên quan từ nhiều nguồn khác nhau.
Nhờ đó, một công ty du lịch sẽ biết khách hàng của họ có bao nhiêu đứa
con, công việc, sở thích riêng để tìm ra điểm nghỉ mát lý tưởng nhất cho
cả gia đình.
Ý tưởng trọng tâm của là tạo ra những "metadata": chuỗi các cơ sở dữ liệu
nối tiếp nhau, có nhiệm vụ bổ sung cho thông tin trên web để các máy
tính có thể hiểu và giải quyết những vấn đề ngữ nghĩa phức tạp.
Mạng ngữ nghĩa được tổ chức dưới dạng một đồ thị, trong đó các nút biểu
diễn các đối tượng và cung biểu diễn quan hệ giữa các đối tượng.
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 6
Hình 3: Một mô hình mạng ngữ nghĩa
Không chỉ thuận lợi cho việc tìm kiếm thông tin, mạng ngữ nghĩa còn hỗ
trợ cơ chế suy diễn khá hiệu quả mà điển hình là bài toán tam giác tổng
quát.
Lập trình hướng Ontology Dương Hoàng Thanh
hợp, khung và mạng ngữ nghĩa không cần đến diễn đạt đầy đủ của logic vị từ,
logic mô tả đã ra đời như một tập con của logic vị từ, giới hạn mức độ diễn đạt
để đổi lấy sự đơn giản trong suy diễn. Mặc dù vậy, có một số logic mô tả không
phải là tập con của logic vị từ.
Ban đầu, những hệ thống như ở trên được gọi là hệ thống thuật ngữ, với
mục đích nhấn mạnh việc chúng được sử dụng để định nghĩa hệ thống thuật ngữ
cơ bản của một ứng dụng chuyên môn. Sau đó, tên gọi logic mô tả được khám
phá, phản ảnh sự thật rằng chuyên ngành đó được diễn đạt bằng cách sử dụng
khái niệm phức hợp: các mô tả và rằng chúng có ngữ nghĩa dựa trên logic.
Các phương thức khởi tạo khác nhau được hỗ trợ trong một logic mô tả dẫn
đến các phân mảnh khác nhau của logic vị từ với độ phức tạp tính toán khác
nhau. Các logic khác nhau trong họ có quan hệ với nhau thông qua nguyên lý
sau: ngôn ngữ càng mang tính diễn đạt cao thì càng khó suy diễn.
Lịch sử của logic mô tả có thể được tóm tắt qua những giai đoạn sau:
Giai đoạn 0 (1965-1980). Logic mô tả chưa ra đời và các mô hình khác
được dùng để biểu diễn tri thức có cấu trúc (ví dụ như mạng ngữ nghĩa
và khung), cho đến khi việc thiếu sót ngữ nghĩa chính quy của các mô
hình đó được phát hiện.
Giai đoạn 1 (1980-1990) bao gồm các hệ thống chưa hoàn chỉnh dựa
trên những thuật toán có cấu trúc. Hệ thống logic mô tả đầu tiên ra đời
trong giai đoạn này và có tên là KL-ONE.
Giai đoạn 2 (1990-1995) bao gồm sự phát triển của các thuật toán
tableau và việc nghiên cứu tính phức tạp của logic, quan hệ của chúng
với logic hình thức và các kỹ thuật tối ưu hoá.
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 9
Giai đoạn 3 (1995-2000) bao gồm sự phát triển của các thuật toán
tableau cho logic mô tả giàu tính diễn đạt và việc cài đặt các bộ suy luận
được tối ưu hóa như RACER hay FACT.
GVHD: TS. Nguyễn Tuấn Đăng Trang 10
Giả sử người đó muốn biết Iokaste có hay không một đứa con mà (i) là một
kẻ giết cha và (ii) có một đứa con không giết cha.
Dưới giả định thế giới đóng, chúng ta không biết rằng Polyneikes không
phải là kẻ giết cha, do đó câu trả lời là không. Mặt khác, dưới giả định thể giới
mở, cho dù Polyneikes có là kẻ giết cha hay không, câu trả lời vẫn là có. Trong
trường hợp đầu, đứa con là Polyneikes, trong khi trong trường hợp sau, đứa con
là Oedipus.
3.3 Một vài logic mô tả đáng chú ý
Trong phần này, chúng ta sẽ điểm lại một vài logic mô tả quan trọng mà
không đi quá sâu vào chi tiết của cú pháp và ngữ nghĩa đặc thù. Mỗi logic mô tả
được thể hiện bằng một chuỗi các ký tự hoa dùng để xác định các phương thức
khởi tạo của logic, và do đó xác định độ phức tạp của nó. Đầu tiên, chúng ta sẽ
trình bày về bộ khởi tạo của logic AL (Atrributive Language - Ngôn ngữ thuộc
tính) và sau đó sẽ mô tả một vài mở rộng.
Các phương thức khởi tạo khái niệm của AL bao gồm:
Các khái niệm đỉnh và đáy.
Các khái niệm nguyên tố.
Phủ định của các khái niệm nguyên tố.
Giao của khái niệm.
Các lượng hóa toàn thể.
Các ràng buộc tồn tại, nhưng chỉ giới hạn cho các khái niệm đỉnh.
AL có thể được mở rộng với một vài phương thức khởi tạo khái niệm và
vai trò như trong bảng sau:
Nhãn Phương thức khởi tạo
U
Khái niệm hợp (concept
U
nion)
Q
Giới hạn số có điều kiện (Qualified number restrictions)
Bảng 1: Một vài phương thức khởi tạo trong Logic Mô tả
Sau đây là một vài loại logic mô tả đáng chú ý:
ALC được xem như logic mô tả chuẩn. Loggic này mở rộng AL với
khái niệm phủ định (không chỉ giới hạn trong khái niệm nguyên tố).
Logic này tương đương với logic hình thức K và logic mô tả ALUE (vì
một khi phủ định khái niệm được thêm vào trong ngôn ngữ, ta có thể mô
phỏng phương thức khởi tạo U và E).
FL
-
là tập con của AL nhưng không có khái niệm phủ định.
EL là tập con của ALE nhưng không có khái niệm đáy, phủ định khái
niệm nguyên tố và lượng hóa toàn thể.
EL++ mở rộng EL với khái niệm đáy, định danh, miền rời rạc và GCIs.
DL-Lite là tập con của ALIF, được thiết kế đặc biệt để hiệu quả trong
việc quản lý số lượng lớn các cá thể. Mở rộng n-ngôi (n-ary) của DL-
Lite có gọi là DLR-Lite.
S là viết tắt của logic ALCR
+
, do nó tương với logic hình thức S4.
SHIF(D) là logic được sử dụng trong ngôn ngữ OWL Lite.
SHOIN(D) là logic được sử dụng ngôn ngữ OWL DL.
SROIQ(D) là logic được sử dụng trong ngôn ngữ OWL 2.
Bảng sau thể hiện độ phức tạp của suy diễn trong một vài logic mô tả quan
trọng. Một kết quả gần đây cho thấy SROIQ(D) có độ phức tạp số mũ cao hơn
SHOIN(D), do phức hợp RIAs, và trong trường hợp đặc biệt là do khả năng
liên kết các vai trò có số lượng mũ.
Logic Phân lớp độ phức tạp
ALC với GCIs đơn giản
tri thức, do đó đây cũng thường là tác vụ duy nhất được xem xét.
Ví dụ 2: Những tác vụ sau đây có thể được tinh giản thành thỏa mãn cơ sở
tri thức:
Thỏa mãn khái niệm: C có thể được thỏa mãn đối với cơ sở tri thức K
nếu K
{x : C } có thể được thỏa mãn, với x là một cá thể mới, nghĩa
là một cá thể không xuất hiện trong K.
Gắn kết: Một khẳng định khái niệm a :C được gắn với cơ sở tri thức K
(ký hiệu K |= a : C ) nếu K
{a :
C } không thể thỏa mãn.
Một khẳng định vai trò (a, b) : R được gắn với một cơ sở tri thức K
(ký hiệu K |= (a, b) : R ) nếu K
{b : C } |= {a :
R .C }, cho một
khái niệm mới C .
Nếu logic mô tả chứa các khẳng định vai trò phủ định, thì phát biểu
K |= (a, b): R nếu K
{a, b}:
R } không thể thỏa mãn là đúng.
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 13
Các thuật toán dựa trên phân giải: Các thuật toán phân giải diễn dịch cơ
sở tri thức thành logic vị từ, căn cứ vào việc trong hầu hết trường hợp,
logic mô tả là các tập con của logic vị từ. Điều này cho phép các thuật
toán suy diễn hiện có và các cài đặt của chúng có thể được sử dụng.
Cách tiếp cận này hữu ích theo một quan điểm lý thuyết, cung cấp một
cận trên cho độ phức tạp. Trong một vài trường hợp, thuật toán này còn
giảm thiểu tình huống xấu nhất. Tuy nhiên, tính khả thi thực tế của các
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 14
thuật toán này bị nghi ngờ nhiều hơn vì chúng không tận dụng được yếu
tố logic mô tả có độ phức tạp thấp hơn.
Các thuật giải mang tính cấu trúc: Những thuật giải này tính toán gộp
khái niệm. Chúng chuẩn tắc hóa các khái niệm được kiểm tra và so sánh
cấu trúc cú pháp của các diễn giải khái niệm được chuẩn tắc hóa. Loại
thuật toán này có cơ sở vững chắc nhưng chỉ hoàn chỉnh cho logic mô tả
không quá giàu tính diễn đạt (logic mô tả sub-Boolean).
Các thuật giải dựa trên máy tự động: Những thuật toán này giải quyết
vấn đề của thỏa mãn khái niệm cho logic mô tả với thuộc tính mô hình
cây. Ý tưởng chính là chuyển hóa một cơ sở tri thức thành một máy tự
động dạng cây, theo cùng cách mà chúng chấp nhận các mô hình tương
tự để áp dụng phép kiểm tra rỗng cho toàn bộ mô hình máy tự động.
Phần lớn các bộ suy diễn dùng cho logic mô tả hiện có đều cài đặt các thuật
toán tableau. Sau đây là một vài bộ suy diễn thông dụng nhất:
RACER (Renamed ABox and Concept Expression Reasoners): Racer là
một bộ suy diễn hỗ trợ SHIQ với một vài kiểu dữ liệu. Những cải tiến
qua các phiên bản đầu đã tạo ra RACERPRO, được cài đặt trong Lisp và
hỗ trợ đầy đủ các kiểu dữ liệu OWL DL. RACERPRO là một sản phẩm
thương mại, mặc dù cũng có một vài bản quyền miễn phí dành cho mục
đích giảng dạy và nghiên cứu.
SHIQ(D)
Có
PELLET
SROIQ(D)
Có
FACT++
SROIQ(D)
Có
KAON2
SHIQ
Có
HERMIT
SHIQ
Không
Bảng 3: Các bộ suy diễn logic mô tả, logic và giao diện DIG được hỗ trợ
3.5 Các hệ logic mô tả
Hệ Logic mô tả là các hệ thống thông tin có sử dụng logic mô tả để biểu
diễn tri thức.
Các thành phần của hệ logic mô tả:
Bộ thuật ngữ (TBox): được sử dụng để lưu các thuật ngữ.
Bộ khẳng định (ABox): chứa hai dạng khẳng định là khẳng định khái
niệm C(a) và khẳng định vai trò R(a).
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 16
Hình 5: Kiến trúc hệ logic mô tả
3.5.1 Thế hệ thứ nhất
Lấy ý tưởng từ nghiên cứu về hành vi nhận thức của con người, đề
xuất về ngôn ngữ diễn đạt được bắt đầu thảo luận từ sau thập niên 60. Ví
Brachman bắt đầu phát triển một hệ thống biểu diễn mới (gọi là KL-ONE),
vốn đã bao gồm ý niệm của suy diễn tri thức ngầm định từ những phát biểu
[Brachman, 1977b; 1979]. Mặc dù tiếp cận ban đầu không dựa trên logic,
KL-ONE đã mở ra thời đại của các hệ thống biểu diễn dựa trên logic, có thể
được sử dụng để hình thức hóa các vấn đề ứng dụng như các vấn đề suy
diễn thông qua các khởi tạo được hỗ trợ bởi ngôn ngữ diễn đạt.
KRYPTON
Hệ thống biểu diễn tri thức KRYPTON [Brachman và một số người
khác, 1983b; 1983b; 1985] có thể xem như tiếp cận đầu tiên định nghĩa một
ngôn ngữ mới của họ KL-ONE với một ngữ nghĩa hình thức theo trường
phái Tarski. Hơn nữa, mục tiêu đặt ra là để khắc phục các vấn đề với khái
niệm cá thể trong KL-ONE [Nebel, 1990a, p. 63]. Cách tiếp cận diễn giải lai
ghép với một TBox và một ABox lần đầu tiên được cài đặt trong hệ thống
KRYPTON. Tương tự như KL-ONE, điểm khác biệt giữa từ gốc và các khái
niệm được định nghĩa và sự tính toán của các khái niệm nguyên tố đặc
trưng nhất với các cá thể thực thể của nó là một trong những ý tưởng cốt lõi
của KRYPTON.
NIKL, PENNI, KL-TWO
Ra đời cùng lúc với KRYPTON, NIKL được thiết kế như là hậu duệ của
KL-ONE. NIKL có nghĩa là New Implementation of KL-ONE [Schmolze and
Israel, 1983; Schmolze, 1985]. Các thành phần khẳng định của KL-ONE lúc
đầu được lược bỏ trong hệ thống NIKL. So sánh với cài đặt KL-ONE ban
đầu, các thuật toán trong bộ phân lớp của Nikl nhanh hơn về bình quân vì
thông tin “rõ ràng” được khai thác ở mức độ cao hơn.
Sau đó, một thành phần suy diễn được thêm vào cùng với hệ thống
PENNI, hệ thống dựa trên RUP [McAllester, 1982]. Hệ thống được tạo ra có
tên gọi là KL-TWO [Vilain, 1985].
KANDOR
Lập trình hướng Ontology Dương Hoàng Thanh
[Quantz và Kindermann, 1990; Peltason, 1991; Hoppe và một số người
khác, 1993]. Logic mô tả của hệ thống Back ban đầu có thể được gọi là
ALQR
-1
. Hệ thống này còn có hỗ trợ suy diễn với số và tập thuộc tính.
Trong hệ thống hậu duệ Flex [Quantz và một số người khác, 1995],
các thuật toán chưa hoàn chỉnh được cài đặt cho logic mô tả
Lập trình hướng Ontology Dương Hoàng Thanh
GVHD: TS. Nguyễn Tuấn Đăng Trang 19
ALCQRIFO. Thêm vào đó, suy diễn về đẳng thức và bất đẳng thức liên
quan đến số nguyên cũng được hỗ trợ.
KRIS
Sự phát triển của các hệ thống suy diễn hợp lý và hoàn chỉnh cho các
logic mô tả có khả năng diễn đạt cao hơn bắt đầu từ cuối thập kỷ 80. Một
trong những phát triển chính theo hướng này là hệ thống KRIS. Cách tiếp
cận của KRIS là cài đặt các thuật giải hợp lý và hoàn chỉnh cho một logic
giàu tính diễn đạt và phát triển những kỹ thuật tối ưu cho suy diễn TBox
nhằm hướng đến hiệu suất có thể chấp nhận được trong thực tế. Logic mô
tả của KRIS là ALCNF [Baader và Hollunder, 1991a; 1991b]. Thêm vào
đó, KRIS cung cấp kiểu liệt kê (toán tử O) và giao tiếp thử nghiệm cho việc
suy diễn về cái gọi là các miền rời rạc [Badder và Hanschke, 1991a; 1991b;
1992]. Vai trò hội được hỗ trợ với một cài đặt mẫu. Công việc trong dự án
KRIS tập trung vào việc phân lớp TBox. Không chỉ có thế, KRIS là một
trong những hệ thống đầu tiên cũng hỗ trợ suy diễn ABox hoàn chỉnh trong
logic giàu khả năng mô tả. Ngôn ngữ dùng để cài đặt KRIS là COMMONLISP.
CRACK
Một trong những mực tiêu nghiên cứu của hệ thống CRACK là để cài
đặt các giải thuật hợp lý và hoàn chỉnh cho việc tương tác với những suy
diễn về cá thể trong các thuật ngữ khái niệm. Thay vì cung cấp ngữ nghĩa
, đọc là ALC-choir), sự phát
triển của thế hệ kế tiếp của các hệ thống logic mô tả hợp lý và hoàn chỉnh
đã được bắt đầu vào cuối thập niên 90.
4 SƠ LƯỢC VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khái niệm hướng đối tượng được xây dựng trên nền tảng của khái niệm lập
trình có cấu trúc và sự trừu tượng hóa dữ liệu. Sự thay đổi căn bản ở chỗ, một
chương trình hướng đối tượng được thiết kế xoay quanh dữ liệu mà chúng ta có
thể làm việc trên đó, hơn là theo bản thân chức năng của chương trình. Điều này
hoàn toàn tự nhiên một khi chúng ta hiểu rằng mục tiêu của chương trình là xử
lý dữ liệu. Suy cho cùng, công việc mà máy tính thực hiện vẫn thường được gọi
là xử lý dữ liệu. Dữ liệu và thao tác liên kết với nhau ở một mức cơ bản (còn có
thể gọi là mức thấp), mỗi bên đều đòi hỏi đối tác có mục tiêu cụ thể, các chương
trình hướng đối tượng làm tường minh mối quan hệ này.
Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt là OOP)
hay chi tiết hơn là Lập trình định hướng đối tượng, chính là phương pháp lập
trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình.
Lập trình hướng đối tượng liên kết cấu trúc dữ liệu với các thao tác, theo
cách mà tất cả thường nghĩ về thế giới quanh mình. Chúng ta thường gắn một số
các hoạt động cụ thể với một loại hoạt động nào đó và đặt các giả thiết của mình
trên các quan hệ đó.
4.1 Các thành phần cơ bản
4.1.1 Lớp
Lớp là khuôn mẫu tạo ra đối tượng. Lớp cũng là kiểu dữ liệu do người
dùng định nghĩa và chứa các biến, thuộc tính cũng như phương thức. Một
lớp định nghĩa các đặc trưng trừu tượng của một sự vật (đối tượng), bao