09.04.2016 Views

Priemioop

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

virtual void Draw(const Point& at) = 0;<br />

virtual void HandleMouse (Event& event) = 0;<br />

virtual const Point& GetExtent() = 0;<br />

virtual void Load(istream& from) = 0;<br />

virtual void Save(ostream& to) = 0;<br />

protected:<br />

Graphic();<br />

};<br />

Структурные паттерны<br />

Класс Image реализует интерфейс Graphic для отображения файлов изображений.<br />

В нем замещена операция HandleMouse, посредством которой<br />

пользователь может интерактивно изменять размер изображения:<br />

class Image : public Graphic {<br />

public:<br />

Image(const char* file); // загрузка изображения из файла<br />

virtual ~Image();<br />

virtual void Draw(const Point& at);<br />

virtual void HandleMouse(Event& event);<br />

virtual const Point& GetExtent();<br />

virtual void Load(istream& from);<br />

virtual void Save(ostream& to);<br />

private:<br />

// ...<br />

};<br />

Класс imageProxy имеет тот же интерфейс, что и Image:<br />

class ImageProxy : public Graphic {<br />

public:<br />

ImageProxy(const char* imageFile);<br />

virtual ~ImageProxy();<br />

virtual void Draw(const Point& at);<br />

virtual void HandleMouse(Event& event);<br />

virtual const Points GetExtent();<br />

virtual void Load(istream& from);<br />

virtual void Save(ostream& to);<br />

protected:<br />

Image* GetlmageO;<br />

private:<br />

Image* _image;<br />

Point _extent;<br />

char* _fileName;<br />

};

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!