Skip to content

grohvlad/design-Patterns

Repository files navigation

designPatterns

Mostly home assignments


Block 1 UML OOP
Block 2 Factory Method
Block 3 Abstract Factory Method
Block 4 Builder Method
Block 5 Prototype Method
Block 6 Singleton Method
Block 7 Adapter Method
Block 8 Bridge Method
Block 9 Composite Method
Block 10 Decorator Method
Block 11 Facade Method
Block 12 Flyweight Method
Block 13 Proxy Method
Block 14 Chain of Responsibility Method
Block 15 Command Method


Block 1 UML OOP

Pactise 1 Task 1

UML diagram 1

Realization

Pactise 1 Task 2

I have changed a bit the task, add some methods in purpose to make this task more realistic. Але поки не зрозумів, чи правильно я реалізував, бо в практиці трохи по інакшому. Я не зною як при створенні об'єкта через інтерфейс звертатись до методів об'єкта, яких немає у інтерфейсі(

UML diagram 2

Realization

Home work 1 Task 1

Методи не створював, лише конструктори оск на мою думку завданн полягає якраз в них.

UML diagram 3

Realization

Home work 1 Task 2

UML diagram 4

Realization

Home work 1 Task 3

UML diagram 5

Code

Block 2 Factory Method

Home work 2 Task 1

Реалізовано модель роботи кафе із використанням фабричного методу. Замовлення +- випадково рівномірно розподіляються з використанням нормального розподілу.

UML:

UML diagram 6

Realization

Home work 2 Task 2

Реалізовано модель вказану в завданні із використанням шаблонів фабричного методу. Результат роботи програми зберігається в папці output де вказано необхідну інформацію напроти кожного виразу з вхідних данних. Також в кінці кожного текстового файлу на виході надано відповідь по максимальому та мінімальному розв'язку. Реалізація пошуку цих значень можливо потребує покращення.

UML:

UML diagram 7

Realization

Block 3 Abstract Factory Method

Home work 3 Task 1

Реалізовано модель закупки громадського транспорту, що використовує метод абстрактна фабрика для додавання нових виробників. Також результатом вивидить результуючу вартість вибору фірми.

UML:

UML diagram 8

Realization

Home work 3 Task 2

Адаптовано модель кафе із використанням абстрактної фабрики для кавових машин. Завдання містить велику кількість залежностей, щщо від чого можна визначати й моделювати. Реалізована модель використовує значення середньої кількості відвідувачів(однаковий) та параметра кавоварки - коефіцієнт задоволення, щоб розрахувати кількість клієнтів для подальшого вирахування ціни кафе. Результатом виводиться середня кількість клієнтів за день та ціна кави у меню для наявних виробниів.

UML:

UML diagram 9

Realization

Block 4 Builder Method

Home work 3 Task 1

Реалізовано модель створення автомобіля з різними компонентами за допомогою методу Будівельник. Метод використовувався при зборі автомобіля та кузова для нього.

UML:

UML diagram 10

Realization

Home work 3 Task 2

Реалізовано модель створення текстового рядка використовуючи метод Будівельник.

UML:

UML diagram 11

Realization

Block 4 Builder Method

Home work 4 Task 1

Реалізовано модель створення автомобіля з різними компонентами за допомогою методу Будівельник. Метод використовувався при зборі автомобіля та кузова для нього.

UML:

UML diagram 10

Realization

Home work 4 Task 2

Реалізовано модель створення текстового рядка використовуючи метод Будівельник.

UML:

UML diagram 11

Realization

Block 5 Prototype Method

Home work 5 Task 1

Реалізовано модель створення автомобіля з різними компонентами та з можливістю вкладеного клонуванняза допомогою методів Будівельник та Прототип. Прототип використовується у класах всіх складових автомобіля та у його власному. Потреби в додаванні інтерфейсу прототип, або в імплементації Clonable не було помічено оскільки при даній постановці задачі немає наборіб однакових класів чи наслідування. (Якби були клас автомобіль, мотоцикл, тягач, що складали б автопарк, чи були різні класи для сидінь або дверей тоді можна було б додати, а так має з'явитись у наступному завданні).

UML:

UML diagram 12

Realization

Home work 5 Task 2

З класу рівнянь прибрано зайві класи абстрактної фабрики й додано метод прототип, який дозволяє клонувати рівняння для подальших імплементацій.

UML:

UML diagram 12

Realization

Block 6 Singleton Method

Home work 6 Task 1

Реалізовано шаблон проектування Одинак для читання та обробки текстових файлів у програмі. Створено клас умовних користувачів, котрі асинхронно використовують файл.

Realization

Home work 6 Task 2

До завдання з шаблоном проєктування Будівельник додано шаблон Одинак. Оскільки робота ведеься не з данними а зі створенням нових екземплярів класу, і цу є основним поточним завданням програми вибрано спосіб Одтнака, де він створюється з самого початку. (у нього не ресурсозатратний конструктор, як було б з базами даних)

Realization

Block 7 Adapter Method

Home work 7 Task 2

Створено адаптер для бібліотеки методом iз використанням класу переходу.

Realization

Block 8 Bridge Method

Home work 8 Task 1

Проведно рефакторинг класів, із застосуванням шаблону проектування Міст. Додано ще одну реалізацію методу міст, котра включає в себе місце для замовлення(в дорогу/ в кафе) та містить список замовлень. Тобто Замовлення є абстракцією, де її місця окремі реалізації, а набір напоїв є імплементацією.

UML:

UML diagram 13

Realization

Home work 8 Task 2

Проведно рефакторинг коду, із застосуванням шаблону проектування Міст.

Realization

Block 9 Composite Method

Home work 9

Проведено рефакторинг коду, із застосуванням шаблону проєктування Компонувальник так щоб програма могла розрахувати виплату заробітної плати працівникам супермаркету, що очолюється директором (менеджером) містить три відділи (м’ясний відділ, відділ молокопродуктів, кондитерський відділ), кожен з яких очолюється менеджером, та містить трьох співробітників-продавців. Із особливостей - є один клас бос, у котрого немає вищого керівництва, у менеджера, як і у продавця може ути керівник бос або менеджер. Продавець, у якого керівник бос вважається більш елітним (Для спеціальних замовлень)

Realization

Block 10 Decorator Method

Home work 10 Task 1

Розглянуто клас PrintableString, що є контейнером для поля типу рядок та містить єдиний публічний метод для виведення цього рядка у консоль.

Для цього класу описано набір декораторів:

PostComaDecorator – декоратор для додавання знаку кома у кінець рядка.
PostEndlDecorator – декоратор для додавання знаку кома у кінець рядка.
PostExclaimDecorator – декоратор для додавання знаку оклику у кінець рядка.
PostWordDecorator – декоратор для додавання слова у кінець рядка.
PreWordDecorator – декоратор для додавання слова у початок рядка.
Використовуючи цей набір декораторів виведено у консоль вираз
Hello, World!
починаючи з порожнього базового рядка.

Realization

Home work 10 Task 2

Розглядається Beverage (Напій) та його нащадки Espresso (Еспресо), DarkRoast (Чорна кава), Decaf (Кава без кофеїну), що мають методи description() та cost(), що повертають опис кави та її вартість відповідно.

Опиcано декоратори для додавання до екземплярів вищенаведених класів додаткові наповнювачі – молоко, цукор, вершки, крем.

Використовуючи цей декоратор, створено такі напої:

Еспресо з двома порціями цукру.
Чорну каву з вершками та двома порціями цукру.
Чорну каву з кремом та порцією цукру.
Кава без кофеїну з молоком та двома порціями цукру.

Realization

Block 11 Facade Method

Home work 11

Проведено рефакторинг коду із застосуванням шаблону проєктування Фасад, щоб спростити роботу клієнта зі складною бібліотекою відеоконвертації. Практичним було б використання чи статичних методів компресій і т.д. чи патерна Одинак.

Realization

Block 12 Flyweight Method

Home work 12

Реалізовано шаблон проєктування Легковаговик для повторного використання створених раніше об'єктів для різних частин автомобіля. У реалізації легковаговик використовується для курма та мотора, при чому клас кермо повністю вкладається в легковаговик (WheelFlyweight), а для мотора ще додається клас Engine, що містить у собі легковаговик(EngineFlyweight), у класі додається лише ID мотора, який для кожного різний.

Realization

Block 13 Proxy Method

Home work 13

Реалізовано шаблон проєктування Замісник, таким чином, що уникнено завантаження зображень з носія інформації, до безпосереднього їхнього виведення на екран.

Realization

Block 14 Chain of Responsibility Method

Home work 14 Task 1

Реалізовано механізм аутентифікації для надання прав користувачам залежно від їхнього типу на базі логіну та паролю

Realization

Home work 14 Task 2

Реалізовано програму для (симуляції) відкриття файлів різних типів. Реалізацію здійснено використовуючи шаблон проєктування Ланцюжок обов’язків.

Realization

Home work 14 Task 3

Реалізовано симулятор, що опрацьовує запити на виконання арифметичних операцій. Кожен запит складається з двох чисел та типу операції, що має над ними виконатися.

Реалізацію симулятора здійснено з використанням шаблону проєктування Ланцюжок обов'язків. Не враховано можливі наявності дужок -3-(-4) та обмежена точність, бо числа розглядаються у форматі float.

Realization

Block 15 Command Method

Home work 15 Task 1

Змодельовано роботу пульта керування увімкнення та вимкнення світильників.

Реалізовано універсальний пульт, що здійснює вимикання світла усіх світильників у системі.

Realization

Home work 15 Task 3

Змодельовано роботу пульта дистанційного керування для телевізора та радіоприймача. Реалізовано універсальний пульт, що вимикає всі пристрої в системі.

Realization

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages