You are on page 1of 24

LÝ THUYẾT HƯỚNG ĐỐI TƯỢNG

Giảng viên: Cao Thị Nhâm

Phân tích và thiết kế hệ thống thông tin


Nội dung chính
• Sơ lược về các phương pháp lập trình
• Giới thiệu về hướng đối tượng
• Class và Object
• Thừa kế
• Đa hình
• Đóng gói
• Trừu tượng

@NhamCT Phân tích & thiết kế HTTT 22


Sơ lược về lập trình
Ngôn ngữ lập trình
• Là ngôn ngữ nhân tạo dùng để chỉ dẫn cho máy tính thực hiện các
thao tác
• Ngôn ngữ này thường được dịch sang ngôn ngữ máy.

@NhamCT Phân tích & thiết kế HTTT 44


Các phương pháp lập trình

Phương pháp lập trình TUYẾN TÍNH

Phương pháp lập trình HƯỚNG CẤU TRÚC

Phương pháp lập trình HƯỚNG ĐỐI TƯỢNG

@NhamCT Phân tích & thiết kế HTTT 55


Phương pháp lập trình tuyến tính
• Tổng quan:
• Xuất hiện khi khái niệm lập trình mới ra đời
• Chương trình chạy tuần tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc
• Đặc điểm:
• Đơn giản: chương trình đơn giản theo lối tuần tự
• Đơn luồng: chỉ xử lý một luồng công việc duy nhất
• Ưu điểm:
• Mã nguồn đơn giản, dễ hiểu
• Nhược điểm:
• Không thể xây dựng các ứng dụng đơn giản
• Không có khả năng tái sử dụng
• Không có khả năng kiểm soát được phạm vi dữ liệu

@NhamCT Phân tích & thiết kế HTTT 66


Lập trình hướng thủ tục
• Tổng quan:
• Chương trình được chia nhỏ thành nhiều chương trình con, 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 có thể gọi chương trình con nhiều lần và theo thứ tự bất kì
• Ngôn ngữ: C, Pascal,…
• Đặc điểm:
• Chương trình = cấu trúc dữ liệu + giải thuật
• Cấu trúc dữ liệu: cách thức tổ chức dữ liệu
• Giải thuật: quy định/cách thức để thực hiện một công việc
• Ưu điểm:
• Tư duy rõ ràng
• Tái sử dụng
• Nhược điểm:
• Ít mềm dẻo → khó bảo trì, sửa code
• Chương trình lớn, code sẽ trở thành “spaghetti-code”
@NhamCT Phân tích & thiết kế HTTT 77
Lập trình hướng đối tượng
• Coi một chương trình là sự tương tác của nhiều đối tượng
• Ngôn ngữ:
• Java, C#, Python, PHP,….
• Ưu điểm:
• Mối liên kết lỏng lẻo
→ dễ bảo trì & sửa code
• Dễ mở rộng
• Tái sử dụng
• Nhược điểm:

@NhamCT Phân tích & thiết kế HTTT 88


CƠ BẢN VỀ HƯỚNG
ĐỐI TƯỢNG
• Đối tượng
• Lớp
• Thừa kế
• Đóng gói
• Đa hình
• Trừu tượng
Đặc điểm của lập trình hướng đối tượng

Đóng gói Thừa kế


(Bảo mật dữ liệu) (Sử dụng lại)
OOP Program

Class

Object

Đa hình
Trừu tượng
(Sử dụng lại)
(Che giấu sự phức tạp)

@NhamCT Phân tích & thiết kế HTTT 10


10
Đối tượng (Object)
• Đối tượng biểu diễn một đối tượng trong thế giới thực
• Mỗi đối tượng đặc trưng bởi các thuộc tính (đặc điểm) và hành vi
riêng của nó
Tên = Bulldog Tên = Samoyed
Cỡ = Large
Cỡ = Large Thuộc tính Tuổi = 3
Tuổi = 5
Màu = brown Màu = white

Đi
Đi Đứng
Đứng Hành vi Nằm
Nằm Sủa
Sủa Ăn
Ăn

@NhamCT Phân tích & thiết kế HTTT 11


