Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 59; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.216.248 (0.009 с.) |