thiết kế hướng đối tượng - tuyennguyen.info design.pdf · lập trình hướng đối...

50
Nguyn ThMinh Tuyn Thiết kế hướng đối tượng Ni dung ca slide này da vào các slides ca Ian Sommerville

Upload: others

Post on 29-Aug-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền

Thiết kế hướng đối tượng

Nội dung của slide này dựa vào các slides của Ian Sommerville

Page 2: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Nội dung

1.   Thiết kế hướng đối tượng sử dụng UML 2.   Thiết kế mẫu

2

Page 3: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Nội dung

1.   Thiết kế hướng đối tượng sử dụng UML 2.   Thiết kế mẫu

3

Page 4: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Phát triển hướng đối tượng

v Phân tích, thiết kế và lập trình hướng đối tượng có liên quan với nhau nhưng tách rời nhau.

v Phân tích hướng đối tượng liên quan đến việc phát triển mô hình đối tượng của miền ứng dụng.

v Thiết kế hướng đối tượng liên quan đến việc phát triển mô hình hệ thống hướng đối tượng để cài đặt các yêu cầu.

v Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối tượng sử dụng ngôn ngữ lập trình hướng đối tượng, ví dụ như Java hoặc C++.

4

Page 5: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Đối tượng và lớp đối tượng

v Đối tượng là một thực thể có một trạng thái và một tập các thao tác hoạt động trên trạng thái đó §  Trạng thái được biểu diễn bằng một tập các thuộc tính

của đối tượng. §  Thao tác liên quan đến các dịch vụ mà đối tượng cung

cấp cho các đối tượng khác (client) khi client yêu cầu các dịch vụ này.

v Lớp đối tượng được sử dụng như một template cho các đối tượng §  Bao gồm khai báo tất cả các thuộc tính và dịch vụ liên

quan đến một đối tượng trong lớp đó.

5

Page 6: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Quy trình thiết kế hướng đối tượng

v Gồm việc thiết kế các lớp đối tượng và quan hệ giữa các lớp này.

v Các hệ thống hướng đối tượng thường dễ thay đổi hơn so với hệ thống được phát triển dựa vào các phương pháp chức năng. §  Đối tượng bao gồm cả dữ liệu và các thao tác trên dữ

liệu. Do đó chúng thường dễ hiểu và dễ thay đổi hơn các thực thể độc lập.

v Việc thay đổi cài đặt của một đối tượng hay việc thêm các dịch vụ không gây ảnh hưởng đến các đối tượng của hệ thống.

6

Page 7: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình thiết kế

v Để phát triển thiết kế hệ thống từ khái niệm đến chi tiết, ta cần tiến hành các hoạt động sau:

7

•  Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

•  Thiết kế kiến trúc hệ thống

•  Nhận diện các đối tượng hệ thống quan trọng

•  Phát triển các mô hình thiết kế

•  Đặc tả giao diện đối tượng

Page 8: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình

• Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

• Thiết kế kiến trúc hệ thống

• Nhận diện các đối tượng hệ thống quan trọng

• Phát triển các mô hình thiết kế

• Đặc tả giao diện đối tượng.

8

Page 9: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Ngữ cảnh hệ thống và các tương tác

v Việc hiểu mối quan hệ giữa phần mềm đang thiết kế và môi trường bên ngoài là cần thiết §  quyết định việc cung cấp các chức năng của hệ thống

như thế nào và §  cách cấu trúc hệ thống để giao tiếp với môi trường của

nó. v Việc hiểu ngữ cảnh cũng giúp ta thiết lập ranh

giới của hệ thống. §  Việc thiết lập các ranh giới hệ thống giúp ta quyết định

xem tính năng nào được cài đặt trong hệ thống đang được thiết kế và tính năng nào nằm trong các hệ thống liên quan.

9

Page 10: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Ngữ cảnh và các mô hình tương tác

v Ngữ cảnh hệ thống §  Một mô hình tĩnh mô tả các hệ thống khác trong môi

trường. §  Sử dụng một mô hình hệ thống con để chỉ ra các hệ

thống khác. v Mô hình về việc sử dụng hệ thống

§  Một mô hình động mô tả cách hệ thống tương tác với môi trường của nó.