11
Lớp (Class)
• Lớp là đặc tả của một nhóm đối
tượng có chung tính chất
Class Dog
(thuộc tính) và chung hoạt
Tên
Cỡ động (hành vi), chung các quan
Tuổi
Màu hệ và chung ngữ nghĩa
Đi()
Đứng() • Mỗi đối tượng là một thể hiện
Nằm()
Sủa() (instance) của một lớp (hay
Ăn()
nôm na, đối tượng là sản phẩm
được tạo ra từ khuôn lớp)

@NhamCT Phân tích & thiết kế HTTT 12


12
Thuộc tính và phương thức
• Thuộc tính (Property/Attribute)
• Là dữ liệu trình bày các đặc điểm của đối tượng
• Phương thức (Method)
• Tác động lên dữ liệu để thực hiện hành vi của đối tượng
Class Dog
Tên
Cỡ
Tuổi
Màu
Đi()
Đứng()
Nằm()
Sủa()
Ăn()

@NhamCT Phân tích & thiết kế HTTT 13


13
Lớp và đối tượng
• Bạn nhìn thấy bao nhiêu đối tượng? Bao nhiêu lớp?

@NhamCT Phân tích & thiết kế HTTT 14


14
Khai báo lớp và đối tượng
• Sử dụng ngôn ngữ lập trình tương ứng để thực hiện khai báo một lớp

@NhamCT Phân tích & thiết kế HTTT 15


15
Đóng gói (Encapsulation)
• Thể hiện mức độ che giấu nội dung của mỗi lớp.
• Mỗi phương thức hoặc thuộc tính của lớp có phạm vi nhất định
• Thể hiện mức độ các đối tượng bên ngoài có thể “nhìn” thấy dữ liệu hoặc
phương thức

• Các mức độ:


• private – chỉ truy cập từ trong lớp
• protected - truy cập từ trong lớp và từ lớp con
• public – truy cập được từ mọi lớp

@NhamCT Phân tích & thiết kế HTTT 16


16
Thực thi đóng gói với ngôn ngữ lập trình
• Sử dụng ngôn ngữ lập trình tương ứng để thực thi đóng gói

@NhamCT Phân tích & thiết kế HTTT 17


17
Thừa kế (Inheritance)
• Một lớp có thể thừa kế toàn bộ SubClass Object

hoặc một phần thuộc tính, hành Class Dog


{

vi từ một lớp có sẵn SuperClass ……….


……….
}
• Lớp có sẵn gọi là lớp cha (lớp cơ
Class Animal
{
sở) …………
...........
• Lớp thừa kế gọi là lớp con (lớp } Class Cat
{
dẫn xuất) ……….
……….
}
• Mục đích:
• Giảm sự lặp lại của code

@NhamCT Phân tích & thiết kế HTTT 18


18
Thực thi thừa kế với ngôn ngữ lập trình
• Sử dụng ngôn ngữ lập trình tương ứng để thực thi thừa kế

@NhamCT Phân tích & thiết kế HTTT 19


19
Đa hình (Polymorphism)
• “Đa hình” – nhiều hình thái khác nhau
• Các đối tượng thuộc các lớp khác nhau có thể hiểu cùng 1 thông điệp
theo các cách khác nhau

@NhamCT Phân tích & thiết kế HTTT 20


20
Thực thi đa hình với ngôn ngữ lập trình
• Sử dụng ngôn ngữ lập trình tương ứng để thực thi đa hình

@NhamCT Phân tích & thiết kế HTTT 21


21
Trừu tượng (abstract)
• Trừu tượng – tổng quát hóa một cái gì đó, không cần chú ý tới chi tiết
• Kĩ thuật để tạo ra bộ khung (bản thiết kế) để các lớp thừa kế phải tuân
theo

@NhamCT Phân tích & thiết kế HTTT 22


22
Thực thi trừu tượng trong ngôn ngữ lập trình

• Sử dụng ngôn ngữ lập trình tương ứng để thực thi trừu tượng

@NhamCT Phân tích & thiết kế HTTT 23


23
@NhamCT Phân tích & thiết kế HTTT 24
24

You might also like