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

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

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

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

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,

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

Trang 6

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

a Ba tin Nguyén ly Open-Close Ong

> 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

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

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

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();

Trang 11

Nguyen ly Open-Close public void draw(ArrayList shapeList) { Line line; Rectangle rectangle;

foreach (Shape s in shapeList)

Trang 14

Nguyen public abstract class Shape Ẳ I public class Line: Shape Ẳ I public class Rectangle: Shape Ẳ I public class Circle: Shape Ẳ I

public abstract void draw();

public override void draw();

public override void draw();

public override void draw();

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ụ

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)

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

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

Trang 21

Nguyên ly Nghịch đảo phụ thuộc — Vi du Keyboard ƒƑ copy I Printer public void copy() Ẳ

Keyboard keyboard = new Keyboard();

Printer printer = new Printer();

char C;

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

Trang 22

Nguyên ly Nghịch đảo phụ thuộc — Vi du Keyboard (| copy > Printer > File public void copy(OutputType type) Ẳ

Keyboard keyboard = new Keyboard();

Printer printer = new Printer();

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

phạm nguyên ly

> Thực thê phân mềm vi phạm nguyên lý có tính tái

sử dụng không cao

> Allen Holub: “The more abstraction you add, the greater the flexibility In today’s business

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ê

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

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

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

private ArrayList data;

// 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

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

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

Trang 36

Nguyen ly Phan tach Interface

Trang 37

Nguyen ly Phan tach Interface Circuit add(Circuit) remove(Circuit) calcResistance() A

Resistor Lamp SeriesCircuit ParallelCircuit

_resistance _resistance _ children _ children

add(Circuit) add(Circuit) add(Circuit) add(Circuit)

remove(Circuit) remove(Circuit) remove(Circuit) remove(Circuit)

calcResistance() calcResistance() calcResistance() calcResistance()

Trang 38

Nguyen ly Phan tach Interface

m Ghi chu:

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

Trang 42

Tháo luận

Trang 43

Tháo luận Hỗn độn và đây may rủi There is no Silver Bullet!! We are building hard software!! © O Từ đâu đến? ` Ngành gam kỹ thuật non trẻ me neni Di ve dau??? x a C) +- ` Mục tiêu Chất lượng Hiệu quả Phụ thuộc vào

ee chinh cac ban!

High Level Language `

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