§  Sử dụng các use case để chỉ ra các tương tác.

10

Page 11: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Ngữ cảnh hệ thống cho trạm thời tiết

Weatherinformation

system1..n1 Weather

station

Satellite

1

1

1..n

1

Controlsystem 11

1 1..n

11

Page 12: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Use case cho trạm thời tiết

Shutdown

Reportweather

Restart

Report status

Reconfigure

Weatherinformation

system

Controlsystem Powersave

Remotecontrol

12

Page 13: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mô tả use case—Report weather

System Weather station Use case Report weather Actors Weather information system, Weather station Mô tả Weather station gởi một bản tóm tắt về dữ liệu thời tiết được

tập hợp từ các thiết bị đến Weather information system. Dữ liệu được gởi đi gồm giá trị lớn nhất, nhỏ nhất và giá trị trung bình của nhiệt độ không khí và nhiệt độ mặt đất; áp suất không khí lớn nhất, nhỏ nhất và trung bình; tốc độ gió lớn nhất, nhỏ nhất và trung bình;tổng lượng mưa, hướng gió. Việc lấy mẫu này thực hiện 5’ một lần.

Tác động Weather information system thiết lập một kết nối thông qua vệ tinh với weather station và yêu cầu truyền dữ liệu.

Trả lời Dữ liệu đã tóm tắt được gởi đến Weather information system.

Chú thích Các Weather station thường được yêu cầu báo cáo 1 lần/giờ nhưng độ thường xuyên này khác nhau tùy theo từng weather station và có thể thay đổi trong tương lai.

13

Page 14: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình

• Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

• Thiết kế kiến trúc hệ thống

• Nhận diện các đối tượng hệ thống quan trọng

• Phát triển các mô hình thiết kế

• Đặc tả giao diện đối tượng.

14

Page 15: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Thiết kế kiến trúc

v Sử dụng thông tin về các tương tác giữa hệ thống và môi trường để thiết kế kiến trúc hệ thống. §  Nhận diện các component chính hình thành nên hệ

thống và mối quan hệ giữa các component này, §  Tổ chức các component này sử dụng một kiến trúc mẫu

có sẵn ví dụ như mô hình phân tầng hoặc mô hình client-server.

15

Page 16: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Kiến trúc ở mức cao của weather station

«subsystem»Data collection

«subsystem»Communications

«subsystem»Configuration manager

«subsystem»Fault manager

«subsystem»Power manager

«subsystem»Instruments

Communication link

16

Page 17: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Kiến trúc của Weather station

Page 18: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Kiến trúc của hệ thống thu thập dữ liệu Data Collection

Data collection

Transmitter Receiver

WeatherData

18

Page 19: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình

• Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

• Thiết kế kiến trúc hệ thống

• Nhận diện các đối tượng hệ thống quan trọng

• Phát triển các mô hình thiết kế

• Đặc tả giao diện đối tượng.

19

Page 20: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Nhận diện lớp đối tượng

v Thường là một phần khó của thiết kế hướng đối tượng.

v Không có một công thức tổng quát nào §  phụ thuộc về kỹ năng, kinh nghiệm và kiến thức

về lĩnh vực của người thiết kế hệ thống. v Đây là quy trình lặp lại

§  Ta không thể thực hiện xong ngay lần đầu tiên.

20

Page 21: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các phương pháp để nhận diện

21

Sử dụng phương pháp phân tích ngữ pháp dựa vào mô tả hệ thống sử dụng ngôn ngữ tự nhiên.

Dựa vào việc nhận diện những thứ hữu hình có trong miền ứng dụng.

Sử dụng phương pháp hành vi và nhận diện các vật thể dựa vào cái gì tham gia vào hành vi nào

Sử dụng việc phân tích dựa vào kịch bản. Các đối tượng, thuộc tính và phương thức trong mỗi kịch bản được nhận diện.

Page 22: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Ví dụ: mô tả Weather station

A weather station is a package of software controlled instruments which collects data, performs some data

processing and transmits this data for further processing. The instruments include air and ground thermometers, an

anemometer, a wind vane, a barometer and a rain gauge. Data is collected periodically.

When a command is issued to transmit the weather data, the

weather station processes and summarises the collected data. The summarised data is transmitted to the mapping computer

when a request is received.

