15. (П7) Створення проєкту з розділенням логіки на модулі: менеджер нотаток¶
Передумови¶
- Прочитана Лекція 14 — Керування станом та структура проєкту
- Успішно запущений застосунок «Notes» з лекції — усі файли пакета
app/, разом із перевіркою двома вікнами - Виконана Практична 5 — команди менеджера нотаток: функціональність і база SQLite беруться звідти
Мова в коді
Усі рядкові літерали, написи в меню й на кнопках, заголовок вікна, 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