Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск

Кто сейчас на форуме
Сейчас посетителей на форуме: 1, из них зарегистрированных: 0, скрытых: 0 и гостей: 1

Нет

[ Посмотреть весь список ]


Больше всего посетителей (15) здесь было Вт Ноя 27, 2018 3:50 am
Самые активные пользователи за неделю
Ярослав
 


[П 32017] Классная работа + домашние задания

Перейти вниз

[П 32017] Классная работа + домашние задания

Сообщение автор Ярослав в Пт Дек 14, 2018 2:04 pm

Урок №1

• Паттерны проектирования
• Порождающие паттерны: Factory Method, Abstract Factory, Singleton, Builder, Prototype

Презентация

Классная работа: Абстрактная фабрика



DP 01 (16 декабря 2018)
Порождающие паттерны
Срок: к 30 декабря

1. Фреймворк для создания редакторов. Мы разрабатываем архитектуру, которая позволит другим программистам с лёгкостью создавать программы для редактирования всевозможных документов: редактор текста, редактор графики, редактор музыки, фильмов и т. д. Для этого надо заложить гибкую универсальную архитектуру.

Есть базовый интерфейс IDocument. Он предоставляет базовые операции, свойственные всем документам:

• Name: Узнать или поменять название документа
• Show: Показать документ на экране
• Save: Сохранить документ в файл
• Print: Распечатать документ на принтере

Программист, желающий создать текстовый редактор, напишет новый класс TextDocument, наследующий от IDocument, и реализует все его методы и свойства.

Для того, чтобы решить проблему, как создавать экземпляры документов заранее неизвестных (и даже ещё не существующих!) типов, задействуем фабрику.

Интерфейс IDocumentFactory — класс, отвечающий за создание документов двумя возможными способами. Он содержит два фабричных метода:

• New: Создать пустой документ
• Open: Загрузить документ из файла

Программист, желающий создать текстовый редактор, в дополнение к TextDocument должен написать парный класс TextDocumentFactory, наследующий от IDocumentFactory, и реализовать его методы. TextDocumentFactory порождает экземпляры TextDocument.

От вас требуется: создать отдельный проект, библиотеку классов, где будут жить одни только интерфейсы IDocument, IDocumentFactory. Пропишите интерфейсы.


2. Создайте отдельным проектом оконное или консольное приложение, где располагаются конкретные классы TextDocument, TextDocumentFactory, унаследованные от интерфейсов из первого задания. Реализуйте все методы и свойства классов.
avatar
Ярослав
Admin

Posts : 684
Join date : 2016-12-21
Location : Москва

Посмотреть профиль http://itstep.forum2x2.ru

Вернуться к началу Перейти вниз

Re: [П 32017] Классная работа + домашние задания

Сообщение автор Ярослав в Вс Дек 30, 2018 8:45 am

Урок №2. Структурные паттерны, часть 1

• Adapter
• Bridge
• Composite
• Decorator

Презентация

Классная работа




DP Д/з №02 (30 декабря 2018)
Паттерн Composite
Срок: к занятию 13 января

1. Выражение в языке программирования. Выражением называется формула:

Код:
6 - (2 + 3) * 4

С формулой проще всего оперировать в её древовидном представлении:



Узлы бывают двух видов:
• Бинарные операции: плюс, минус, умножить, делить. Это соответствует четырём классам.
• Листья: константы, такие как 2, 3, 4, 6. Это один класс — константа.

Используйте паттерн Composite, чтобы создать базовый интерфейс и иерархию классов для древовидного представления формулы. Всякая формула должна уметь делать две вещи:
1) Напечатать текст формулы на экран
2) Вычислить значение формулы
И то и другое делается рекурсивным обходом. Числовые узлы знают, как их печатать и чему они равны. Бинарные операции обращаются рекурсивно к детским узлам.

Преобразовать строковой текст формулы в древовидное представление — нетривиальная задача, но это и не требуется. Соберите в программе жёстко заданную формулу из примера выше. Распечатайте формулу и вычислите результат.
avatar
Ярослав
Admin

Posts : 684
Join date : 2016-12-21
Location : Москва

Посмотреть профиль http://itstep.forum2x2.ru

Вернуться к началу Перейти вниз

Re: [П 32017] Классная работа + домашние задания

Сообщение автор Ярослав в Вс Янв 13, 2019 8:46 am

Урок №3

• Facade
• Flyweight
• Proxy
• Chain of Responsibility

Презентация

Классная работа



DP Д/з №03 (13 января 2019)
Фасад
Срок: к занятию 27 января

1. Один знаменитый блогер пишет сообщение и рассылает его по всем соцсетям. Соцсетей много: Facebook, Instagram, LiveJournal, VKontakte, Одноклассники и пр. Каждая соцсеть представлена отдельным классом, новое сообщение в ней можно написать, вызвав статический метод Post ():

Код:
// заголовок и текст сообщения
void Post (string title, string message);

В стародавние времена блогеру пришлось бы вызывать метод Post с одинаковыми аргументами для каждой соцсети, что довольно тяготно. Блогер обратился к знакомому программисту (вам) с просьбой упростить массовую отправку: он хотел вызывать всего одну функцию.

Помогите блогеру упростить жизнь, используя паттерн Фасад.

2. Создайте класс Movie (Фильм), у которого есть метод Play (Играть).

Используйте паттерн Заместитель, чтобы создать охраняющего заместителя. Охраняющий заместитель притворяется фильмом, но в момент, когда его просят показать фильм, требует подтверждения возраста: этот фильм только для совершеннолетних.

Если всё ок, то фильм вам покажут.
avatar
Ярослав
Admin

Posts : 684
Join date : 2016-12-21
Location : Москва

Посмотреть профиль http://itstep.forum2x2.ru

Вернуться к началу Перейти вниз

Re: [П 32017] Классная работа + домашние задания

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения