Tải bản đầy đủ (.docx) (14 trang)

BÁO cáo bài tập đề tài tìm hiểu về các mô thức lập trì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 (124.75 KB, 14 trang )

Nguyễn Hữu Duy - 20200113

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
-----    -----

BÁO CÁO BÀI TẬP
Đề tài: Tìm hiểu về các mơ thức lập trình.
Giảng viên: Vũ Đức Vượng
Họ tên: Nguyễn Hữu Duy
MSSV: 20200113
Học phần: IT3040
Mã lớp: 132626

Hà Nội, năm 2022

1


Nguyễn Hữu Duy - 20200113

MỤC LỤC
I. Tìm hiều chung về các mơ thức lập trình
1.
2.
3.
4.
5.
6.
7.
8.


9.

Lập trình mệnh lệnh(Imperative paradigm)
Lập trình chức năng(Functional paradigm)
Lập trình hướng logic(Logical paradigm)
Lập trình hướng đối tượng(Object-oriented paradigm)
Lập trình trực quan(Visual paradigm)
Lập trình song song(Parallel paradigm)
Lập trình tương tranh(Concurrent paradigm)
Lập trình phân tán(Distributed paradigm)
Lập trình hướng dịch vụ(Service-oriented paradigm)

II. Tìm hiểu về lập trình hướng đối tượng
1.
2.
3.
4.
III.

Lập trình hướng đối tượng là gì?
Một số khái niệm cần biết trong OOP
Các nguyên lí cơ bản của OOP.
Các ưu điểm của lập trình hướng đối tượng.
Tài liệu tham khảo

2


Nguyễn Hữu Duy - 20200113


I. Tìm hiểu chung về các mơ thức lập trình
1. Lập trình mệnh lệnh( Imperative paradigm )
Trong khoa học máy tính, Imperative paradigm là một mơ thức lập trình sử
dụng các câu lệnh để thay đổi trạng thái của chương trình. Nó giống với
cách mà mệnh lệnh thức trong ngôn ngữ tự nhiên diễn tả mệnh lệnh, một
chương trình mệnh lệnh bao gồm các câu lệnh(command) cho máy tính dễ
thực hiện. Imperative paradigm tập trung vào miêu tả cách một chương trình
hoạt động.
Thành phần:
Declarative statements (câu lệnh khai báo): Cung cấp các tên cho
biến. Các biến có thể thay đổi giá trị trong q trình thực hiện chương
trinh.
Assignments statements (lệnh gán):Gán giá trị mới cho biến.
Program flow control statements (câu lệnh điều khiển cấu trúc chương
trình): Xác định trình tự thực hiện các lệnh trong chương trình.
Module( chia chương trình thành các chương trình con): Functions và
Procedures.
Ví dụ về hốn đổi giá trị của hai số a và b:
int main()
{
int a=5,b=10,t;
t=a;
a=b;
b=t;
}
Khi này, a=10; b=5.
2. Lập trình chức năng( Functional paradigm)
Trong khoa học máy tính, Functional paradigm là một mơ thức lập trình
theo phong cách xây dựng cấu trúc và các yếu tố của các chương trình máy
tính, bộ xử lí tính tốn như là sự đánh giá các hàm toán học nhằm tránh sự

thay đổi trang thái của dữ liệu. Đây là mơ thức lập trình khai
3


Nguyễn Hữu Duy - 20200113

báo( Declarative programming), được thực hiện bởi các biểu thức hoặc khai
báo thay vì các câu lệnh. Trong mã chức năng, giá trị đầu ra của hàm chỉ phụ
thuộc vào các đối số được truyền cho hàm. Vì vậy, việc gọi hàm f hai lần
cùng giá trị đối số x tạo ra cùng một kết quả f(x) mỗi lần
Thành phần:
Tập hợp các cấu trúc dữ liệu và các hàm liên quan
Tập hợp các hàm cơ sở
Tập hợp các tốn tử
Đặc trưng cơ bản: module hóa chương trình
Chức năng là biểu diễn của một biểu thức
Giải thuật thực hiện theo từng bước
Giá trị trả về là không thể biến đổi
Không thể thay đổi CTDL của giá trị nhưng có thể sao chép các thành
phần tạo nên giá trị đó
Tính tốn bằng cách gọi các chức năng

