1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Mẫu thiết kế hướng đối tượng và ứng dụng: Các nguyên lý các nguyên lý lập trình hướng đối tượng - Nguyễn Minh Huy

43 99 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 43
Dung lượng 606,12 KB

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

Nội dung

Bài giảng Mẫu thiết kế hướng đối tượng và ứng dụng: Các nguyên lý các nguyên lý lập trình hướng đối tượng trình bày các nội dung: Phần mềm hướng đối tượng, nguyên lý Open-Close, nguyên lý Nghịch đảo phụ thuộc... Mời các bạn cùng tham khảo.

Trang 1

Cac nguyen ly

lập trình hướng đôi tượng

Nguyên Minh Huy

Bộ môn Công nghệ Phân mêm

Email: nmhuy@fit.homuns.edu.vn

Trang 2

Noi dung

=m Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

m Thảo luận

Trang 3

Noi dung

> Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

m Thảo luận

Trang 4

Phân mêm hướng đôi tượng

=m Phân mêm là gi?

> “A computer program, enable a computer to

perform a specific task’ (wikipedia)

Software is something that is soft!!

our thoughts The code Is only the representation

of the ideas, and the ideas are really the software”

(Hardware is from Mars; Software is from Venus,

Winn Rosch).

Trang 5

Phan mém hu@ng doi tuong

=m Thê nào là phân mêm hướng đôi tượng?2

a

«2

Tuân thủ nguyên lý lập trình hướng đôi tượng thông qua lây??

việc vận dụng các tính chất lập trình hướng đôi tượng

Trang 6

Phân mêm hướng đôi tượng

> Tí (The Open-Closed Principle)

>Ti- |

Nguyên ly Nghịch đảo phụ thuộc

TT (The Dependency Inversion Principle)

a Nguy oN C (The Liskov Substitution Principle) Nguyén ly Thay thé Liskov guyen ly Thay en tang ý

> La Nguyén ly Phan tach Interface nướng đôi

tu) (The Interface Segregation Principle)

Trang 7

Noi dung

=m Phân mêm hướng đôi tượng

> Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

m Thảo luận

Trang 8

Nguyen ly Open-Close

= Betrand Meyers dé cap lan dau

tién nam 1988 trong Object

Oriented Software Construction

m Phát biêu:

“Các thực thể phân mêm (hàm, đơn thê, đối tượng, .)

nên được xây dựng theo hướng mở cho việc mở rộng

(be opened for extension) nhưng đóng đổi với việc sửa đối (be closed for modification)”

Trang 10

Nguyen ly Open-Close

m Ví dụ chương trình vẽ hình:

public enum ShapeType { LINE, RECTANGLE }

public abstract class Shape

I

public class Line: Shape

public abstract ShapeType getT ype();

public override ShapeType getType();

public void drawLine();

I

public class Rectangle: Shape

