În această lecție, ne vom concentra pe prima parte a creării primei noastre aplicații practice, etapa de planificare. Așa cum am explicat în articolul precedent, planificarea este extrem de importantă, pentru că ne poate salva de mai multe probleme mai târziu. Nu numai că ne va da o idee de bază asupra a ceea ce trebuie să facem și despre problemele pe care le-am putea întâmpina, dar, de asemenea, ne va ajuta să ne concentrăm asupra unei singure sarcini, fără să sărim tot timpul de la programare la proiectare, la rezolvare de erori, la cercetare sau planificare.
Primul lucru pe care trebuie să-l planificăm este, evident, ceea ce dorim să facem. Ce aplicație vrem să creem? În această privință, m-am gândit să construiesc o aplicație de tip jurnal personal. Am ales acest tip de program deoarece:
- ne va ajuta să proiectăm o aplicație CRUD (Create Read Update Delete – Crează Citește Actualizează Șterge), care este foarte populară în multe proiecte.
- ne va ajuta să lucrăm cu fișiere text și cu procesarea de text.
- ne va ajuta să înțelegem conceptele structurilor de date.
- pentru că vom folosi clase, vom înțelege câteva principii OOP (Object Oriented Programming – Programare Orientată Pe Obiecte) importante.
- ne va ajuta să înțelegem principiile de bază ale stocării datelor, în mai multe moduri.
- având o interfață grafică, ne va ajuta să înțelegem principiile de creare a unei astfel de aplicații, modul de utilizare a XAML pentru a crea interfețe grafice moderne și foarte atractive.
- fiind o aplicație GUI, ne va ajuta să înțelegem programarea bazată pe evenimente.
- va fi, de asemenea, un program care are un scop real, util.
Acum, să ne gândim la principalele caracteristici pe care programul nostru ar trebui să le aibă. Ar trebui:
- să aibă un fel de sistem de autentificare. Nu vrem ca toată lumea să ne citească jurnalul personal. Trebuie să putem crea conturi de utilizator noi, să ne autentificăm folosind un nume de utilizator și o parolă, să putem recupera parola în cazul în care o uităm sau să o schimbăm atunci când vrem. De asemenea, ar trebui să oferim opțiunea de memorare a numelui de utilizator și a parolei, și de conectare automată la pornirea programului.
- să aibă o zonă principală în care scriem sau citim intrările din jurnalul nostru.
- să salveze intrările fie ca fișiere text, fie într-o bază de date, preferabil criptat.
- să aibă un fel de calendar care va indica zilele care conțin intrări în jurnal și care ne va permite să afișăm acele intrări atunci când facem clic pe zilele evidențiate.
- să ofere posibilitatea de ștergere a uneia sau a tuturor intrărilor de jurnal.
- să ofere posibilitatea editării intrărilor deja salvate.
- să ofere funcția de căutare a intrarilor de jurnal care conțin un anumit cuvânt sau o frază.
- să permită navigarea prin jurnal, afișând jurnalele următoare sau anterioare pornind de la cel afișat la un moment dat.
În continuare, să ne imaginăm cum ar trebui să funcționeze aceste funcții: odată executat, programul ar trebui să afișeze o fereastră în care să putem crea un cont nou, să ne logăm cu unul deja existent, să ne recuperăm parola în cazul în care o uităm sau să o schimbăm atunci când vrem. După introducerea corectă a numelui de utilizator și a parolei, ar trebui să avem o fereastră principală cu o bară de meniu în partea superioară, o bară laterală ce conține un calendar care să ne permită să vizualizăm zilele care conțin intrări de jurnal și o zonă în care putem adăuga o nouă intrare. Ar trebui să putem crea o nouă intrare direct după autentificare. După salvare, ar trebui să putem vedea ziua curentă marcată ca având o intrare în jurnal. Calendarul ar trebui să ne permită să navigăm înapoi în timp, să vedem în ce zile au fost salvate intrări și să ne permită să le afișăm. De asemenea, programul ar trebui să ne permită să edităm intrarea pentru ziua curentă prin adăugarea textului nou la textul deja existent, dar nu ar trebui să ne permită modificarea intrărilor anterioare, din zilele care au trecut deja. De asemenea, ar trebui să putem șterge intrarea unei zile selectate din calendar sau, opțional, să ștergem tot jurnalul.
De asemenea, ar trebui să putem specifica câteva opțiuni pentru program, cum ar fi locația unde sunt salvate intrările, dimensiunea fontului, o temă întunecată, gri și albă etc.
În cele din urmă, ar trebui să putem căuta anumite cuvinte sau fraze în intrările salvate.
Acum, să ne gândim la ce erori am putea întâmpina. În faza de autentificare, cineva ar putea încerca să creeze un cont care există deja. Trebuie să îi informăm despre asta. De asemenea, ar trebui să avertizăm utilizatorul atunci când parola folosită nu este corectă. Când crează un cont nou, trebuie să ne asigurăm că utilizatorul a introdus parola corectă, solicitând o confirmare a acesteia și o avertizare dacă parola este incorectă. Pentru toate câmpurile, trebuie să ne asigurăm că utilizatorul nu le lasă goale. Când scrieți în jurnal într-o intrare care a fost salvată anterior, trebuie să verificăm dacă putem scrie în acel fișier; utilizatorul ar putea să îl deschidă extern în Notepad, ceea ce ar genera erori în încercarea de a modifica un fișier care este deja utilizat de alt program. La afișarea jurnalelor, ar trebui să verificăm dacă respectivul fișier există în continuare, deoarece utilizatorul îl poate șterge extern, după ce am populat zilele calendaristice cu intrările de jurnal. Ar trebui să solicităm o confirmare atunci când utilizatorii doresc să șteargă intrările.
Să evidențiem modulele principale ale aplicației noastre: avem nevoie de unul care să se ocupe de autentificare, unul care se ocupă cu scrierea, editarea sau afișarea de intrări, unul pentru popularea zilelor calendaristice care conțin intrări de jurnal și unul pentru căutarea sau navigarea prin intrări. De asemenea, avem un modul mai mic, pentru setarea opțiunilor globale ale programului.
Gândindu-ne la structurile de date pe care le-am putea folosi, am putea folosi o clasă Utilizator, care conține câteva câmpuri, cum ar fi numele de utilizator, parola, întrebarea de securitate și răspunsul acesteia, etc. Pentru intrările de jurnal, am putea folosi un Dicționar, folosind zilele drept chei, iar intrările din jurnal ca valori. Acest lucru ne-ar ușura utilizarea unei intrări de jurnal pentru o anumită zi.
Am spus că planificarea aspectului grafic al aplicației noastre este la fel de importantă ca și funcționalitatea acesteia. Să schițăm cum ar trebui să arate GUI-ul programului nostru. Ecranul de autentificare este foarte simplu:
Apoi, avem fereastra pentru crearea unui nou cont:
Fereastra pentru recuperarea parolei:
Acum, trebuie să schițăm fereastra principală care este afișată după autentificare, iar acest lucru este un pic mai complex:
Structura meniului arată astfel:
În cele din urmă, fereastra Opțiuni ar trebui să arate aproximativ ca aceasta:
În ceea ce privește stilul vizual al aplicației noastre, am spus deja că vom permite utilizatorilor noștri să aleagă dintre trei teme diferite, una întunecată, una gri și una deschisă. Vom folosi umbre și gradienți și orice altceva ar face aplicația noastră să arate modern.
În ceea ce privește responsivitatea, vom face zona de scris a jurnalului să ocupe cât mai mult spațiu disponibil. Bara laterală ar trebui ancorată în partea dreaptă a aplicației, astfel încât, la redimensionarea ferestrei, zona de scriere ar trebui să fie cea care se redimensionează.
Pentru a afla mai mult de o singură soluție posibilă de stocare a datelor, vom folosi trei moduri de a face acest lucru: vom salva datele despre conturile de utilizator într-o bază de date, fișierele de jurnal vor fi salvate în fișiere text, în timp ce opțiunile programului fi salvate în Regiștri.
În cea mai mare parte, am terminat cu faza de planificare. Și, așa cum am spus în lecția precedentă, dedicarea câtorva ore de gândire a tuturor acestor pași ne va salva mult mai multe ore, posibil chiar zile de bâjbâit pe întuneric sau de continuă modificare a lucrurilor ce au fost deja făcute, dar care nu se mai potrivesc cu noile idei.
În următoarea lecție vom aborda următoarea fază de construire a unei aplicații: etapa de cercetare.
Tags: planificare, practici de evitat în programare, practici recomandate in programare, proiectare, scrierea primului program