22

Page 23: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các lớp đối tượng trong Weather station

v Việc nhận diện các đối tượng trong hệ thống weather station có thể dựa vào những dữ liệu và phần cứng hữu hình trong hệ thống: §  Ground thermometer, Anemometer, Barometer

•  Các đối tượng của miền ứng dụng, là các đối tượng phần cứng liên quan đến thiết bị trong hệ thống.

§  Weather station •  Giao diện cơ bản của weather station với môi trường của nó. Do đó, các thao tác của nó phản ánh các tương tác được nhận diện trong mô hình use case.

§  Weather data •  Chịu trách nhiệm xử lý các yêu cầu về báo cáo thời tiết. Đối

tượng này gởi một bản tóm tắt về dữ liệu từ thiết bị đến hệ thống thông tin thời tiết.

23

Page 24: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các lớp đối tương Weather station

identifier

reportWeather ( )reportStatus ( )powerSave (instruments)remoteControl (commands)reconfigure (commands)restart (instruments)shutdown (instruments)

WeatherStation

get ( )test ( )

Groundthermometer

temperature

Anemometer

windSpeedwindDirection

get ( )test ( )

Barometer

pressureheight

get ( )test ( )

WeatherData

airTemperaturesgroundTemperatureswindSpeedswindDirectionspressuresrainfall

collect ( )summarize ( )

gt_Identan_Ident bar_Ident

24

Page 25: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Bài tập

v Sử dụng các ký hiệu đồ họa UML cho lớp đối tượng, thiết kế các lớp đối tượng, nhận diện các thuộc tính và thao tác. Sử dụng kinh nghiệm của bản thân để quyết định thuộc tính và thao tác trong những đối tượng này. § Điện thoại § Máy in cho máy tính cá nhân § Máy nghe nhạc cá nhân §  Tài khoản ngân hàng § Danh mục thư viện

25

Page 26: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình

• Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

• Thiết kế kiến trúc hệ thống

• Nhận diện các đối tượng hệ thống quan trọng

• Phát triển các mô hình thiết kế

• Đặc tả giao diện đối tượng.

26

Page 27: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các mô hình thiết kế

v Chỉ ra các đối tượng và lớp đối tượng và mối quan hệ giữa các thực thể này.

v Mô hình tĩnh § mô tả cấu trúc tĩnh của hệ thống về các lớp đối

tượng và quan hệ. v Mô hình động

§ mô tả tương tác động giữa các đối tượng.

27

Page 28: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các ví dụ về mô hình thiết kế

Mô hình hệ thống con

• Chỉ ra việc gom nhóm các đối tượng vào trong hệ thống con tương ứng

Mô hình tuần tự

• Chỉ ra chuỗi tuần tự các tương tác của các đối tượng.

Mô hình trạng thái

• Chỉ ra cách các đối tượng riêng lẻ thay dổi trạng thái để trả lời các sự kiện.

Các mô hình khác như mô hình use case, mô hình cộng gộp, mô hình tổng quát hóa, ...

28

Page 29: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mô hình hệ thống con

v Là mô hình tĩnh, chỉ ra cách một thiết kế được tổ chức thành các nhóm đối tượng liên quan đến nhau về mặt logic như thế nào.

v Trong UML, biểu đồ gói được sử dụng để biểu diễn mô hình hệ thống con.

29

Page 30: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Hệ thống con Weather station

Page 31: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mô hình tuần tự

v Mô hình tuần tự chỉ ra chuỗi tuần tự các tương tác của đối tượng §  Đối tượng được đặt ở hàng ngang trên cùng; §  Thời gian được biểu diễn bằng đường thẳng đứng vì thế

mô hình được đọc từ trên xuống; §  Tương tác được biểu diễn bằng các đường mũi tên có đặt tên, các kiểu mũi tên khác nhau biểu diễn các loại tương tác khác nhau;

§  Ô hình chữ nhật trong một lifeline biểu diễn thời gian khi đói tượng đang điều khiển một đối tượng khác trong hệ thống.

31

Page 32: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Biểu đồ tuần tự biểu diễn việc thu thập dữ liệu

:SatComms

request (report)

acknowledgereportWeather ()

get (summary)

reply (report)

acknowledge

:WeatherStation :Commslink

summarize ()

:WeatherData

acknowledge

send (report)

acknowledge

Weatherinformation system

32

Page 33: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Biểu đồ trạng thái

v Được sử dụng để chỉ ra cách các đối tượng trả lời các yêu cầu dịch vụ khác nhau và việc dịch chuyển trạng thái gây ra bởi các yêu cầu này.

v Là mô hình mức cao của một hệ thống hoặc là mô hình hành vi thời gian thực của đối tượng.

v Không cần biểu đồ trạng thái cho tất cả các đối tượng trong hệ thống. §  Nhiều đối tượng trong hệ thống khá đơn giản

và một mô hình trạng thái thêm vào thiết kế các chi tiết không cần thiết.

33

Page 34: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Biểu đồ trạng thái của Weather station

transmission done

remoteControl()

reportStatus()restart()

shutdown()

test complete

weather summarycomplete

clock collectiondone

Operation

reportWeather()

Shutdown Running Testing

Transmitting

CollectingSummarizing

Controlled

Configuring

reconfigure()

configuration done

powerSave()

34

Page 35: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các giai đoạn của quy trình

• Định nghĩa ngữ cảnh và các chế độ sử dụng hệ thống

• Thiết kế kiến trúc hệ thống

• Nhận diện các đối tượng hệ thống quan trọng

• Phát triển các mô hình thiết kế

• Đặc tả giao diện đối tượng.

35

Page 36: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Đặc tả giao diện

v Giao diện đối tượng phải được đặc tả sao cho đối tượng và các component có thể được thiết kế song song với nhau.

v Thiết kế giao diện liên quan đến việc đặc tả chi tiết giao diện của một đối tượng hoặc một nhóm đối tượng.

v Giao diện có thể được đặc tả trong UML sử dụng cùng ký hiệu với biểu đồ lớp.

36

Page 37: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Đặc tả giao diện

v Không nên chứa chi tiết việc biểu diễn dữ liệu trong đặc tả giao diện.

v Cùng một đối tượng có thể có vài giao diện, mỗi giao diện là một góc nhìn khác nhau về các phương thức mà đối tượng cung cấp.

v Một nhóm các đối tượng có thể được truy cập thông qua một interface duy nhất.

37

Page 38: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Weather station interfaces

«interface»Reporting

weatherReport (WS-Ident): WreportstatusReport (WS-Ident): Sreport

«interface»Remote Control

startInstrument(instrument): iStatusstopInstrument (instrument): iStatuscollectData (instrument): iStatusprovideData (instrument ): string

38

Page 39: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Giao diện Weather station

interface WeatherStation {

public void WeatherStation () ;

public void startup () ;public void startup (Instrument i) ;

public void shutdown () ;public void shutdown (Instrument i) ;

public void reportWeather ( ) ;

public void test () ;public void test ( Instrument i ) ;

public void calibrate ( Instrument i) ;

public int getID () ;

} //WeatherStation

Page 40: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Bài tập

v Một hệ thống quản lý thời gian và nhật ký nhóm.

v Trạm xăng tự động.

40

Page 41: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Nội dung

1.   Thiết kế hướng đối tượng sử dụng UML 2.   Thiết kế mẫu

41

Page 42: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các mẫu thiết kế

v Là cách tái sử dụng các kiến thức trừu tượng về một vấn đề và giải pháp.

v Mẫu là một mô tả của vấn đề và điểm chính của giải pháp.

v Nên biểu diễn đủ trừu tượng để có thể tái sử dụng ở các thiết lập khác.

v Các mô tả mẫu thường sử dụng các đặc tính hướng đối tượng như tính thừa kế và tính đa hình.

42

Page 43: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các thành phần của mẫu

v Tên §  Một tên có nghĩa để nhận diện.

v Mô tả vấn đề. v Mô tả giải pháp.

§  Không phải là một thiết kế rời rạc mà là một template cho một giải pháp thiết kế trong đó giải pháp này có thể được sử dụng theo cách khác.

v Hệ quả §  Kết quả sau khi áp dụng mẫu này.

43

Page 44: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mẫu Observer

v Tên §  Observer.

v Mô tả §  Tách rời việc biểu diễn trạng thái ra khỏi đối tượng.

v Mô tả vấn đề §  Được sử dụng khi có nhiều cách hiển thị trạng thái.

v Mô tả giải pháp §  Xem slide 44.

v Hệ quả §  Sẽ không thực tế nếu muốn tối ưu hóa để làm tăng hiệu

suất của việc hiển thị.

44

Page 45: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mẫu Observer (1)

Tên mẫu Observer

Mô tả Tách rời việc hiển thị trạng thái ra khỏi vật thể và cho phép cung cấp các hiển thị thay thế. Khi trạng thái của đối tượng thay đổi, tất cả các hiển thị được thông báo và tự động cập nhật sự thay đổi đó.

Mô tả vấn đề Trong nhiều tình huống, ta phải cung cấp nhiều hiển thị khác nhau về thông tin trạng thái, ví dụ như một hiển thị đồ họa và một hiển thị bảng. Các biểu diễn thay thế nên hỗ trợ tương tác, và khi trạng thái bị thay đổi, tất cả các hiển thị phải được cập nhật. Mẫu này cũng có thể được sử dụng trong tất cả các tình huống ở đó nhiều hơn một định dạng hiển thị về thông tin trạng thái được yêu cầu và ở đó không cần thiết phải duy trì thông tin trạng thái để biết về định dạng hiển thị cụ thể được sử dụng.

45

Page 46: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mẫu Observer (2) Tên mẫu Observer

Mô tả giải pháp

Gồm hai đối tượng trừu tượng: Subject và Observer, và hai đối tượng cụ thể: ConcreteSubject và ConcreteObject thừa kế thuộc tính của các đối tượng trừu tượng liên quan. Các đối tượng trừu tượng chứa các thao tác chung có thể áp dụng được trong mọi tình huống. Trạng thái được hiển thị được duy trì trong ConcreteSubject, cho phép thêm hoặc loại bỏ các Observer (mỗi observer tương ứng với một hiển thị) và đưa ra một thông báo khi trạng thái bị thay đổi. ConcreteObserver duy trì một bản copy trạng thái của ConcreteSubject và cài đặt giao diện Update() của Observer. ConcreteObserver tự động hiển thị trạng thái và phản ánh sự thay đổi khi trạng thái được cập nhật.

Hệ quả Subject chỉ biết Observer và không biết về chi tiết của lớp cụ thể. Vì vậy có ít mối liên hệ giữa các đối tượng này. Vì thiếu thông tin, việc tối ưu để nâng cao hiệu năng hiển thị là không thực tế. Thay đổi Subject có thể gây nên một loạt các cập nhật đối với các Observer được phát sinh một cách không cần thiết.

46

Page 47: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Đa hiển thị sử dụng mẫu Observer

A: 40B: 25C: 15D: 20

Observer 1

A

B

C

D

Observer 2

Subject

0

50

25

A B C D

47

Page 48: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Mô hình UML của mẫu Observer

Subject Observer

Attach (Observer)Detach (Observer)Notify ()

Update ()

ConcreteSubject

GetState ()

subjectState

ConcreteObserver

Update ()

observerState

observerState = subject -> GetState ()return subjectState

for all o in observers o -> Update ()

48

Page 49: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối

Nguyễn Thị Minh Tuyền Nhập môn CNPM

Các vấn đề về thiết kế

v Bất kỳ vấn đề thiết kế nào đang gặp phải cũng có một mẫu có thể áp dụng được.

v Ví dụ: §  Báo cho một vài đối tượng về trạng thái của đối tượng nào đó bị

thay đổi (Observer pattern). §  Cung cấp một giao diện đơn giản cho cho một tập các giao diện

trong hệ thống con, làm cho hệ thống con dễ sử dụng hơn (Façade pattern).

§  Cung cấp một phương pháp chuẩn để truy cập vào các phần tử của một tập hợp, bỏ qua việc tập hợp đó được cài đặt thế nào (Iterator pattern).

§  Cho phép khả năng mở rộng tính năng của một lớp đã có sẵn tại thời gian thực (Decorator pattern).

§  ...

49

Page 50: Thiết kế hướng đối tượng - tuyennguyen.info Design.pdf · Lập trình hướng đối tượng liên quan đến việc hiện thực hóa thiết kế hướng đối