Tải bản đầy đủ (.doc) (24 trang)

Đặc trưng các ngôn ngữ 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 (421.44 KB, 24 trang )

Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
I. KHÁI NIỆM VỀ LẬP TRÌNH.
Lập trình là quá trình cung cấp các chỉ lệnh cho máy tính để báo cho bộ vi xử
lý biết phải làm những gì.
Các bước chính trong lập trình gồm phân tích thiết kế, lập mã, kiểm thử và
bảo trì, xây dựng tài liệu. Trong đó :
• Thiết kế : là quyết định trong chương trình cần có những gì.
• Lập mã : là sử dụng một ngôn ngữ lập trình để biểu diễn logic
chương trình dưới dạng mà máy có thể đọc hiểu được và nhập tài liệu
nội bộ vào chương trình đó.
• Kiểm thử và bảo trì : là tìm hiểu và hiệu chỉnh các trục trặc của
chương trình cúng như nấng cấp chương trình cho phù hợp với nhu cầu
mới.
• Xây dựng tài liệu : là sưu tập và thành lập các tài liệu hướng dẫn sử
dụng với chương trình đó.
II. SƠ LƯỢC VỀ CÁC KỸ THUẬT LẬP TRÌNH
Ban đầu, những chương trình máy tính đầu tiên được viết dưới dạng tuyến
tính, có nghĩa là các đoạn mã lệnh được viết một cách lần lượt từ trên xuống
dưới để thực hiện lần lượt từng chức năng của chương trình, nhiều đoạn lệnh
được chép lại khi chức năng này được dùng đến trong những chương trình
khác, kỹ thuật lập trình lúc này mới chỉ ở mức sơ khai.
Khi kích thước của các chương trình lớn dần lên cùng với những đòi hỏi ngày
càng cao hơn của các phần mềm nảy sinh nhu cầu sử dụng lại những đoạn mã
trong cũng như như cầu làm cho chương trình trở lên trong sáng hơn để tìm
lỗi, sửa chữa và phát triển. Nhu cầu này đánh dấu sự ra đời của phương pháp
lập trình có cấu trúc. Trong phương pháp này người ta chia nhỏ chương trình
ra thành những thủ tục riêng để thực hiện những chức năng riêng rẽ mà
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội
1
Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình


những người lập trình có thể sử dụng mà không cần để ý đến sự hoạt động
bên trong của chúng như thế nào. Đó chính là khái niệm trừu tượng hoá
(Abstraction) mà ở đây là sự trừu tượng hoá về chức năng. Có thể coi trừu
tượng hoá như khả năng quan sát một sự việc nào đó mà không cần xem xét
đến các chi tiết cụ thể bên trong của nó như thế nào. Sự trừu tượng hoá chức
năng chính là nền tảng của lập trình có cấu trúc. Đây có thể coi là một bước
tiến lớn trong lĩnh vực lập trình.
Tuy nhiên, dần dần phương pháp này dần dần không đủ khả năng đáp ứng với
những đòi hỏi mới. Đó là khi qui mô của phần mềm ngày càng lớn lên thì vìa
trò của việc xây dựng các cấu trúc dữ liệu ngày càng tăng ngang hàng với kỹ
năng lập trình (hay giải thuật). Các cấu trúc dữ liệu được sử dụng ngày càng
đa dạng rất dễ gây nên tình trạng lộn xộn và mất điều khiển. Chính điều này
đã dẫn đến như cầu trừu trượng hoá đối với dữ liệu. Khi có trừu tượng hoá dữ
liệu thì các phần tử dữ liệu trong chương trình có thể được sử dụng ở bất cứ
nơi nào mà không cần quan tâm đến cấu trúc mà người ta đã xây dựng cho nó.
Việc này tiết kiêm được nhiều thời gian và công sức khi lập trình.
Như vậy, lý thuyết về hướng đối tượng được xây dựng trên cơ sở sự trừu
tượng hoá ở mức cao về cả dữ liệu cũng như những hoạt động đi kèm với
những dữ liệu đó. Và cách tiếp cận hướng đối tượng này ngày càng được ứng
dụng rộng rãi trong mọi lĩnh vực của tin học chữ không chỉ nằm bó hẹp trong
phạm vi lập trình.
Tiếp đó, trong sự phát triển của các sản phẩm thương mại đã xuất hiện nhu
cầu phân mảnh đối tượng thành các thành phần nhỏ lẻ, có thể lắp ghép với
nhau. Đó chính là sự ra đời của các hướng tiếp cận module và component-
base. Như vậy, thay vì chỉ bán một sản phẩm nguyên khối với đầy đủ các
chức năng, các hãng có thể bán cho khách hàng những thành phần nào mà họ
cần. Nhưng quan trọng nhất, đó là cách lập trình. Các chương trình được chia
thành các thành phần độc, thành các module riêng, có thể tái sử dụng cho các
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội

2
Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
chương trình khác. Việc lập trình giờ đây có thể xem là trò chời sắp chữ, lầy
thành phần này ghép vào thành phần khác để tạo ra phầm mềm hay là một
thành phần mới. Ở đây, tính trừu tượng đã được nâng cao thêm một bước.
Những kỹ thuật lập trình mới này đưa ra những quan niệm mới của giới lập
trình, nó cũng ảnh hưởng cách thức làm việc của họ. Kết hợp sử dụng các kỹ
thuật lập trình trên, giới lập trình đã có những cách để giải quyết những bài
toán khó trong các yêu cầu của phầm mềm hiện nay, đó là :
• Phải xây dựng chương trình sáng dễ đọc, dễ hiểu. Có tính trừu tượng
hoá cao.
• Trong trường hợp chương trình có lỗi hoặc trong trường hợp muốn sửa
đổi chương trình cho tốt hơn, mạnh hơn, người sử dụng chương trình
có thể sửa đổi một cách dễ dàng.
• Chương trình đòi hỏi thời gian phát triển ngắn.
• Có khả năng nâng cấp, chi nhỏ dễ dàng.
• Tái sử dụng những chương trình có sẵn, tiết kiệm công sức và tiền của
đã bỏ ra.
Có thể tổng kết các nhược điểm của các phương pháp lập trình như sau:
1. Lập trình tuyến tính vốn đã mang trong mình nó đầy rẫy những nhược điểm
như:
• Không có phương tiện để sử dụng lại phần mã lệnh đã viết từ trước làm
cho các đoạn lệnh có thể bị lặp lại ở nhiều nơi trong chương trình dẫn
tới mã lệnh dài, vất vả cho người lập trình, khó kiểm soát.
• Chương trình được điều khiển để nhảy tới nhiều nơi trong mã lệnh-
Không có cấu trúc, khi không giải thích rõ tại sao thì gây ra khó hiểu
đôi khi ngay cả người lập trình đoạn mã đó khi xem lại cũng thấy khó
khăn.
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội

3
Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
• Không có khả năng kiểm soát phạm vi nhìn thấy của dữ liệu. Mọi dữ
liệu trong chương trình đều được coi là toàn cục và có thể bị thay đổi ở
bất cứ nơi đâu ==> khó kiểm soát và thiếu an toàn cho thông tin.
2. Lập trình có cấu trúc dã giải quyết được hầu hết các nhược điểm của lập
trình tuyến tính bằng cách chia công việc thành các công việc nhỏ hơn tương
ứng vói các thủ tục và hàm trong chương trình. Đã phân biệt rõ đâu là biến
toàn cục và đâu là biến cục bộ, cho phép ta sử dụng lại các đoạn mã đã viết từ
trước nhưng nó vẫn còn tồn tại một số nhược điểm sau:
• Do chương trình bây giờ được chia làm các hàm và các thủ tục, các dữ
liệu (trong đó có các dữ liệu dùng chung) được truy xuất trong nhiều
hàm và thủ tục khác nhau. Khi có sự thay đổi về kiểu dữ liệu đó thì sẽ
đẫn đến ta phải hiệu chỉnh lại tất cả các đoạn mã có liên quan đến kiểu
dữ liệu vừa bị thay đổi.
• Khi ta làm việc với nhóm, mỗi nhà lập trình được giao viết một tập các
hàm và một tập các kiểu dữ liệu (trong đó có các kiểu dữ liệu dùng
chung). Mỗi sự thay đổi về kiểu dữ liệu trong hàm, thủ tục của nhà lập
trình viên này sẽ làm ảnh hưởng đến công việc của các nhà lập trình
viên khác trong nhóm do đó phải mất nhiều thời gian để sửa lại chương
trình.
• Tuy nhiên không thể phủ nhận được một điều là, trong môi trường làm
việc theo nhóm thì lập trình có cấu trúc là dễ thực hiện.
3. Lập trình hướng đối tượng (OOP).
• Lập trình hướng đối tượng với nguyên lý kế thừa giúp ta loại bỏ được
những đoạn chương trình khỏi lặp lại nhiều lần. Mở rộng khả năng sử
dụng của các lớp đã được xây dựng.
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội
4

Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
• Chương trình được xây dựng từ những đối tượng có trao đổi thông tin
cho nhau. Việc xây dựng được thực hiện theo quy trình chứ không phải
dựa vào kinh nghiệm như trước từ đó rút ngắn được thời gian xây dựng.
• Có các nguyên lý bảo vệ thông tin, thông tin chỉ có thể bị thay đổi bởi
những đoạn chương trình có quyền thay đổi thông tin mà không thể là
bất cứ đoạn chương trình nào khác.
• Ta có thể ánh xạ đối tượng của bài toán vào đối tượng trong chương
trình.
• Những hệ thống hướng đối tượng dễ mở rộng và nâng cấp thành những
hệ thống lớn.
• Có thể quản lý được độ phức tạp của những sản phẩm phần mềm
• Tuy nhiên không phải trong hệ thống hướng đối tượng nào cũng có đầy
đủ những ưu điểm trên. Khả năng để có những tính chất trên còn phải
phụ thuộc vào lĩnh vực của bài toán đề ra.
4. Các ngôn ngữ lập trình đứng trên phương diện hướng đối tượng có thể chia
thành hai loại như sau:
• Ngôn ngữ dựa trên đối tượng (object-base): C, Pascal.
• Ngôn ngữ lập trình hướng đối tượng (object-oriented)-Các đặc tính dựa
trên hướng đối tượng + kế thừa + liên kết động: Smalltask, C
++
, Object
Pascal ...
III . LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Những khó khăn trong lập trình hướng cấu trúc :
Khi độ phức tạp của chương trình tăng lên, sự phụ thuộc của nó vào các kiểu
dữ liệu cơ bản mà nó sử lý cũng tăng theo. Vấn đề trở nên rõ ràng rằng cấu
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội
5

Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
trúc dữ liệu trong chương trình quan trọng không kém các phép toán thực hiện
trên chúng. Điều này trở nên hiển nhiên khi chương trình càng tăng về kích
thước. Các kiểu dữ liệu xử lý trong nhiều thủ tục bên trong một chương trình
có cấu trúc, và khi có sự thay đổi trong các kiểu dữ liệu này thì cũng phải thực
hiện cả những thay đổi ở mọi nơi có các tác động lên kiểu dữ liệu đó. Đây là
một công việc tốn thời gian và hiệu quả đối với các chương trình có hàng
nghìn dòng lệnh và hàng trăm hàm.
Một nhược điểm nữa của lập trình có cấu trúc lộ ra khi cần phải dùng nhiều
người để lập trình cho một ứng dụng. Trong một chương trình có cấu trúc,
từng người được giao xây dựng một tập các hàm và kiểu dữ liệu dùng chung
cho lẫn nhau cho nên những thay đổi về cấu trúc dữ liệu của người này sẽ nh
hưng tới công việc của người khác, những sai sót trong liên lạc giữa các thành
viên trong nhóm có thể dẫn tới việc mất thời gian để viết lại.
1. Lập trình hướng đối tượng là gì.
Lập trình hướng đối tượng (object oriented programming –gọi tắc là OOP)
hay chi tiết hơn 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 (Object)làm nền tảng để xây dựng thuật giải xây dựng
chương trình . Các thao tác (thủ tục ) trong đối tượng được gọi là các phương
thức (method) hay hành vi (behaviour) của đối tượng đó. Phương thức và dữ
liệu của đối tượng luôn luôn tác động lẫn nhau và có vai trò ngang nhau trong
đối tượng. Phương thức của đối tượng được qui định bởi dữ liệu và ngược lại.
Dữ liệu của đối tượng được đặc trưng bởi các phương thức của đối tượng.
Chính nhờ sự gắn bó đó chúng ta có thể gửi cùng một thông điệp (message)
đến những đối tượng khác nhau (mang một vài đặc điểm chung ). Điều này
giúp người lập trình không phải xử lý trong chương trình của mình một dãy
các cấu trúc điều khiển tùy theo thông điệp nhận vào, mà chương trình được
xử lý vào thời điểm thực hiện.
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội

6
Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
Tóm lại lập trình hướng đối tượng là ngôn ngữ hiện thực trong đó chương
trình được tổ chức như tập hợp của những đối tượng hợp tác với nhau, mỗi
đối tượng đại diện cho một vài lớp phân cấp thông qua quan hệ thừa kế.
Trong lập trình hướng đối tượng có một số khái niệm sau :
2. Tính trừu tượng (Abstraction) :
Sự trừu tượng thể hiện những đặc tính cốt yếu của một đối tượng mà những
đặc tính này dùng để phân biệt đối tượng này với tất cả các loại đối tượng
khác và do vậy cung cấp một cách rõ ràng giới hạn ý niệm được định nghĩa,
liên quan tới viễn tưởng của người nhìn.
Trừu tượng tập trung vào cái nhìn bề ngoài của đối tượng và do đó thoả mãn
được các hành vi chủ yếu của đối tượng riêng biệt từ hiện thực của nó .
3. Sự đóng kín (Encapsulation) :
Tính đóng kín là quá trình phân chia các phần tử của một trừu tượng để cấu
thành nên cấu trúc và hành vi của chính nó , đóng kín cho phép hoạt động
giao tiếp của một trừu tượng và hiện thực của nó .
Sự đóng kín là cơ chế liên kết mã và dữ liệu mà nó thao tác , và giữ cho cả hai
được an toàn khỏi sự có thể thiệp từ bên ngoài và do sự sử dụng sai . Trong
ngôn ngữ hướng đối tượng , mã và dữ liệu liên kết với nhau để tạo thành một
"hộp đen " độc lập. Trong hộp này là tất cả mã và dữ liệu cần thiết . Khi mã
và dữ liệu liên kết với nhau như thế một đối tượng sẽ được tạo ra . Nói cách
khác, đối tượng là một dụng cụ hỗ trợ cho sự đóng kín .
Trong một đối tượng: mã , dữ liệu hoặc cả hai có thể là private ( riêng ) của
đối tượng đó hay public ( chung ) . Mã hoặc dữ liệu riêng là thuộc về đối
tượng đó và chỉ được truy cập với bộ phận của đối tượng . Nghĩa là mã hoặc
dữ liệu riêng không thể được 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 dữ liệu là chung , các bộ phận khác của chương trình
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội

7
Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
có thể truy cập nó mặc dù nó được định nghĩa trong một đối tượng . Các phần
chung của một đối tượng dùng để cung cập một giao diện có điều khiển cho
các phần riêng của đối tượng .
Nói chung , một đối tượng là một biến thuộc kiểu do người sử dụng định
nghĩa . Mỗi lần ta định nghĩa một đối tượng mới , ta tạo ra một loại dữ liệu
mới .
Tính trừu tượng và đóng kín là hai khái niệm bổ sung nhau : trừu tượng thì
tập trung vào những hành vi có thể quan sát được của đối tượng , còn tính
đóng kín tập trung vào hiện thực cho hành vi đó . Tính đóng kín thường đạt
được thông qua che dấu thông tin , tức là quá trình che dấu mọi bí mật của đối
tượng mà không đóng góp vào đặc tính thiết yếu của đối tượng đó ; thông
thường cấu trúc của đối tượng được che dấu cũng như hiện thực của những
method của đối tượng .
4. Bản chất của đối tượng và lớp trong lập trình hướng đối tượng
a. Bản chất đối tượng :
Một đối tượng có trạng thái, hành vi, đặc tính nhân dạng; cấu trúc và hành vi
của các đối tượng giống nhau được định nghĩa trong một lớp chung của
chúng, thuật ngữ instance và đối tượng là có thể thay thế lẫn nhau được.
Trạng thái (state) : của một đối tượng bao gồm tất cả các đặc tính (thường là
tĩnh) của đối tượng .
Hành vi (behavior ) : là đối tượng hoạt động và phản ứng như thế nào theo
điều kiện trạng thái của nó thay đổi và thông điệp truyền đến nó.
Thao tác (operations) : là một dịch vụ mà một lớp cung cấp cho các đối
thượng của nó. Chúng ta thấy rằng thường thực thi năm loại thao tác với đối
tượng :
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội
8

Tiểu luận môn học: Đặc trưng các ngôn ngữ lập trình
 Modifier : là thao thay đổi trạng thái của đối tượng. Selector : là thao
tác truy xuất trạng thái của đối tượng nhưng không làm thay đổi trạng
thái của nó.
 Iterrator : là thao tác cho phép tất cả các phần của một đối tượng
được truy xuất theo một thứ tự đã định nghĩa trước. Hai loại thao tác
thông dụng khác cần thiết để tạo và hủy những instance của một lớp là
 Constructor: là operation tạo đối tượng và (hoặc) khởi động trạng thái
của nó.
 Destructor :là operation giải phóng trạng thái của một đối tượng và
(hoặc) hủy chính đối tượng đó.
 Indentify: (đặc điểm nhận dạng) : indentify là đặc tính của một đối
tượng để phân biệt nó với các đối tượng khác.
Mối quan hệ giữa các đối tượng:
• Links( liên kết) : Link là nối kết vật lý hay ý niệm giữa các đối tượng.
Một đối tượng cộng tác với một đối tượng khác thông qua link của nó
tới những đối tượng này. Hay nói cách khác, một link có nghĩa là một
hợp tác cụ thể qua đó một đối tượng ( client) áp dụng những dịch vụ
của đối tượng khác (nhà cung cấp) hoặc qua đó một đối tượng có thể
điều khiển đối tượng khác.
• Một đối tượng có thể đóng các vai trò sau:
Actor : một đối tượng có thể làm việc trên một đối tượng khác
nhưng nó không bao giờ cho một đối tượng khác làm việc trên
nó, thuật ngữ actor và active object có thể thay thế lẫn nhau.
Server: một đối tượng không bao giờ làm việc trên một đối tượng
khác, nó chỉ cho đối tượng khác làm việc trên nó.
Nguyễn Thị Phương Nga – KHMT K44
Khoa Công Nghệ Thông Tin - Trường ĐHBK Hà Nội
9

×