Skip to content

15. (П7) Створення проєкту з розділенням логіки на модулі: менеджер нотаток

Передумови

Мова в коді

Усі рядкові літерали, написи в меню й на кнопках, заголовок вікна, SQL-запити, імена файлів, модулів та змінних — лише латиницею. Своє ім'я, прізвище та групу пишіть у транслітерації: Ivan Petrenko, KI-31. Кирилиця допускається тільки в коментарях.

Завдання

Перебудувати менеджер нотаток із практичної 5 (notes_manager.py) з одного файлу в пакет, розділений на шари (див. "Структура проєкту")

Персоналізація

Константи оголошуються один раз — у файлі app/config.py — і імпортуються звідти:

STUDENT_NAME = "Ivan Petrenko"                # ваше ім'я та прізвище транслітерацією
STUDENT_GROUP = "KI-31"                       # ваша група
DB_FILE = "workspace_ivan_petrenko.db"        # файл бази з практичних 3-5
APP_TITLE = "Notes Manager"                   # назва застосунку

Заголовок вікна: Notes Manager - Ivan Petrenko, KI-31.

Структура проєкту

Очікуваний результат (може містити розбіжності):

notes_manager/
├── main.py                     <- точка збірки, запуск
├── check_state.py              <- перевірки логіки без інтерфейсу
├── workspace_ivan_petrenko.db  <- база (створюється застосунком)
└── app/
    ├── __init__.py             <- порожній
    ├── config.py               <- константи
    ├── models.py               <- шар даних:      Note
    ├── storage.py              <- шар збереження: SqliteStorage, StorageError
    ├── state.py                <- шар стану:      AppState
    └── ui/
        ├── __init__.py         <- порожній
        ├── main_window.py       <- MainWindow: меню, панель інструментів, рядок стану
        ├── note_list_panel.py   <- NoteListPanel: список нотаток
        └── note_editor_panel.py <- NoteEditorPanel: редактор тексту


Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub