Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Краткие теоретические сведенияСодержание книги
Поиск на нашем сайте Шаблон Bridge применяется в ситуации, когда некоторый комплекс объектов обрабатывается набором технологий. Количество объектов и количество технологий не связано и может увеличиваться. Рассмотрим методику использования шаблона Bridge для рисования в условиях алфавитно – цифрового экрана. Предполагается, что имеется два объекта рисования и два метода рисования. Диаграмма шаблона имеет вид:
UML диаграмма шаблона Bridge Класс Shape является общим для объектов рисования Circle и Rectangle. Класс Drawing содержит методы рисования, сгруппированные к классах V1Drawing и V2Drawing. Для совместимости с возможными прежними разработками добавлены классы DP1 и DP2. Порядок выполнения работы 1. Определить иерархию классов объектов рисования (в соответствии с вариантом). 2. Определить методы классов с учетом иерархии 3. Реализовать классы. 4. Написать демонстрационную программу мультипликации, в которой рисуются требуемые объекты в псевдографике и ncurses технологиях. Методические указания. Реализовать требуемые действия, рассматривая приведенные тексты как псевдокод. //Функция Main #include <iostream.h>
#include "Shape.h" #include "Drawing.h" #include "V1Drawing.h" #include "V2Drawing.h" #include "Rectangle.h" #include "Circle.h" //using namespace std; int main () { Shape *s1; Shape *s2; Drawing *dp1, *dp2;
dp1 = new V1Drawing; s1 = new Rectangle(dp1, 1.0, 1.0, 2.0, 2.0);
dp2 = new V2Drawing; s2= new Circle(dp2, 2, 2, 4);
s1->draw(); s2->draw();
float a; cin >> a; delete s1; delete s2; delete dp1; delete dp2; return 0; }
// Shape.h: interface for the Shape class. #pragma once #include "Drawing.h" class Shape { public: //Чистая виртуальна функция. // Параметры не указаны, поскольку их количество и тип могут меняться virtual void draw() = 0; Shape(); Shape(Drawing *dp); void drawLine(double xl, double yl, double x2, double y2); void drawCircle(double x, double y, double r); private: Drawing *_dp; };
// Drowing.h: interface for the Drowing class.
#pragma once class Drawing { public: virtual void drawLine ( double xl, double yl, double x2, double y2) = 0; virtual void drawCircle ( double x, double y, double r) = 0; };
// Rectangle.h: interface for the Rectangle class.
#include "Shape.h"
#include "Drawing.h" class Rectangle: public Shape{ public: Rectangle::Rectangle(Drawing *dp, double x1, double y1, double x2, double y2); double _x1; double _y1; double _x2; double _y2; void draw(); }; // Circle.h: interface for the Circle class.
#include "Shape.h"
#include "Drawing.h" class Circle: public Shape{ public: Circle::Circle( Drawing *dp, double x, double y, double r); public: double _x; double _y; double _r; void draw(); };
// V1Drawing.h: interface for the V1Drawing class.
#include "Drawing.h"
#include "DP1.h" class V1Drawing: public Drawing{ private: DP1 _DP1; public: void drawLine( double xl, double yl, double x2, double y2); public: void drawCircle( double x, double y, double r); };
// V2Drawing.h: interface for the V2Drawing class.
#include "Drawing.h"
#include "DP2.h" class V2Drawing: public Drawing { private: DP2 _DP2; public: void drawLine ( double xl, double yl, double x2, double y2); public: void drawCircle( double x, double y, double r); }; // DP1.h: interface for the DP1 class.
class DP1 { public: static void draw_a_line ( double xl, double yl, double x2, double y2); static void draw_a_circle ( double x, double y, double r); }; // DP2.h: interface for the DP2 class.
class DP2 { public: static void drawLine ( double xl, double x2, double yl, double y2); static void drawCircle ( double x, double y, double r); }; # Makefile for Bridge project
bridge: Main.o Circle.o DP1.o DP2.o Drawing.o Rectangle.o Shape.o V1Drawing.o V2Drawing.o g++ -o bridge Main.o Circle.o DP1.o DP2.o Drawing.o Rectangle.o Shape.o V1Drawing.o V2Drawing.o Main.o: Main.cpp g++ -c Main.cpp Circle.o: Circle.cpp g++ -c Circle.cpp DP1.o: DP1.cpp g++ -c DP1.cpp DP2.o: DP2.cpp g++ -c DP2.cpp Drawing.o: Drawing.cpp g++ -c Drawing.cpp Rectangle.o: Rectangle.cpp g++ -c Rectangle.cpp Shape.o: Shape.cpp g++ -c Shape.cpp V1Drawing.o: V1Drawing.cpp g++ -c V1Drawing.cpp V2Drawing.o: V2Drawing.cpp g++ -c V2Drawing.cpp clean: rm -f *.o bridge
Содержание отчета 1. Титульный лист: название дисциплины; номер и наименование работы; фамилия, имя, отчество студента; дата выполнения. 2. Постановка задачи. Следует дать конкретную постановку, т.е. указать, какие классы должны быть реализованы, какие должны быть в них конструкторы, компоненты-функции и т.д. 3. Иерархия классов в виде графа. 4. Определение технологии наследования с доказательством оптимальности. 5. Определение конструкторов классов и пояснение структуры аргументов конструкторов. 6. Реализация методов. 7. Make оператор 8. Листинг демонстрационной программы. 9. Объяснение необходимости виртуальных функций. Следует показать, какие результаты будут в случае виртуальных и не виртуальных функций. Варианты заданий В качестве классов рисования выступают классы работы 7. В качестве объектов рисования берутся два объекты мультипликации из пункта Эффект мультипликации раздела Графика за 1 курс.
Исключительные ситуации Цель. Получить практические навыки создания обработки исключений в программах на языке С++. Содержание работы. Определить и обработать систему исключений для заданного множества объектов.
|
||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 122; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.) |