Tải bản đầy đủ (.pptx) (42 trang)

Thiết kế phần mềm 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 (1.68 MB, 42 trang )

Thiết kế phần mềm hướng đối tượng
Thiết kế phần mềm hướng đối tượng
O
Vũ Minh Hải 07110037
O
Lâm Chí Hiền 07110041
O
Nguyễn Công Hiếu 07110045
O
Chiếng Mành Sâm 07110100
O
Vũ Minh Hải 07110037
O
Lâm Chí Hiền 07110041
O
Nguyễn Công Hiếu 07110045
O
Chiếng Mành Sâm 07110100
5/6/15
1
GVHD: Thầy Nguyễn Trần Thi Văn
GVHD: Thầy Nguyễn Trần Thi Văn
Thành Viên:
Thành Viên:
Nội dung báo cáo
Nội dung báo cáo
5/6/15
2
Prototype
Singleton
Prototype


Prototype
5/6/15
3
Prototype pattern là gì?
I
Mục đích và ý nghĩa,tính chất
II
Cấu trúc
III
Ưu và nhược điểm
IV
Prototype
Prototype
5/6/15
4
5/6/15
4
Implementation
V
Các mẫu liên quan
VI
Một số ví dụ cụ thể
VII
Một số điểm cần lưu ý khi thực hiện
VIII
I.Prototype pattern là gì?

I.Prototype pattern là gì?

O

Thuộc nhóm Creational Patterns
O
là mẫu thiết kế chỉ định ra một đối tượng đặc biệt để
khởi tạo, nó sử dụng một thể nghiệm sơ khai rồi sao
chép ra các đối tượng khác từ mẫu đối tượng này
5/6/15
5
II.

Mục đích và ý nghĩa,tính chất
II.

Mục đích và ý nghĩa,tính chất
O
giúp cho việc khởi tạo object bằng một object
nguyên mẫu (prototype), là copy của object “mẫu” đó.
5/6/15
6
II.

Mục đích và ý nghĩa,tính chất
II.

Mục đích và ý nghĩa,tính chất
O
Ý tưởng của mẫu là chúng ta được cung cấp một
object và sẽ dùng chính object này để như là một hình
mẫu (template) khi cần tạo lập một đối tượng mới
5/6/15
7

II.

Mục đích và ý nghĩa,tính chất
II.

Mục đích và ý nghĩa,tính chất
5/6/15
8
Tính chất :
Tần suất sử dụng thấp
hoặc trung bình
Đặc trưng là dùng
phương thức clone() để
sao chép đối tượng
Có liên quan chặc chẽ
với mẫu Abstract
Factory
III. Cấu trúc

III. Cấu trúc

5/6/15
9
Cung cấp interface để copy
chính bản thân nó (phương
thức clone())
IV. Ưu và nhược điểm

IV. Ưu và nhược điểm


5/6/15
10
Ưu điểm
Ưu điểm
O
Prototype ẩn đi những lớp con rời rạc từ phía client,
do vậy làm giảm đi số lớp con mà client cần biết. Hơn
thế nữa pattern này làm cho client hoạt động với những
lớp con cụ thể mà không phải thay đổi gì.
5/6/15
11
Ưu điểm
Ưu điểm
5/6/15
12
Thêm và loại bỏ lớp concreate lúc run-time
Khởi tạo object mới bằng cách thay đổi một vài attribute của object (các object có ít điểm khác biệt
nhau):
Khởi tạo object mới bằng cách thay đổi cấu trúc
Giảm việc phân lớp
Nhược điểm
Nhược điểm
O
phải implement mỗi phương thức clone() của mỗi lớp
con của Prototype sẽ gặp khó khăn
5/6/15
13
V.

Implementation


V.

Implementation

using System;
using System.Collections.Generic;