{

public override ShapeType getType();

public void drawRectangle();

Trang 11

foreach (Shape s in shapeList)

switch (s.getT ype())

Trang 14

public abstract void draw();

public override void draw();

public override void draw();

public override void draw();

ly Open-Close

Trang 16

Nguyen ly Open-Close

m Ghi chu:

> Nguyên lý cốt lõi của phân tích thiết kê hướng đồi

tượng

> Ưu tiên áp dụng nguyên lý cho các thực thê phan

mêm phải thường xuyên nâng cập, mở rộng

> Việc tuân thủ nguyên lý mang tính tương đôi, phụ

thuộc ngữ cảnh.

Trang 17

Nguyen ly Open-Close

m Áp dụng:

> Thuộc tính của đôi tượng là private dé han ché sw

ket dinh khong can thiet (coupling)

Đối tượng nắm giữ thông tin va chịu trách nhiệm trên thông tin mình nắm giữ'!!

> Hạn chê ép kiêu động (runtime type-casting)

public void doSomething(Vehicle vehicle)

Trang 18

Noi dung

=m Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

> Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

m Thảo luận

Trang 19

Nguyên lý Nghịch đảo phụ thuộc

m Phát biêu:

“Các thành phân trong phần mềm không nên phụ thuộc

vào những cái riêng, cụ thể (details) ma nguoc lại nên

phụ thuộc vào những cái chung, tổng quát

(abstractions) của những cái riêng, cụ thể đó

Những cái chung, tông quát không nên phụ vào những

cái riêng, cụ thê Sự phụ thuộc này nên được đảo ngược

lat.”

Trang 20

Nguyên lý Nghịch đảo phụ thuộc

Không tuân thủ

Bus

Trang 21

Nguyên ly Nghịch đảo phụ thuộc — Vi du

Keyboard ƒƑ copy I Printer

public void copy()

char C;

while ((c = keyboard.read()) != ‘q’)

printer.write(c);

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 22

Nguyên ly Nghịch đảo phụ thuộc — Vi du

File file = new File();

Trang 23

Nguyên ly Nghịch đảo phụ thuộc — Vi du

Trang 24

Nguyên lý Nghịch đảo phụ thuộc — Ghi chu

m Ghi chú:

> Có môi liên hệ mật thiết với nguyên lý Open-Close

> “Chia đề trị” theo hướng lập trình câu trúc dễ vi

environment, where requirements regularly change

as program develops, this flexibility is essential.”

Trang 25

Nguyên lý Nghịch đảo phụ thuộc — Ap dung

m Áp dụng:

> Làm việc với lớp cơ sở thay vì lớp kê thừa cụ thê

public void doSomething(Car car)

Trang 26

Noi dung

=m Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

> Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

m Thảo luận

Trang 27

Nguyén ly Thay thé Liskov

= Barbara Liskov dé cap lan

dau tién tai OOPSLA 87

m Phát biêu:

“Lớp B chỉ nên kế thừa từ lớp A khi và chỉ khi với mọi

hàm F thao tác trên các đôi tượng của A, cách cư xử

(behaviors) của F không thay đổi khi ta thay thế

(substitute) các đối tượng của A bằng các đôi tượng

của B.”

Trang 28

Nguyén ly Thay thé Liskov

Z Không tuân thủ nguyên

Derive

Trang 29

Nguyén ly Thay thé Liskov

m Ví dụ về hậu quả kê thừa chỉ đề tái sử dụng code:

class Stack

// Khai báo thêm dữ liệu của Stack

public virtual void push(int n);

public virtual int pop();

I

class Queue: Stack

// Khai báo dữ liệu của Queue

public override void push(int n);

public override int pop();

I

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 30

Nguyén ly Thay thé Liskov

Trang 31

Nguyén ly Thay thé Liskov

m Ghi chu:

> Có môi liên hệ mật thiết với nguyên lý Open-Close

> Ưu tiên áp dụng nguyên lý cho các thực thê phân

mêm phải thường xuyên nâng câp, mở rộng

> Việc tuân thủ nguyên lý mang tính tương đôi, phụ

thuộc ngữ cảnh

When you inherit from one class,

you sign a contract with that class!!

Trang 32

Nguyén ly Thay thé Liskov

Trang 33

Nguyén ly Thay the Liskov

CuuDuongThanCong.com

Trang 34

Noi dung

=m Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

> Nguyén ly Phan tach Interface

m Thảo luận

Trang 35

Nguyen ly Phan tach Interface

m Phát biêu:

“Không nên buộc các thực thê phân mêm phụ thuộc vào

những interface mà chúng không sử dụng đến ”

Trang 36

Nguyen ly Phan tach Interface

“Fat” interface hoac

Trang 37

Nguyen ly Phan tach Interface

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 38

Nguyen ly Phan tach Interface

m Ghi chu:

> Có mỗi liên hệ với nguyên lý Open-Close

> Thiết kê lớp đôi tượng đơn giản, gọn nhẹ

Trang 39

Nguyen ly Phan tach Interface

Trang 40

Nguyen ly Phan tach Interface

Trang 41

Noi dung

=m Phân mêm hướng đôi tượng

m Nguyên lý Open-Close

m Nguyên lý Nghịch đảo phụ thuộc

= Nguyên lý Thay thê Liskov

m Nguyên lý Phân tách Interface

> Thao luận

Trang 42

Tháo luận

Trang 43

We are building hard software!!

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ngày đăng: 11/01/2020, 19:14

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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