Tải bản đầy đủ (.ppt) (40 trang)

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

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 (111.54 KB, 40 trang )

Chương 5

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

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

1


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ị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN

2


5.1. Phương pháp tiếp cận OOP
 Phương pháp tiếp cận của lập trình truyền thống
– 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
Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN

3


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

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

4


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ỏ
Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN

5


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

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

6


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ó”


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

7


Ư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).
 Phù hợp với các dự án phần mềm lớn, phức tạp.
Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN

8


Câu hỏi?
 So sánh cách tiếp cận hướng cấu trúc và hướng đối
tượng theo các mặt:
– Phương pháp tiếp cận thiết kế mô hình hóa bài toán
– Cách thức đóng gói dữ liệu, che dấu thông tin
– Ưu / nhược điểm
– Lĩnh vực ứng dụng

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


9


Đố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

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

10


Lớp đối tượng
 Đối tượng là một thực thể cụ thể, tồn tại trong hệ thống.
Lớp đối tượng là một khái niệm trừu tượng dùng để chỉ
một tập hợp các đối tượng có mặt trong hệ thống
 Các thành phần của lớp:
– Thuộc tính
– Phương thức

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


11


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

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

12


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

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 đó.

Class A {
attribute a1;
attribute a2;
method m1();
method m2();


x

}

a1

m1

a2

m2
Các thuộc tính

phương
Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT Các
- ĐH SPHN

thức

13


5.2. Các tính chất của OOP
 Tính trừu tượng
 Tính đóng gói dữ liệu
 Tính đa hình
 Tính thừa kế

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


14


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.

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

15


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.

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


16


Ư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

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

17


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.

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

18


Dạng lưu trữ các lớp kế thừa

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

class A{
attribute a1;
attribute a2;
method m1();
method m2(); }
class B extends A {
attribute b1;
method m2();
method m3();
}

x

a1

m1_A

a2

m2_B

a3

m3_B
Các thuộc tính

Các phương thức


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

19


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.

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

20


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)?

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

21



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.

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

22


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

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

23



Thành phần tĩnh (static)
 Là thành phần dùng chung cho tất cả các đối tượng thuộc
cùng một lớp.
 Thành phần tĩnh chỉ có một thể hiện duy nhất cho mọi đối
tượng thuộc lớp
 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.

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

24


Thành phần tĩnh (static)
 Thành phần dữ liệu tĩnh được khởi tạo giá trị trong phần
định nghĩa mà không được khởi tạo thông qua hàm tạo
 Hàm tạo và hàm hủy không thể tạo hay xóa bỏ thành phần
dữ liệu tĩnh
 Hàm thành phần tĩnh là hàm dùng để đọc và thay đổi giá trị
thành phần dữ liệu tĩnh. Nó có thể được gọi ngay cả khi
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ố)

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

25



×