namespace DoFactory.GangOfFour.Prototype.RealWorld
{
class MainApp
{
static void Main()
{
ColorManager colormanager = new ColorManager();
colormanager["red"] = new Color(255, 0, 0);
colormanager["green"] = new Color(0, 255, 0);
colormanager["blue"] = new Color(0, 0, 255);
colormanager["angry"] = new Color(255, 54, 0);
colormanager["peace"] = new Color(128, 211, 128);
colormanager["flame"] = new Color(211, 34, 20);
Color color1 = colormanager["red"].Clone() as Color;
Color color2 = colormanager["peace"].Clone() as Color;
Color color3 = colormanager["flame"].Clone() as Color;
Console.ReadKey();
}
}
5/6/15
14
V.


Implementation

V.

Implementation

abstract class ColorPrototype
{
public abstract ColorPrototype Clone();
}


class Color : ColorPrototype
{
private int _red;
private int _green;
private int _blue;

// Constructor
public Color(int red, int green, int blue)
{
this._red = red;
this._green = green;
this._blue = blue;
}
5/6/15
15
V.


Implementation

V.

Implementation

// Create a shallow copy
public override ColorPrototype Clone()
{
Console.WriteLine(
"Cloning color RGB: {0,3},{1,3},{2,3}",
_red, _green, _blue);

return this.MemberwiseClone() as ColorPrototype;
}
}
class ColorManager
{
private Dictionary<string, ColorPrototype> _colors =
new Dictionary<string, ColorPrototype>();
public ColorPrototype this[string key]
{
get { return _colors[key]; }
set { _colors.Add(key, value); }
}
}
}
5/6/15
16
V.


Implementation

V.

Implementation

Out put
Cloning color RGB: 255, 0, 0
Cloning color RGB: 128,211,128
Cloning color RGB: 211, 34, 20
5/6/15
17
VI. Các mẫu liên quan:
VI. Các mẫu liên quan:
O
Có liên quan chặc chẽ với mẫu Abstract Factory
O
Các nguyên tắc có thể là bạn sẽ cần phải sao chép
một đối tượng trong thời gian.
5/6/15
18
VII. Một số ví dụ cụ thể
VII. Một số ví dụ cụ thể
5/6/15
19
Một hệ thống cho các giao dịch tài khoản ngân hàng
Trò chơi có sử dụng một mê cung
Phân tích bán hàng trên một tập hợp các dữ liệu từ CSDL
VIII. Một số điểm cần lưu ý

VIII. Một số điểm cần lưu ý
O
Sử dụng một prototype manager
O
Thực thi Clone()
O
Khởi tạo đối tượng
O
Chú ý
5/6/15
20
Đặt vấn đề
Định nghĩa
Động lực
Trường hợp sử dụng
Cấu trúc
Ưu nhược điểm
Cách thực hiện
Ví dụ
Pattern liên quan
Pattern: Singleton
Pattern: Singleton
5/6/15
21
Pattern: Singleton
Đặt vấn đề
Pattern: Singleton
Đặt vấn đề
class ResourceManager
{

private: int x;
public: ResourceManager(){x =0; }
void SetX(int _x){ x = _x;}
void GetX(){ return x;}
}
5/6/15
22
Pattern: Singleton
Đặt vấn đề()
Pattern: Singleton
Đặt vấn đề()
class ClientObject1
{
public:
void DoSomething()
{
ResourceManager rm;
printf(“x = %d”,rm.GetX());
x = 100;
}
}
class ClientObject2
{
public:
void DoSomething()
{
ResourceManager rm;
printf(“x = %d”,rm.GetX());
x = 500;
}

}
5/6/15
23
Pattern: Singleton
Định nghĩa
Pattern: Singleton
Định nghĩa

Đảm bảo một lớp chỉ có duy nhất một thực thể hay thể hiện
(instance)

Cung cấp một cổng giao tiếp chung nhất để truy xuất vào nó
5/6/15
24
Pattern Singleton
Động lực
Pattern Singleton
Động lực

Một số lớp có duy nhất một thể hiện (instance)

Sử dụng một biến toàn cục
5/6/15
25

×