Software design patterns : (Memento, Observer, Mediator, Iterator)

Размер: px
Започни от страница:

Download "Software design patterns : (Memento, Observer, Mediator, Iterator)"

Препис

1 Software design patterns : (Memento, Observer, Mediator, Iterator) 1. Memento: Запазва вътрешнето състояние на даден обект на външен носител с цел възстановяването му в това състояние на по късен етап. 2. Observer: Дефинира зависимост едно към много между обекти (един Subject и наблюдателите му : много Observsers), така че когато един обект (Subject) промени състоянието си всички зависими от него да се обновяват автоматично (Observsers)

2 3. Mediator: Дефинира обект, капсулиращ взаимоотношенията в даден набор от обекти, избягвайки силната обвързаност между тях. 4. Iterator: Предоставя начин за последователен достъп до елементите на сложен обект, без да разкрива същинското му представяне

3 Задача: Нека задачата се основава на познатия ни вече софтуер за управление на служители в една компания, разбрира се с различна структура и функционалност, за да можем да упражним всичките софтуерни шаблони. Основните функционални изисквания към този софтуер са: всеки служител си има тип : в кой отдел принадлежи: разработка на софтуер, тестер, анализатор, менниджър добавяне на нов служител със специфичните за него х-ки: име, тип, банка, на която му се превежда заплатата и дни отпуска калкулация за общата сума на заплатите, както на всички служители така и на служителите от конкретен отдел (примерно, всички тестери) бизнес логика за превод на пари към конкретна банка, на която принадлежи съответния служител добавяне на възможност служител да се вижда в повече от един аспект: в табличен и листовиден вид специално за оставащите дни отпуска се иска: ако в динамично състояние счетоводителят е въвел грешен брой дни отпуска, да се направи и undo() операция, позволяваща поправка на грешката. Четейки спецификацията веднага от изискванията ни идва на ум, че в случая Memento шаблона би ни служил идеално за предотратяване на грешката на счетоводителката и осъществяване на undo() операция; за показването на различен аспект на конкретен служител (в реална система си представяме че искаме и графичен дизайн с някакви шарении) ще ни е от помощ Observser шаблона; за калкулацията на заплатата за конкретен тип служители ни е нужен Filter iterator шаблона, който ще ни помогне на филтрираме служителите според отдела в който принадлежи; а Mediator шаблона ще ни навигира измежду различните банкови кънекции, които се свързват със съответната банка и осъществяват превода. Разбира се, софтуерната система е имплементирана до едно неработещо ниво. От вас ще се изисква постъпкаво, да доимплементирате и рефакторирате предложената ви система, използвайки всички гореописани шаблони. Отново ще си служим с UML диаграма на системата (червените класове ще се имплементират от вас изцяло)

4

5 1. Доимплементирайте класа EmployeeMediator, като добавете в него един Map<BankType, IbankConnector> BANK_TYPE_TO_BANK_CONNECTOR, като го попълните статично (за всеки тип банка изпозлвате инстанция на съответния Bank Connector). Добавен и попълнен вече Map може да се използва в getbankconnector(banktype banktype) метода. По този начин, ния имплементиране Mediator навигатор- между EmployeeManager и конкретна банкова конекция 2. Нека сега разгледаме AccountSystem модула (класа). В него calculatesalaries(list<employee>) метода, изчислява общата сума на заплатите на подадения списък от служители: calculatesalariesbyemployeetype(list<employee>, EmployeeType) сумира общата заплата на служители от конкретен отдел. Работейки с шаблона Итератор, нека: 2.1. в calculatesalaries използваме java-рвския Iterator за калкулация на сумата на всички заплати 2.2. във втория метод calculatesalariesbyemployeetype(...) виждаме, че се извиква филтриран итератор от нашия медиатор, но той връща NULL pointer. За това Създайте нов клас ImployeeFilteredIterator, имплементиращ интерфейса (методите hasnext(), next()) : IemployeeIterator, използвайки зададеното в UML диаграмата вътрешно състояние: списък от служители, текуща позиция и типа служител, който ще се филтрира от списъка в EmployeeMediator.getFilteredEmployeeIterator(...) метода, създайте инстанция на този филтер и така програмата ще работи коректно по отношение на калкулация на заплатата за конкретни тишаж служители 3. Сега ще имплементираме изискванията за разглеждане на даден служител (неговото име, заплата и оставащи дни отпуска) в различен аспект. Нека те са два: в табличен и листовеиден вид. За това: 3.1. Създайте клас TableEmployeeObservser и ListEmployeeObserver, наследяващи абстрактния клас AbstractEmployeeObservser. Първия клас изписва на конзолата информацията за служителя в следния вид (работим с конкретен пример) : name free days salary Mike Докато втория изписва състоянието така:

6 Name Mike free days 23 salary В Employee класа добавете List<AbstractEmployeeObservser> observsers методи add(observser observser), detach(observser observser) добавящи и изтриващи наблюдатели за конретна инстанция на Employee metod notifyobservsers(), който извиква update(...) метода на всички наблюдатели с новите промени по дни отпуска, заплата или име (Този метод извиквате при всяка промяна на едно от трите полета на служител) 4. Нека сега се справим и с проблема, в който счетоводителя е въвел погрешни данни за дните отпуска и за това се изисква според спецификацията, да може да се прави undo() операция за служител, която просто да реинициализира стария брой дни на служителя Memento 4.1. Създайте нов клас Memento, съдържащ в себе си поле на Employee и дни отпуска (това което ще трябва да пази) в.ж. UML диаграмата В Employee класа добавяте списък от mementos: List<Memento> memetos, който при всяка промяна на дните отпуска ще се добавя в него един Memento със стария борй на дните (в setholidaydays() преди да се инициализира ноя брой дни се прави това) добавете и метод undo(), взимащ последния емелент на списъка mementos и извиква операцията restore() 5. В EmployeeManagementTest класа тествайте така вече имплементираната система. Допълнете със сорс код в тестовия клас. Там е написано начална инициализация (създайте двата наблюдателя и ги добавете за избран служител, вижте дали работи и мементо шаблона, като промените дните опуска и извикате undo() операцията )

ICS Natioanal

ICS Natioanal РЪКОВОДСТВО ЗА ВЪНШНИ ПОТРЕБИТЕЛИ Март 2019 г. История на промените Дата Версия Описание Автор 28.09.2018 1.0 Ръководство за потребителя ИО АД 07.03.2019 2.0 Ръководство за потребителя ИО АД СЪДЪРЖАНИЕ:

Подробно

Виртуални функции

Виртуални функции Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,

Подробно

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:

Подробно

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване 1 2 2 3 Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling

Подробно

IATI Day 1/Junior Task 1. Trap (Bulgaria) X INTERNATIONAL AUTUMN TOURNAMENT IN INFORMATICS SHUMEN 2018 Задача 1. Капан Образуваме редица от точки, кои

IATI Day 1/Junior Task 1. Trap (Bulgaria) X INTERNATIONAL AUTUMN TOURNAMENT IN INFORMATICS SHUMEN 2018 Задача 1. Капан Образуваме редица от точки, кои Task 1. Trap (Bulgaria) Задача 1. Капан Образуваме редица от точки, които са върхове с целочислени координати в квадратна решетка. Всеки две последователни точки от редицата определят единична хоризонтална

Подробно

4

4 Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата

Подробно

ТЕХНИЧЕСКИ УНИВЕРСИТЕТ СОФИЯ НИЛ ПО КОМПЮТЪРНА ГРАФИКА И ГИС СОФТУЕРНА ГРУПА АКСТЪР тел./факс(02) , (02) ; E-MAI

ТЕХНИЧЕСКИ УНИВЕРСИТЕТ СОФИЯ НИЛ ПО КОМПЮТЪРНА ГРАФИКА И ГИС СОФТУЕРНА ГРУПА АКСТЪР тел./факс(02) , (02) ;   E-MAI ТЕХНИЧЕСКИ УНИВЕРСИТЕТ СОФИЯ НИЛ ПО КОМПЮТЪРНА ГРАФИКА И ГИС СОФТУЕРНА ГРУПА АКСТЪР тел./факс(02) 965-3469, (02) 965-2422; HTTP://WWW.ACSTRE.COM E-MAIL: OFFICE@ACSTRE.COM АКСТЪР Портал за електронни административни

Подробно

МОДУЛ 2 ВАРИАНТ НА ПРАКТИЧЕСКА ЗАДАЧА ЗА НАЦИОНАЛНО ОНЛАЙН ОЦЕНЯВАНЕ НА ДИГИТАЛНИ КОМПЕТЕНТНОСТИ X КЛАС от 2016 г. УСЛОВИЕ НА ЗАДАЧАТА За тази задача

МОДУЛ 2 ВАРИАНТ НА ПРАКТИЧЕСКА ЗАДАЧА ЗА НАЦИОНАЛНО ОНЛАЙН ОЦЕНЯВАНЕ НА ДИГИТАЛНИ КОМПЕТЕНТНОСТИ X КЛАС от 2016 г. УСЛОВИЕ НА ЗАДАЧАТА За тази задача МОДУЛ 2 ВАРИАНТ НА ПРАКТИЧЕСКА ЗАДАЧА ЗА НАЦИОНАЛНО ОНЛАЙН ОЦЕНЯВАНЕ НА ДИГИТАЛНИ КОМПЕТЕНТНОСТИ X КЛАС от 2016 г. УСЛОВИЕ НА ЗАДАЧАТА За тази задача са предоставени данни във файл Climate.xls, който ще

Подробно

web разработка

web разработка МИЛЕНА ТОМОВА - НПО ВРАЦА СОФТУЕР ОБЩЕСТВО - КУРС WEB РАЗРАБОТКА- 11.2017 - ВЕРСИЯ 4 web разработка JavaScript DOM манипулации Съдържание DOM елементи Обхождане на DOM - дървото Добавяне, премахване, променяне

Подробно

ЕВРОПЕЙСКИ СЪЮЗ Европейки фонд за регионално развитие Инвестираме във вашето бъдеще ОПЕРАТИВНА ПРОГРАМА Развитие на конкурентоспособността на българск

ЕВРОПЕЙСКИ СЪЮЗ Европейки фонд за регионално развитие Инвестираме във вашето бъдеще ОПЕРАТИВНА ПРОГРАМА Развитие на конкурентоспособността на българск BG161PO003-1.1.06-0022-C0001 Ръководство за работа със системата Този документ е създаден с финансовата подкрепа на Оперативна програма на българската икономика 2007-2013, съфинансирана от Европейския

Подробно

Lush Green

Lush Green Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се

Подробно

1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на в

1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на в 1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на версиите 1.10 *подредба име, размер в наличност екран

Подробно

Slide 1

Slide 1 Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна

Подробно

Подаване на информация в ИСИС - описание с примерни екрани

Подаване на информация в ИСИС - описание с примерни екрани Подаване на информация в Портала на Интегрираната статистическа информационна система (ИСИС) Описание с примерни екрани Подаването на информация в Портала на ИСИС е възможно само след подписването ѝ с

Подробно

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията

Подробно

puzzles-final.indd

puzzles-final.indd Български Шампионат по Главоблъсканици 2007 Квалификационен кръг юни 2007, :30 часа Продължителност: 0 минути Общо точки: 350 Този файл съдържа шампионатните задачи, които ще трябва да решите по време

Подробно

Internationales Donaufest Ulm Neu-Ulm

Internationales Donaufest Ulm Neu-Ulm Д / 2018 П Д П я Л Я Щ Х Л Я рил и 1b рил и 2 я Д омн8 я рил и 3 Д 2018 рил и 4 П ПРИЛОЖЕНИЕ 1b към Правилника за организация и дейност на пазара Кандидатстване за участие в МДФ 2018 с щанд за продажба

Подробно

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики.... Плащания с кредитен превод... 3 3. Плащания на заплати с кредитен превод.... Плащания с директен дебит

Подробно

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана

Подробно

-

- Лениво оценяване и програмиране от по-висок ред Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 7 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Лениво оценяване 7 януари 2016 г.

Подробно

Системи за управление на версии - Работа с git

Системи за управление на версии - Работа с git Системи за управление на версии Работа с git Иван Георгиев, Христо Иванов, Христо Стефанов Tехнологическо училище "Електронни системи", Технически университет, София 28 февруари 2019 г. И. Георгиев, Х.

Подробно

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 49, серия 3.2 Един подход за обработка и конвертиране на векторни изображения в WEB-базираните сис

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 49, серия 3.2 Един подход за обработка и конвертиране на векторни изображения в WEB-базираните сис Един подход за обработка и конвертиране на векторни изображения в WEB-базираните системи Цветан Христов Христов An Approach for Vector Graphics Manipulation and Conversion in the WEB-Based Systems: In

Подробно

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 49, серия 3.2 Приложение на инжектирана верига отговорности в университетска информационна система

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 49, серия 3.2 Приложение на инжектирана верига отговорности в университетска информационна система Приложение на инжектирана верига отговорности в университетска информационна система Мирослав Михайлов, Цветелин Павлов, Венцислав Йорданов Application of injected chain of responsibility pattern in university

Подробно

Допълнения в периода Версия Модул УПТО Във връзка с промените в Наредба Н-18 е разработен специализиран модул за Управлен

Допълнения в периода Версия Модул УПТО Във връзка с промените в Наредба Н-18 е разработен специализиран модул за Управлен Допълнения в периода 29.05.2019 15.07.2019 Версия 4.43.0 Модул УПТО Във връзка с промените в Наредба Н-18 е разработен специализиран модул за Управление на Продажбите в Търговски Обекти (УПТО) към СКИПТЪР(i).

Подробно