Ví dụ
int gcd(int a, int b)
{
If(b==0) return a;
Else return gcd(b,a%b);
}
Int main()
{

Int a=56,b=12;
gcd(a,b);
}
Khi này, kết quả in ra màn hình là 4.
3. Lập trình hướng logic( Logic paradigm)

4


Nguyễn Hữu Duy - 20200113

Logic paradigm là một mô thức lập trình mà phần lớp dựa trên tính logic
hình thức. Bất kì chương trình nào viết bằng ngơn ngữ lập trình logic là một
tập hợp các câu ở dạng logic, diễn đạt các sự kiện và quy tắc về một số vấn đề.
Các họ ngơn ngữ lập trình chính bao gồm Prolog, lập trình bộ trả lời (ASP) và
Datalog. Trong tất cả ngôn ngữ này, các quy tắc được viết dưới dạng mệnh
lệnh: H:-B1,…,Bn và được khai báo là hàm ý logic: H if B1 and
… Bn. Trong đó H được gọi là phần đầu của quy tắc và B1Bn được gọi là
phần thân. Sự kiện là các quy tắc khơng có phần than và viết dưới dạng cơ
bản là :H.
Việc đọc khai báo các chương trình logic có thể được sử dụng bởi một lập
trình viên để xác minh tính đúng đắn của chúng. Hơn nữa, các kĩ thuật
chuyển đổi chương trình dựa trên logic cũng có thể được sử dụng để chuyển
đổi các chương trình logic thành các chương trình tương đương logic hiệu
quả hơn. Trong ngơn ngữ lập trình logic Prolog, lập trình viên cũng có thể
sử dụng các giải quyết vấn đề đã biết của cơ chế thực thi để cải thiện hiệu
quả các chương trình
Ví dụ: Brother(X,Y) :Father(F,X),

Father(F,Y),


Mother(M,X),

Mother(M,Y), Male(X).

(X là anh trai của Y khi họ có chung bố(F), chung mẹ(M) và X có giới
tính nam).
4. Lập trình hướng đối tượng(Object-oriented-paradigm) Objectoriented-paradigm(OOP) là một mơ thưc lập trình dựa trên khái
niệm objects(đối tượng), có thể chứa dữ liệu, dưới dạng các trường thường
được gọi là thuộc tính và mã, dưới dạng thủ tục thường gọi là phương thức.
Một tính năng của các đối tượng là các thủ tục của đối tượng có thể truy cập
và thường sửa đổi các trường dữ liệu của đối tượng mà chúng được liên kết.
Trong OOP, các chương trình máy tính được thiết kế bằng cách làm cho
chúng ra khỏi các đối tượng tương tác với nhau. Có sự đa dạng đáng kể của
các ngôn ngữ OOP, nhưng những ngôn ngữ phổ biến nhất là dựa trên lớp, có
nghĩa là các đối tượng là các thể hiện của các lớp, thường xác định loại của
chúng.
5


Nguyễn Hữu Duy - 20200113

Ý tưởng: Các khái niệm và mơ hình tương tác trong thế giới thực.
Dữ liệu cũng như các thao tác trên dữ liệu được bao gói trong đối
tượng.
Cơ chế che giấu thông tin nội bộ được sử dụng để tránh những
tác động ở bên ngoài.
Các đối tượng tương tác với nhau qua truyền thơng điệp, đó là phép
ẩn dụ cho việc thực hiện các thao tác trên 1 đối tượng.
Trong phần lớp NNLT HĐT, đối tượng phân loại thành các lớp

+ Đối tượng trong các lớp có chung thuộc tính, cho phép lập trình trên
lớp thay và lập trình trên các đối tượng riêng lẻ.
+ Lớp đại diện cho các khái niệm còn đối tượng đại diện cho thể
hiện.
+ Lớp có tính kế thừa, cho phép mở rộng hay chun biệt hóa.

Nhiều ngơn ngữ lập trình được sử dụng rộng rãi nhất như C++, Object
Pascal, Java, Python,… là các ngơn ngữ đa mơ hình hỗ trợ lập trình
hướng đối tượng mở mức độ lớn hơn hoặc thấp hơn, thường kết hợp với
lập trình thủ tục, bắt buộc. Các ngôn ngữ OOP phổ biến bao gồm Java, C+
+, C#, Python, PHP,…
5. Lập trình trực quan(Visual paradigm)
Visual paradigm language là bất kì ngơn ngữ lập trình nào đó cho phép
người dùng tạo ra chương trình bằng cách thao tác các yếu tố chương trình
bằng đồ họa thay vì chỉ định chúng bằng văn bản. Một VPL cho phép lập
trình với các biểu thức trực quan, sắp xếp khơng gian các kí hiệu văn bản và
đồ họa, được sử dụng là thành phần cú pháp hoặc kí hiệu phụ.
Ví dụ: Nhiều VPL( được gọi là lập trình dataflow hoặc sơ đồ) được dựa
trên ý tưởng về “hộp và mũi tên”, trong đó các hộp hoặc đối tượng màn
hình khác được coi là các thực thể, được kết nối bằng mũi tên, đường hoặc
vòng cung biểu thị quan hệ.
6. Lập trình song song( Parallel paradigm)
Tính tốn song song( Parallel Computing) là việc chia một công việc ra
thành các công việc nhỏ và cho các công việc này thực hiện đồng thời với
nhau bởi các hệ thống nhất có nhiều bộ vi xử lí( multiprocessor) hay bộ vi
xử lí đa nhân( multicore) nhằm giảm thời gian thực hiện cơng việc đó
xuống. Việc lập trình để tách ra các cơng việc nhỏ và sắp xếp để xử lí song
song thì được gọi là lập trinh song song.
Tính tốn song song có liên quan chặt chẽ với tính toan tương tranh, các
cơng cụ này thường được sử dụng cùng nhau và thường bị xáo trộn, mặc dù

6


Nguyễn Hữu Duy - 20200113

hai yếu tố khác biệt: có thể có song song mà khơng cần tương tranh( như bitlevel parallelism) và đồng thời khơng có song song( như đa nhiệm bằng cách
chia sẻ thời gian CPU lõi đơn). Trong điện tốn song song, một tác vụ tính tốn
thường được chia thành nhiều, thường là nhiều tác vụ phụ rất giống nhau có thể
được xử lí độc lập và kết quả được kết hợp sau đó, sau khi hoan thanh. Ngược
lại, trong điện toan đồng thời, các quy trinh khác nhau thường không được giải
quyết các nhiệm vụ liên quan; khi họ làm, như là điển hình trong điện toan
phân tán, các tác vụ riêng biệt có thể có tinh chất đa dạng và thường yêu cầu
một số giao tiếp giữa các quy trinh trong khi thực hiện.
Các máy tinh song song có thể được phân loại một cách đại khai theo mức
độ mà phần cứng hỗ trợ song song, với các máy tinh đa lõi và đa xử lí có
nhiều thanh phần xử lí trong một máy, trong khi các cụm, MPP và lưới sử
dụng nhiều máy tinh để làm việc như nhau bài tập. Kiến trúc máy tinh song
song chuyên dụng đôi khi được sử dụng cùng các bộ xử lí truyền thống, để
tăng tốc các tác vụ cụ thể.
Trong một số trường hợp, tinh song song là trong suốt đối với người lập
trình, chẳng hạn như song song ở mức bit hoặc mức hướng dẫn, nhưng các
thuật toán song song rõ ràng, đặc biệt là khi các thuật tốn sử dụng đồng thời,
khó viết hơn các trinh tự tuần tự, bởi vì đồng thời giới thiệu một số mới các lõi
phần mềm tiềm năng, trong đó điều kiện chủng tộc là phổ biến nhất. Giao tiếp
và đồng bộ hóa giữa các nhiệm vụ khác nhau thường là một trong những trở
ngại lớn nhất để có được hiệu suất chương trinh song song tốt.
7. Lập trinh tương tranh( Concurrent paradigm)
Lập trinh tương tranh là một hình thức điện tốn trong đó một số tinh
toan được thực hiện trong các khoảng thời gian chồng chéo, đồng thời là
một phần tử liên tục( một hoàn thành trước khi bắt đầu tiếp theo) . Đây là

một thuộc tính của một hệ thống, đây có thể là một chương trinh riêng lẻ,
một máy tinh và có một điểm thực thi riêng hoặc “luồng điều khiển” cho
mỗi tinh toán( quy trinh) . Một hệ thống đồng thời là một hệ thống trong đó
một tính tốn có thể tiến lên mà khơng cần chờ tất cả các tinh toan các hoan
thanh.
Cũng như một mô thức lập trinh, lập trinh tương tranh là một dạng lập
trinh modun, cụ thể là chia nhỏ một tinh toan tổng thể thanh các tinh toan
con có thể được thực hiện đồng thời. Những người tiên phong trong linh vực
tinh toan đồng thời bao gồm Edsger Dijkstra, Per Brinch Hansen và Car
Hoare.
8. Lập trinh phân tán( Distributed paradigm)
7


Nguyễn Hữu Duy - 20200113

Lập trinh phân tán là một dạng của lập trinh song song( tinh toan song
song). Lập trình song song tạo ra mối liên hệ giữa máy tinh và các đơn vị
tinh toan, khiến chúng hoạt động đồng thời đối với một vấn đề cụ thể( dự
báo thời tiết chẳng hạn). Các đơn vị tinh toan có thể đặt rất gần nhau hoặc
tách rời nhau. Khi các đơn vị được tách rời, ta goi đó là lập trinh phân tán.
Với mơ hình lập trinh này, các đơn vị tinh toan thường rất khác nhau, cũng
như sự khác nhau giữa các hệ điều hanh và thiết lập mạng máy tinh. Những
yếu tố đó khiến cho việc lập trinh các tinh toan của máy tinh trở nên tương
đối phức tập và khó khăn. Lập trinh mạng phân tán thường có hai khai niệm
chinh: peer to peer, client-server,…Peer to peer là một lập trinh ngang hàng
giữa hai máy tinh. Còn lập trinh client -server là lập trinh cho phép n máy
client kết nối tới m Server – đây cũng là mơ hình chúng ta sẽ gặp nhiều
trong thực tế.
9. Lập trình hướng dịch vụ( Service-oriented paradigm)

Lập trình hướng dịch vụ (SOP) là một mơ hình lập trình sử dụng "dịch vụ"
làm đơn vị hoạt động của máy tính, để thiết kế và triển khai các ứng dụng
kinh doanh tích hợp và các chương trình phần mềm quan trọng. Các dịch vụ
có thể đại diện cho các bước của quy trình kinh doanh và do đó một trong
những ứng dụng chính của mơ hình này là phân phối hiệu quả chi phí các
ứng dụng kinh doanh độc lập hoặc tổng hợp có thể "tích hợp từ trong ra
ngồi"
SOP vốn thúc đẩy kiến trúc hướng dịch vụ (SOA), tuy nhiên, nó khơng giống
với SOA. Trong khi SOA tập trung vào giao tiếp giữa các hệ thống sử dụng
"dịch vụ", SOP cung cấp một kỹ thuật mới để xây dựng các mô- đun ứng dụng
linh hoạt sử dụng các dịch vụ trong bộ nhớ làm đơn vị công việc. Dịch vụ trong
bộ nhớ trong SOP có thể được ngoại hóa một cách minh bạch như một hoạt
động dịch vụ web. Do các tiêu chuẩn Dịch vụ Web độc lập với ngôn ngữ và
nền tảng, SOP bao gồm tất cả các mơ hình, ngơn ngữ và nền tảng lập trình hiện
có. Trong SOP, thiết kế của các chương trình xoay quanh ngữ nghĩa của các
cuộc gọi dịch vụ, định tuyến logic và mô tả luồng dữ liệu trên các giao diện
dịch vụ được xác định rõ ràng. Tất cả các mơ-đun chương trình SOP được đóng
gói dưới dạng dịch vụ và một dịch vụ có thể bao gồm các dịch vụ lồng nhau
khác theo cách phân cấp với độ sâu hầu như vô hạn đối với hệ thống phân cấp
ngăn xếp dịch vụ này. Một dịch vụ tổng hợp cũng có thể chứa các cấu trúc lập
trình một số cấu trúc cụ thể và duy nhất đối với SOP. Dịch vụ có thể là một
thành phần bên ngoài từ một hệ thống khác được truy cập thông qua việc sử
dụng các tiêu chuẩn dịch vụ web hoặc bất kỳ API
8


Nguyễn Hữu Duy - 20200113

độc quyền nào thông qua cơ chế trình cắm thêm trong bộ nhớ. Mặc dù SOP
hỗ trợ các cấu trúc lập trình cơ bản để giải trình tự, lựa chọn và lặp lại,

nhưng nó được phân biệt với một loạt cấu trúc lập trình mới cung cấp khả
năng gốc tích hợp hướng tới thao tác danh sách dữ liệu, tích hợp dữ liệu, đa
luồng tự động của các mô-đun dịch vụ, quản lý ngữ cảnh khai báo và sự
đồng bộ của các dịch vụ. Thiết kế SOP cho phép các lập trình viên đồng bộ
hóa về mặt ngữ nghĩa việc thực thi các dịch vụ để đảm bảo rằng nó là chính
xác hoặc để khai báo một mô-đun dịch vụ làm ranh giới giao dịch với hành
vi cam kết / khôi phục tự động. Các công cụ thiết kế ngữ nghĩa và nền tảng
tự động hóa thời gian chạy có thể được xây dựng để hỗ trợ các khái niệm cơ
bản của SOP. Ví dụ: một máy ảo dịch vụ (SVM) tự động tạo các đối tượng
dịch vụ như các đơn vị công việc và quản lý ngữ cảnh của chúng có thể
được thiết kế để chạy dựa trên siêu dữ liệu chương trình SOP được lưu trữ
trong XML và được tạo bởi một công cụ tự động hóa thời gian thiết kế.
Theo thuật ngữ SOA, SVM vừa là nhà sản xuất dịch vụ vừa là người tiêu
dùng dịch vụ.
II. Tìm hiểu về lập trình hướng đối tượng
1. Lập trình hướng đối tượng là gì?
Lập trình hướng đối tượng (Tiếng anh: Object -oriented paradigm, viết
tắt: OOP) là một mẫu hình lập trình dựa trên khái niệm "cơng nghệ đối
tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường,
thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành
các phương thức. Phương thức giúp cho đối tượng có thể truy xuất và hiệu
chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương
tác (đối tượng được hỗ trợ các phương thức "this" hoặc "self"). Trong lập
trình hướng đối tượng, chương trình máy tính được thiết kế bằng cách tách
nó ra khỏi phạm vi các đối tượng tương tác với nhau. Ngơn ngữ lập trình
hướng đối tượng khá đa dạng, phần lớn là các ngôn ngữ lập trình theo lớp,
nghĩa là các đối tượng trong các ngôn ngữ này được xem như thực thể của
một lớp, được dùng để định nghĩa một kiểu dữ liệu.

OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo

trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung
vào các đối tượng phần mềm ở bậc cao hơn. Ngoài ra, nhiều người còn cho
rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các
phương pháp trước đó. Một cách giản lược, đây là khái niệm và là một nỗ
lực nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo
9


Nguyễn Hữu Duy - 20200113

ra các ứng dụng mà các yếu tố bên ngồi có thể tương tác với các chương
trình đó giống như là tương tác với các đối tượng vật lý.
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ
liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng
có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến
hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các
thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối
tượng khác hay đến môi trường.
Đa phần các ngôn ngữ lập trình thơng dụng nhất hiện nay (như C++,
Delphi,Java,Python etc.) là các ngơn ngữ lập trình đa mẫu hình và đều hỗ trợ
lập trình hướng đối tượng ở nhiều mức độ khác nhau, thường được kết hợp
với lập trình mệnh lệnh, lập trình thủ tục. Các ngơn ngữ lập trình hướng đối
tượng đáng chú ý gồm có Java, C++, C#, Python, PHP, Ruby, Perl, Object
Pascal,…
2. Một số khái niệm cần biết
trong OOP a. Lớp(class)
Một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng.
Trong một lớp, người ta thường dùng các biến để mô tả các thuộc
tính và các hàm để mơ tả các phương thức của đối tượng. Khi đã định
nghĩa được lớp, ta có thể tạo ra các đối tượng từ lớp này. Để việc sử

dụng được dễ dàng, thông qua hệ thống hàm tạo (constructor), người
ta dùng lớp như một kiểu dữ liệu để tạo ra các đối tượng.
b.
Lớp con(subclass)
Lớp con là một lớp thơng thường nhưng có thêm tính chất kế thừa
một phần hay tồn bộ các đặc tính của một lớp khác. Lớp chia sẻ sự
kế thừa gọi là lớp cha (parent class).
c.
Phương thức(method)
Phương thức của một lớp thường được dùng để mô tả các hành vi của
đối tượng (hoặc của lớp) . Ví dụ như đối tượng thuộc lớp điện thoại có
các hành vi sau: Đổ chng, chuyển tín hiệu từ sóng sang dạng nghe
được, chuyển tín hiệu giọng nói sang dạng chuẩn, chuyển tín hiệu lên
tổng đài.v.v. Khi thiết kế, người ta có thể dùng các phương thức để mô tả
và thực hiện các hành vi của đối tượng. Mỗi phương thức thường được
định nghĩa là một hàm, các thao tác để thực hiện hành vi đó được viết tại
nội dung của hàm. Khi thực hiện hành vi này, đối tượng có thể phải thực
hiện các hành vi khác. Ví dụ như điện thoại phải chuyển tín hiệu giọng
nói sang dạng chuẩn trước khi chuyển lên tổng đài. Cho nên một phương
thức trong một lớp có thể sử dụng phương thức khác trong quá trình
thực hiện hành vi của mình.
10


Nguyễn Hữu Duy - 20200113

d. Thuộc tính(attribute)
Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham số nội
tại của lớp đó. Ở đây, vai trị quan trọng nhất của các thuộc tính là các
biến vì chúng sẽ có thể bị thay đổi trong suốt q trình hoạt động của

một đối tượng. Các thuộc tính có thể được xác định kiểu và kiểu của
chúng có thể là các kiểu dữ liệu cổ điển hay đó là một lớp đã định
nghĩa từ trước. Như đã ghi, khi một lớp đã được thực thể hố thành
đối tượng cụ thể thì tập hợp các giá trị của các biến nội tại làm thành
trạng thái của đối tượng. Giống như trường hợp của phương thức, tùy
theo người viết mã, biến nội tại có thể chỉ được dùng bên trong các
phương thức của chính lớp đó, có thể cho phép các câu lệnh bên ngồi
lớp, hay chỉ cho phép các lớp có quan hệ đặc biệt như là quan hệ lớp
con, (và quan hệ bạn bè (friend) trong C++) được phép dùng tới nó
(hay thay đổi giá trị của nó). Mỗi thuộc tính của một lớp còn được gọi
là thành viên dữ liệu của lớp đó.
e. Quan hệ giữa lớp và đối tượng
Lớp trong quan niệm thông thường là cách phân loại các thực thể
dựa trên những đặc điểm chung của các thực thể đó. Do đó lớp là khái
niệm mang tính trìu tượng hóa rất cao. Ví dụ như lớp "người" dùng để
chỉ những thực thể sống trên Trái Đất có những thuộc tính: có hai
chân, hai bàn tay khéo léo, có tư duy, ngơn ngữ v.v và có phương
thức: giao tiếp bằng ngôn ngữ, tư duy, đi, đứng bằng hai chân... Khi
đó hai người cụ thể ơng A, ơng B là các đối tượng thuộc lớp người.
Trong ngơn ngữ lập trình, ta cũng hiểu khái niệm lớp tương tự, cho
nên ta có q trình "Thực thể hóa" sau, tạo một đối tượng thuộc một
lớp đã được ta định nghĩa (phân loại).
f. Cộng đồng(Public)
Cơng cộng là một tính chất được dùng để gán cho các phương thức,
các biến nội tại, hay các lớp mà khi khai báo thì người lập trình đã
cho phép các câu lệnh bên ngoài cũng như các đối tượng khác được
phép dùng đến nó.
Ví dụ: Trong C++ khai báo public: int my_var; thì biến my_var có
hai tính chất là tính cơng cộng và là một integer cả hai tính chất này
hợp thành đặc tính của biến my_var khiến nó có thể được sử dụng hay

thay đổi giá trị của nó (bởi các câu lệnh) ở mọi nơi bên ngoài lẫn bên
trong của lớp.
g. Riêng tư(Private)
Riêng tư là sự thể hiện tính chất đóng mạnh nhất (của một đặc tính
hay một lớp) . Khi dùng tính chất này gán cho một biến, một phương
thức thì biến hay phương thức đó chỉ có thể được sử dụng bên trong
11


Nguyễn Hữu Duy - 20200113

của lớp mà chúng được định nghĩa. Mọi nỗ lực dùng trực tiếp đến
chúng từ bên ngoài qua các câu lệnh hay từ các lớp con sẽ bị phủ nhận
hay bị lỗi.
h. Bảo tồn(Protected)
Tùy theo ngôn ngữ, sẽ có vài điểm nhỏ khác nhau về cách hiểu tính
chất này. Nhìn chung đây là tính chất mà khi dùng để áp dụng cho các
phương thức, các biến nội tại, hay các lớp thì chỉ có trong nội bộ của
lớp đó hay các lớp con của nó (hay trong nội bộ một gói như trong
Java) được phép gọi đến hay dùng đến các phương pháp, biến hay lớp
đó.
So với tính chất riêng tư thì tính bảo tồn rộng rãi hơn về nghĩa chia
sẻ dữ liệu hay chức năng. Nó cho phép một số trường hợp được
dùng tới các đặc tính của một lớp (từ một lớp con chẳng hạn).
3. Các nguyên lí cơ bản của OOP
Đối tượng (object): Các dữ liệu và chỉ thị được kết hợp vào một đơn vị
đầy đủ tạo nên một đối tượng. Đơn vị này tương đương với một chương
trình con và vì thế các đối tượng sẽ được chia thành hai bộ phận chính: phần
các phương thức (method) và phần các thuộc tính (attribute / Properties).
Trong thực tế, các phương thức của đối tượng là các hàm và các thuộc tính

của nó là các biến, các tham số hay hằng nội tại của một đối tượng (hay nói
cách khác tập hợp các dữ liệu nội tại tạo thành thuộc tính của đối tượng).
Các phương thức là phương tiện để sử dụng một đối tượng trong khi các
thuộc tính sẽ mơ tả đối tượng có những tính chất gì.
Các phương thức và các thuộc tính thường gắn chặt với thực tế các đặc tính
và sử dụng của một đối tượng. Trong thực tế, các đối tượng thường được trìu
tượng hóa qua việc định nghĩa của các lớp(class) . Tập hợp các giá trị hiện
có của các thuộc tính tạo nên các trạng thái của một đối tượng. Mỗi phương
thức hay mỗi dữ liệu nội tại cùng với các tính chất được định nghĩa (bởi
người lập trình) được xem là một đặc tính riêng của đối tượng. Nếu khơng
có gì lầm lẫn thì tập hợp các đặc tính này gọi chung là đặc tính của đối
tượng.
Lập trình hướng đối tượng là một phương pháp lập trình có 4 tính chất
sau:
Tính trừu tượng (abstraction): Đây là khả năng của chương trình
bỏ qua hay khơng chú ý đến một số khía cạnh của thơng tin mà nó
đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào
những cốt lõi cần thiết. Mỗi đối tượng phục vụ như là một "động tử"
có thể hồn tất các cơng việc một cách nội bộ, báo cáo, thay đổi trạng
thái của nó và liên lạc với các đối tượng khác mà không cần cho biết
12


Nguyễn Hữu Duy - 20200113

làm cách nào đối tượng tiến hành được các thao tác. Tính chất này
thường được gọi là sự trừu tượng của dữ liệu.
Tính trừu tượng cịn thể hiện qua việc một đối tượng ban đầu có
thể có một số đặc điểm chung cho nhiều đối tượng khác như là sự
mở rộng của nó nhưng bản thân đối tượng ban đầu này có thể khơng

có các biện pháp thi hành. Tính trừu tượng này thường được xác định
trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng.
Tính đóng gói (encapsulation) và che giấu thơng tin (information
hiding): Tính chất này khơng cho phép người sử dụng các đối tượng
thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức
nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho
phép mơi trường bên ngồi tác động lên các dữ liệu nội tại của một
đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã.
Đây là tính chất đảm bảo sự tồn vẹn của đối tượng.
Tính đa hình (polymorphism): Thể hiện thơng qua việc gửi
các thơng điệp (message). Việc gửi các thơng điệp này có thể so sánh
như việc gọi các hàm bên trong của một đối tượng. Các phương thức
dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó
được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định
nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho
một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một
tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng
theo đặc tính của từng đối tượng mà khơng bị nhầm lẫn.
Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng
có thể có sẵn các đặc tính mà đối tượng khác đã có thơng qua kế thừa.
Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính
sẵn có mà khơng phải tiến hành định nghĩa lại. Tuy nhiên, không phải
ngôn ngữ định hướng đối tượng nào cũng có tính chất này.
4.

Các ưu điểm của lập trình hướng đối tượng
Dựa trên ngun lí kế thừa, trong q trình mơ tả các lớp có thể loại
bỏ những chương trình bị lặp, dư. Và có thể mở rộng khả năng sử
dụng các lớp mà không cần thực hiện lại. Tối ưu và tái sử dụng code
hiệu quả.

Đảm bảo rút ngắn thời gian xây dựng hệ thống và tăng năng suất thực
hiện.
Sự xuất hiện của 2 khái niệm mới là lớp và đối tượng chính là đặc
trưng của phương pháp lập trình hướng đối tượng. Nó đã giải
13


Nguyễn Hữu Duy - 20200113

quyết được các khuyết điểm của phương pháp lập trình hướng cấu
trúc để lại. Ngồi ra 2 khái niệm này đã giúp biểu diễn tốt hơn thế giới
thực trên máy tính.
III.
Tài liệu tham khảo
- />- />- Tài liệu online, giáo trình

14



×