1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ngôn ngữ lập trình chương 5 lập trình hướng đối tượng

40 231 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 226,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung Phương pháp tiếp cận lập trình hướng đối tượng OOP  Các đặc trưng của OOP  Lịch sử ra đời của OOP  Giới thiệu một số ngôn ngữ OOP  Xu hướng phát triển của OOP... Nguyễn Thị

Trang 1

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 1

Chương 5

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

Trang 2

Nội dung

 Phương pháp tiếp cận lập trình hướng đối tượng (OOP)

 Các đặc trưng của OOP

 Lịch sử ra đời của OOP

 Giới thiệu một số ngôn ngữ OOP

 Xu hướng phát triển của OOP

Trang 3

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 3

5.1 Phương pháp tiếp cận OOP

– Lập trình tuyến tính: Lập trình tuyến tính là tư duy

theo lối tuần tự Chương trình được thực hiện các

lệnh tuần tự từ đầu đến lúc kết thúc chương trình

– Lập trình cấu trúc: Trong lập trình hướng cấu trúc,

chương trìnhh chính được chia nhỏ thành các

chương trình con và 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 gọi đến chương trình con theo một giải thuật hoặc một cấu trúc xác định

Trang 4

Lập trình tuyến tính

Ưu điểm: đơn giản, dễ hiểu, chỉ có một luồng công việc

duy nhất

Nhược điểm: không tái sử dụng được các đoạn mã lệnh,

mọi dữ liệu đều là dữ liệu toàn cục, khó khăn trong việc

viết các chương trình dài, phức tạp

Trang 5

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 5

Lập trình cấu trúc

Đặc trưng: Chương trình= Cấu trúc dữ liệu + Giải thuật

 Vấn đề cơ bản của lập trình cấu trúc là phân chia chương trình

chính thành các chương trình con cho phù hợp với yêu cầu, theo chiến lược thiết kế chương trình top-down (làm mịn dần) Lập trình

có cấu trúc dựa trên nền tảng sự trừu tượng hóa chức năng

Ưu điểm: chương trình có bố cục sáng sủa, dễ viết, dễ hiểu, dễ

bảo dưỡng hơn các chương trình không có cấu trúc.

Nhược điểm:

– Giải thuật chương trình phù thuộc chặt chẽ vào cấu trúc dữ liệu

– Có thể ẩn chứa những xung đột trong truy cập dữ liệu toàn cục và trao

đổi dữ liệu

– Tư duy giải thuật chỉ phù hợp với những bài toán nhỏ

Trang 6

Sự trừu tượng hóa về mặt dữ liệu

 Sự trừu tượng hóa về mặt dữ liệu chính là việc định nghĩa các kiểu dữ liệu trừu tượng nhằm che dấu các thông tin về cấu trúc dữ liệu

 Một kiểu dữ liệu trừu tượng là một mô hình toán học cùng với một tập hợp các phép toán trên nó Kiểu dữ liệu trừu tượng do người lập trình tự định nghĩa

Trang 7

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 7

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

 Lập trình hướng đối tượng (OOP) được xây dựng từ 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

 OOP lấy đối tượng làm nền tảng để xây dựng giải thuật và chương trình

 Xây dựng chương trình theo hướng tiếp cận OOP là theo chiến lược bottom-up Cách tư duy: “với một số đối tượng

đã có phải làm gì để giải quyết được công việc đặt ra, hay làm được gì từ tập đối tượng đã có”

Trang 8

Ưu điểm của OOP

 Không còn nguy cơ dữ liệu bị thay đổi tự do trong chương trình Dữ liệu được đóng gói vào các đối tượng, nếu muốn truy nhập phải thông qua các phương thức cho phép của đối tượng

 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ố hàm thành phần của đối tượng bị thay đổi

 Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên (chẳng hạn như tính chất kế thừa)

Trang 9

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 9

Trang 10

Đối tượng trong OOP

 Trong OOP, tất cả các thực thể trong hệ thống đều được coi là các đối tượng cụ thể Đối tượng là một thực thể hoạt động khi chương trình đang chạy VD: sinh viên, lớp, giáo viên, môn học, điểm,

 Một đối tượng là một thực thể đang tồn tại trong hệ thống được xác định bằng ba yếu tố:

– Định danh đối tượng: id

– Trạng thái đối tượng: giá trị thuộc tính

– Hoạt động đối tượng: thao tác trên đối tượng

Trang 11

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 11

Trang 12

Một lớp có thể có một trong các khả năng

sau:

 Hoặc chỉ có thuộc tính, không có phương thức

 Hoặc chỉ có phương thức, không có thuộc tính

 Hoặc có cả thuộc tính và phương thức (phổ biến nhất)

 Đặc biệt, không có cả phương thức lẫn thuộc tính gọi

là các lớp trừu tượng Các lớp này không có thể hiện đối tượng tương ứng

Trang 13

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 13

Dạng lưu trữ của một lớp đối tượng

Các thuộc tính Các phương thức

a1 a2

