Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2019, 13:24   #1
AntonCH
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 58
По умолчанию Какой структурный паттерн выбрать?

Задача поставлена следующим образом -
"С помощью шаблона проектирования обеспечить вывод
на экран собственных инициалов, состоящих из простых графических
объектов (линий, дуг и т.д.)."
Реализовывать хочу на си шарпе. В паттернах я не разбираюсь от слова совсем, прочитал статью, где описываются структурные паттерны -
Декоратор (Decorator)
Адаптер (Adapter)
Фасад (Facade)
Компоновщик (Composite)
Заместитель (Прокси)
Мост (Bridge)
Приспособленец (Flyweight)
Однако так и не понял какой в данном случае целесообразно использовать. Притянуть за уши можно конечно любой. Но как выбрать?
AntonCH вне форума Ответить с цитированием
Старый 25.02.2019, 13:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для начала бы хоть понять что в задании хотят. Что за линии и круги? Как результат выглядеть должен?

Цитата:
Сообщение от AntonCH Посмотреть сообщение
Притянуть за уши можно конечно любой
так во многих случаях оно же само получается даже если не знать, что кто-то когда-то решил так назвать какой-то паттерн и включить его в свою книгу )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2019, 13:51   #3
AntonCH
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 58
По умолчанию

Ну допустим нужно вывести на экран три буквы А Б В. Я представляю это как интерфейс буква с методом нарисовать его реализуют три класса БукваА БукваБ БукваВ в которых определяется как рисуется буква с помощью линий и дуг. И соот класс инициалы содержащий массив из трех букв и метод вызывающий рисование букв. Однако ни под какой из описанных в интернете структурных паттернов эта реализация не подходит. Вот и ломаю голову.
Код:
interface IWord {
            void Draw(Graphics graphics, int offset = 10);
        }

        class WordA : IWord {
            public void Draw(Graphics graphics, int offset = 10) {
                
            }
        }

        class WordB : IWord {
            public void Draw(Graphics graphics, int offset = 10) { }
        }

        class WordC : IWord
        {
            public void Draw(Graphics graphics, int offset = 10) { }
        }

        class Inits {
            IWord[] inits;
            Form form;
            
            public Inits(IWord[] inits, Form form) {
                if (inits.Length != 3)
                    throw new ArgumentException("Должно быть три буквы");
                this.inits = inits;
            }

            public void Draw() {
                foreach (IWord word in inits)
                    word.Draw(form.CreateGraphics());
            }
        }

Последний раз редактировалось AntonCH; 25.02.2019 в 14:06.
AntonCH вне форума Ответить с цитированием
Старый 25.02.2019, 14:06   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А нужно именно структурный паттерн? В цитате ж нет про это.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2019, 17:49   #5
AntonCH
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 58
По умолчанию

текст задания целиком -
Реализация структурных шаблонов проектирования
1. Игра «Морской бой». Реализовать шаблон проектирования, который
позволяет размещать на игровом поле одно-, двух- и трехпалубные корабли.
Также в зависимости от типа корабля обеспечить определение его состояния
(Целый, ранен, убит).
2. С помощью шаблона проектирования обеспечить вывод
на экран собственных инициалов, состоящих из простых графических
объектов (линий, дуг и т.д.).
AntonCH вне форума Ответить с цитированием
Старый 25.02.2019, 18:17   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну в совсем простом хеллоу ворлде понятно, что мало что можно сделать.
Добавьте хоть парсинг строки (хотя это к структурным паттернам наверно не особо относится), и рисование графики.

С графикой тогда можно Composite
https://en.wikipedia.org/wiki/Composite_pattern#C#
https://refactoring.guru/design-patterns/composite

Flyweight еще можно прикрутить.
https://refactoring.guru/design-patterns/flyweight
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 25.02.2019 в 18:19.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2019, 23:44   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что за линии и круги?
Скорей всего, имеется в виду "графические примитивы"
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой ЯП выбрать? Greedo Помощь студентам 12 18.09.2016 16:18
Какой строковый тип выбрать? greenisius Общие вопросы C/C++ 1 30.11.2013 17:28
Какой выбрать UPS? the_deer_one Компьютерное железо 2 04.07.2011 17:03
Какой компилятор выбрать?? vov4ara Софт 1 24.11.2010 23:54
Принтер. (какой выбрать) Карась Компьютерное железо 10 26.07.2008 23:54