Kjh;j’p] ] [

Kjh;j’p] ] [ Автоматизиране на процеса по "Управление на представянето" Павел Петров Методолог системи за УЧР ppetrov@technologica.com СЪДЪРЖАНИЕ Процес Формуляр Типове цели Компетенции и компетентностни модели Шаблони

Подробно

N21mobile Политика за бисквитки За екипа на Network TwentyOne е от изключително значение да защитим от посегателства Вас и Вашите данни, които събирам

N21mobile Политика за бисквитки За екипа на Network TwentyOne е от изключително значение да защитим от посегателства Вас и Вашите данни, които събирам N21mobile Политика за бисквитки За екипа на Network TwentyOne е от изключително значение да защитим от посегателства Вас и Вашите данни, които събираме онлайн (анонимни или други). В тази секция ще научите

Подробно

РЪКОВОДСТВО ЗА РАБОТА С ЕЛЕКТРОННА ПЛАТФОРМА ЗА ТЪРСЕНЕ И ПРЕДЛАГАНЕ НА ЗАНИМАНИЯ ПО ИНТЕРЕСИ НОВО: За учебната година в електронната платфо

РЪКОВОДСТВО ЗА РАБОТА С ЕЛЕКТРОННА ПЛАТФОРМА ЗА ТЪРСЕНЕ И ПРЕДЛАГАНЕ НА ЗАНИМАНИЯ ПО ИНТЕРЕСИ НОВО: За учебната година в електронната платфо РЪКОВОДСТВО ЗА РАБОТА С ЕЛЕКТРОННА ПЛАТФОРМА ЗА ТЪРСЕНЕ И ПРЕДЛАГАНЕ НА ЗАНИМАНИЯ ПО ИНТЕРЕСИ НОВО: За учебната 2019-2020 година в електронната платформа се въвеждат занимания по интереси, финансирани

Подробно

Приложение_1_Заявление по Образец 1

Приложение_1_Заявление по Образец 1 Приложение 1 Образец 1 Заявление за подаване на статистическа информация по електронен път и ползване на електронни услуги, предоставяни от БНБ с квалифициран електронен подпис (КЕП) на задълженото лице

Подробно

PowerPoint Presentation

PowerPoint Presentation Облачна услуга за дистанционна връзка с касови апарати с марка ELTRADE Инструкции за употреба Характеристика на продукта ELTRADE Cloud е услуга, която свързва в облак касовите апарати на една фирма с базата

Подробно

License Plate Recognition    Уеб базирана система за разпознаване на регистрационни номера и отчитане на средна скорост

License Plate Recognition        Уеб базирана система за разпознаване на регистрационни номера и отчитане на средна скорост License Plate Recognition Уеб базирана система за разпознаване на регистрационни номера и отчитане на средна скорост Ен Ер Джи СОФТ ЕООД Възможности на LPR системата лесен и интуитивен потребителски интерфейс

Подробно

SoftwareDoc.docx

SoftwareDoc.docx Описание на програмата SwitchManager СЪДЪРЖАНИЕ ПРЕДНАЗНАЧЕНИЕ... 2 ИНСТАЛИРАНЕ И АКТИВИРАНЕ НА ПРОГРАМНИЯ МОДУЛ... 2 СТАРТИРАНЕ НА ПРОГРАМАТА... 3 РЕЖИМИ НА РАБОТА НА УСТРОЙСТВОТО... 6 WI-FI НАСТРОЙКИ...

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Производителност 2. Оптимизация 3. Методи за оптимизация 2/18 Защо производителността е важна? Дава възможност

Подробно

Microsoft Word - Primer3_1.doc

Microsoft Word - Primer3_1.doc 3.1.) Създаване на нов проект demultiplexor и нов файл demultiplexor.vhd в текстовия редактор Galaxy Стартирайте текстовия редактор Galaxy, използвайки опциите : Start > Programs > WARP > Galaxy 3.1.1.

Подробно

СОФИЙСКА МАТЕМАТИЧЕСКА ГИМНАЗИЯ ТУРНИР ПО МАТЕМАТИКА И ИНФОРМАТИКА "ЗА ТОРТАТА НА ДИРЕКТОРА" ТЕМА ПО ИНФОРМАТИКА Група X (10-12 клас) Задача Рязане на

СОФИЙСКА МАТЕМАТИЧЕСКА ГИМНАЗИЯ ТУРНИР ПО МАТЕМАТИКА И ИНФОРМАТИКА ЗА ТОРТАТА НА ДИРЕКТОРА ТЕМА ПО ИНФОРМАТИКА Група X (10-12 клас) Задача Рязане на Задача Рязане на квадрат Цури има квадрат с лице 1 и иска да го разреже на N равнолицеви правоъгълника (всеки с лице 1 ). За съжаление инстумента за рязане с който разполага Цури не е N съвършен. Чрез

Подробно

СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ СТОПАНСКИ ФАКУЛТЕТ У Ч Е Б Е Н П Л А Н Утвърждавам:... Утвърден от Академически съвет с протокол... /... Про

СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ СТОПАНСКИ ФАКУЛТЕТ У Ч Е Б Е Н П Л А Н Утвърждавам:... Утвърден от Академически съвет с протокол... /... Про СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ СТОПАНСКИ ФАКУЛТЕТ У Ч Е Б Е Н П Л А Н Утвърждавам:... Утвърден от Академически съвет с протокол... /... Професионално направление: 3.7. Администрация и управление

Подробно