m1 m2 x

Giả sử x là một biến đối tượng thuộc lớp

A Dạng lưu trữ của một lớp đối tượng

bao gồm các ô nhớ cho các thuộc tính và

một chỉ điểm đến bảng địa chỉ của các

phương thức trong lớp đó.

Trang 15

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 15

Trừu tượng hóa

 Trừu tượng hóa đối tượng theo chức năng: là quá

trình mô hình hóa phương thức của lớp dựa trên các hành động của các đối tượng

 Trừu tượng hóa đối tượng theo dữ liệu: là quá trình

mô hình hóa các thuộc tính của lớp dựa trên các

thuộc tính của các đối tượng tương ứng.

Trang 16

Tính đóng gói dữ liệu

 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ó 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 ngoài tác động lên dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn phụ thuộc vào người lập trình thông qua các khai báo: public, private, protected Tính chất này đảm bảo sự toàn vẹn của đối tượng

Trang 17

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 17

Ưu điểm của tính đóng gói dữ liệu

 Cho phép che dấu dữ liệu bên trong đối tượng

 Hạn chế tối đa việc sửa lại mã chương trình

 Cho phép che dấu sự cài đặt chi tiết bên trong phương

thức

Trang 18

Tính kế thừa

 Đặ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

Trang 19

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 19

m1_A m2_B m3_B x

Các thuộc tính Các phương thức

Dạng lưu trữ của một đối tượng x thuộc lớp B với

các thuộc tính và phương thức thừa hưởng từ lớp

A và số còn lại được định nghĩa chính trong lớp B

Trang 20

Tính đa hình

 Việc chỉ cần gọi cùng một phương thức, nhưng từ các đối tượng khác nhau, sẽ cho các kết quả khác nhau được gọi

là tính đa hình trong OOP

 Tính đa hình cho phép các lớp được định nghĩa các

phương thức trùng nhau: cùng tên, cùng số lượng và kiểu tham số, cùng kiểu trả về

 Khi các phương thức trùng tên, dựa vào đối tượng đang được gọi mà chương trình sẽ thực hiện phương thức của lớp tương ứng

Trang 21

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 21

Tính đa hình (tiếp)

Câu hỏi:

Phân biệt hiện tượng:nạp chồng (overloading) và ghi chồng (overriding)?

Trang 22

Các mức độ che dấu thông tin

 Để bảo vệ dữ liệu tránh truy nhập nhập tự do từ bên ngoài, OOP sử dụng các từ khóa qui định phạm vi truy nhập các thuộc tính và phương thức của lớp

 Các mức truy nhập

– Private: truy nhập trong nội bộ lớp

– Protected: thành phần được bảo vệ, được hạn chế truy nhập

trong quan hệ thừa kế cha con

– Public: truy nhập tự do từ bên ngoài.

Trang 23

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 23

Thành phần public

 Trong một lớp, thông thường các vùng sau sẽ được đặt

vào vùng chia sẻ public của lớp:

– Các phương thức nhập/xem (set/get) các thuộc tính dữ liệu

của lớp

– Các phương thức cung cấp chức năng, cách cư xử của đối

tượng với môi trường bên ngoài Các phương thức này thể hiện chức năng của các đối tượng lớp

Trang 24

 Thành phần dữ liệu tĩnh có thể là private, public

 Khai báo thành phần tĩnh được đặt trong định nghĩa lớp

 Phần định nghĩa cho thành phần tĩnh thì lại được đặt ngoài phạm vi khai báo lớp một cách tường minh

Trang 25

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 25

không có đối tượng nào được tạo ra Cách gọi:

Tên lớp::tên hàm thành phần tĩnh (ds tham số)

Trang 26

Con trỏ this

 Con trỏ this ở bên trong khai báo lớp đại diện cho đối tượng của lớp đó đang được thực hiện trong bộ nhớ Nó là con trỏ luôn có giá trị là địa chỉ của đối tượng.

 Con trỏ this là một tham số ẩn mà mọi phương thức của lớp có thể truy cập Nó trỏ tới đối tượng mà phương thức được gọi.

 Có một số trường hợp, việc sử dụng con trỏ this là bắt buộc để cài đặt các chức năng trong phương thức của lớp.

Câu hỏi: Những trường hợp nào bắt buộc phải sử dụng con trỏ this? Lấy ví dụ

Trang 27

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 27

5.3 Lịch sử phát triển của các ngôn ngữ OOP

 Xuất phát từ định hướng của ngôn ngữ Simula67, trung

tâm Palo Alto của hãng XEROR đã nghiên cứu và cho ra đời ngôn ngữ OOP đầu tiên là Smalltalk

 Sau đó các ngôn ngữ OOP lần lượt ra đời như Eiffel, Clos, Loops, Flavors, Object Pascal, Object C, C++, Delphi,

Java,…

 Lập trình hướng đối tượng đã phát triển như là phương

pháp lập trình chủ đạo từ giữa thập niên 1980 do việc ảnh hưởng đáng kể của C++ cùng với các tính năng GUI

