Skip to content

vt221zoa/paint-app_design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

Paint App

Опис

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

Процес запуску локально

  1. Завантажте всі файли з репозиторію.
  2. Відкрийте файл index.html у веб-браузері.
  3. Використовуйте інструменти малювання для створення різноманітних малюнків.

Структура файлів та директорій у paint-app

  • index.html - Містить основну розмітку для інтерфейсу додатку
  • script.js - Містить всі функції, необхідні для малювання на полотні, обробки подій користувача, управління інструментами та кольорами
  • style.css - Містить CSS правила для розмітки, елементів інтерфейсу, кнопок, інструментів та інших візуальних елементів
  • icons/ - Директорія, що містить зображення та іконки, використовувані у додатку
  • Observer/ - Директорія, що містить файли для спостереження деяких елементів

Принципи програмування (Programming Principles)

  1. Single Responsibility Principle (SRP)

    • Кожен модуль або клас у програмі відповідає лише за одну задачу.
    • Кожна функція відповідає за окремий інструмент. Функція drawTool відповідає за малювання ліній пензлем або гумкою, а функція drawSpray відповідає за малювання спреєм.
  2. Open/Closed Principle (OCP)

    • Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації.
    • Використання структури подій дозволяє легко додавати нові інструменти без зміни існуючих.
  3. Liskov Substitution Principle (LSP)

    • Об'єкти підкласів повинні бути замінними на об'єкти батьківського класу без порушення функціональності програми.
    • Всі інструменти використовують однаковий інтерфейс для малювання, і тому можуть бути взаємозамінними у класі ToolFactory.
  4. Interface Segregation Principle (ISP)

    • Інтерфейси розділені на спеціалізовані інтерфейси, щоб клієнти не були змушені залежати від методів, які вони не використовують.
    • Кожен інструмент має свої окремі функції та інтерфейси, що дозволяє використовувати тільки ті методи, які потрібні для конкретного інструменту.
  5. Dependency Inversion Principle (DIP)

    • Модулі високого рівня не повинні залежати від модулів низького рівня. Обидва повинні залежати від абстракцій.
    • Використовує абстракції для управління інструментами, такими як setActiveTool та setActiveShape, яка приймає інструмент як параметр, що дозволяє легко додавати або змінювати інструменти без зміни коду високого рівня.

Патерни проєктування (Design Patterns)

  1. Factory Pattern

    • Використовується для створення різних інструментів малювання (пензель, гумка, спрей) через фабричний метод. Це дозволяє легко додавати нові інструменти без зміни існуючого коду.
  2. Observer Pattern

  3. Memento Pattern

    • Методи saveCanvasState(), undoLastAction() та redoLastAction() відповідають за збереження стану полотна, відміну останньої дії та повернення відміненої дії.

Техніки рефакторингу (Refactoring Techniques)

  1. Extract Method

    • Розбивання великих функцій на менші методи для покращення читабельності та повторного використання коду.
  2. Rename Variable

    • Зміна назв змінних на більш зрозумілі та змістовні, що допомагає краще зрозуміти код.
  3. Replace Magic Numbers with Constants

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6