Trang 28

Lịch sử phát triển của các ngôn ngữ OOP

(tiếp)

 Các chức năng định hướng đối tượng cũng đã và đang

được thêm vào nhiều ngôn ngữ trong suốt thời gian qua như: ADA, BASIC , Lisp, Fortran, Pascal,…

 Việc thêm các chức năng không chủ định ngay từ thiết kế ban đầu đã dẫn tới sự khó khăn trong việc tương thích và bảo trì mã nguồn

 Trong thời gian gần đây các ngôn ngữ OOP được ưa

chuộng đó là Java, Microsoft.NET

 Gần đây, hai ngôn ngữ OOP mới xuất hiện với chức năng

Trang 29

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 29

Trang 30

 Những đặc trưng hướng đối tượng của C++

– Cho phép định nghĩa lớp đối tượng

– Cho phép đóng gói dữ liệu vào các lớp đối tượng Cho phép

định nghĩa các từ khóa phạm vi truy nhập vào các thành phần của lớp

Trang 31

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 31

C++ (tiếp)

 Những vi phạm hướng đối tượng của C++

– Cho phép định nghĩa và sử dụng các biến dữ liệu tự do

– Cho phép định nghĩa và sử dụng các hàm tự do

– Ngay cả khi dữ liệu được đóng gói vào lớp, dữ liệu vẫn có

thể truy nhập trực tiếp như dữ liệu tự do bởi các hàm bạn, lớp bạn (friend).

 Tính hỗ trợ hướng đối tượng trong C++ còn thấp, không trong sáng, dễ gây nhầm lẫn

Trang 32

ASP.NET và C#.NET

 Các ngôn ngữ lập trình NET của Microsoft ra đời vào cuối những năm 1990 để cạnh tranh với ngôn ngữ lập trình

Java

 Một số đặc điểm của ngôn ngữ NET

– Là một ngôn ngữ hoàn toàn hướng đối tượng

– Cung cấp giao diện lập trình đồ họa thân thiện và đẹp mắt

– Cho phép lập trình viên tạo ra các thư viện UserControl của

mình

Trang 33

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 33

Java

 Java là một ngôn ngữ OOP được Sun Microsystems giới thiệu vào tháng 6 năm 1995 Java được xây dựng dựa trên nền tảng của C và C++: Java sử dụng cú pháp của C và đặc trưng hướng đối tượng của C++

 Đặc điểm của Java

 Ứng dụng viết bằng Java thường có tính ổn định, tin cậy cao, dễ bảo trì và nâng cấp

Trang 34

 PHP là một ngôn ngữ lập trình kịch bản chủ yếu dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát

 PHP thích hợp cho việc viết các ứng dụng web nhúng vào các trang HTML

 PHP có tốc độ nhanh, nhỏ gọn, cú pháp gần giống C và

Java, dễ học và thời gian xây dựng ứng dụng tương đối

ngắn hơn so với các ngôn ngữ khác nên PHP nhanh chóng trở thành ngôn ngữ lập trình web phổ biến nhất thế giới

Trang 35

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 35

– PHP 4 (2000): cải thiện tốc độ xử lý, hỗ trợ nhiều máy chủ web hơn, hỗ trợ phiên làm việc http, tạo bộ đệm thông tin đầu ra,… – PHP 5 (2004): cải tiến khả năng hỗ trợ OOP, xử lý XML, nhất quán trong truy cập CSDL (MySQL)

– PHP 6(hiện tại)

Trang 36

Câu hỏi?

So sánh sức mạnh của các ngôn ngữ C++, NET, Java, PHP?

Trang 37

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 37

5.5 Xu hướng phát triển của OOP

 Lập trình hướng thành phần (component-oriented

programming) Ý tưởng:

– 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ể chỉ cần chọn

các thành phần có sẵn ghép lại với nhau.

– Người lập trình có thể phát triển thêm các thành phần

chưa có trong thư viện

Trang 38

Xu hướng phát triển của OOP (tiếp)

 Lập trình hướng agent: được 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 Đặc điểm:

– Các agent có khả năng làm việc độc lập, tự chủ để hoàn

thành công việc của mình.

– 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 nhằm hoàn thành nhiệm vụ.

Trang 39

Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 39

Xu hướng phát triển của OOP (tiếp)

 Lập trình hướng aspect: là một xu hướng của lập trình hướng thành phần Đặc điểm:

– Tính đóng gói theo luồng công việc, hoặc đóng gói theo khía

cạnh vấn đề

– Tính đơn điệu theo luồng, trong một luồng công việc , các

nhiệm vụ được thực hiện liên tiếp nhau, tuần tự như trong lập trình tuyến tính.

Trang 40

Phương pháp phân tích thiết kế hệ thống hướng

đối tượng

 Cách tiếp cận phân tích và thiết kế hệ thống hướng đối

tượng

 Cơ sở dữ liệu hướng đối tượng

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

Ngày đăng: 27/10/2017, 11:31

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w