Grafikus C# – Windows Forms tanfolyam › 15.7 lecke

Tanfolyamzáró · 15.7 lecke · saját projekt

Önálló záróprojekt ötletek

Eljutottál a tanfolyam végére. A tanultak igazi próbája nem egy újabb gyakorlat, hanem egy saját projekt: olyan program, amelyet te találsz ki, tervezel meg, építesz fel, tesztelsz, és kiadsz. Itt kezdődik az igazi programozás: nincs megoldókulcs, te hozod a döntéseket, és te felelsz az eredményért. Ebben az utolsó leckében segítek a választásban (ötletkatalógus három szinten), a tervezésben (követelmények, felület, rétegek, ütemterv), az értékelésben (100 pontos rubrika) és a munkamódszerben (verziókezelés, mérföldkövek, tesztelés, kiadás). A „mini projekt” ezúttal a projekttervedet kéri: egy jó terv a projekt felét megnyeri.

  • kb. 2–3 óra a tervezés, a projekt 4–6 hét
  • záró projekt
  • a tanfolyam vége
Diák C# programozást gyakorol egy tanulósarokban

A lecke végére

  • kiválasztasz egy megvalósítható projektötletet a saját szintedhez;
  • megírod a követelményeket (kötelező, kívánatos, később), és meghatározod, mi nem része a projektnek;
  • megtervezed a felületet, a rétegeket és az adatokat;
  • ütemtervet és mérföldköveket készítesz, és verziókezelővel dolgozol;
  • ismered az értékelési szempontokat, és ahhoz igazítod a munkádat;
  • megtervezed a tesztelést, a kiadást és a bemutatót;
  • tudod, merre tanulj tovább.

Mielőtt elkezded

Ehhez a leckéhez a teljes tanfolyam anyaga szükséges, leginkább a 12. fejezet (tervezés, rétegek), a 13. fejezet (hibakeresés, tesztelés) és a 14. fejezet (kiadás).

15.6 Webszolgáltatások →

Hogyan válassz projektet?

Jó projekt ismérvei

  • Érdekel: hetekig fogsz vele foglalkozni; a lelkesedés a legjobb lendület.
  • Valós igény van rá: te, egy barátod, az osztály vagy egy tanár tényleg használná.
  • Kicsiben kezdődik: az első változat 2–3 hét alatt működik, és utána bővíthető.
  • Használja a tanultakat: űrlapok, események, osztályok, fájl- vagy adatkezelés, hibakezelés.
  • Mérhető: egyértelmű, mikor kész („ha ez a hét dolog működik, kész”).
  • Kicsit kihívás: legyen benne valami új, amit még nem csináltál.

Gyakori csapdák

  • Túl nagy ötlet: „saját játékmotor”, „közösségi oldal”: nem fejezhető be.
  • Másolás: egy kész program lemásolása nem tanít: építs rá saját ötletet, vagy kicsinyítsd le.
  • Funkció-halmozás: sok félkész funkció helyett kevés, de jó.
  • Adat nélküli ötlet: ha nincs adat, amit kezel, gyakran nincs mit tervezni.
  • Külső függőség a végén: a kulcsok, hálózat, engedélyek a legkockázatosabb részek: ezeket vizsgáld meg először.
  • A felület utolsó napra hagyása: a használhatóság a program fele.
A MoSCoW-szabályMinden funkciót sorolj négy csoportba: Must (kell: nélküle nem működik), Should (kellene), Could (jó lenne), Won't (most nem). Az első változat csak a Must elemeket tartalmazza; a többi a bővítés. A Won't lista megvédi a projektet a végtelen növekedéstől.
Egy mondatos célÍrd le: „Ez a program [kinek] segít [mit] megoldani [hogyan].” Ha nem tudod egy mondatban megfogalmazni, nem elég tiszta az ötlet. Például: „A program az osztálynak segít a tanulószoba-beosztás kezelésében névsor alapján.”
A kockázatos rész előszörKeresd meg a projekt legbizonytalanabb részét (hálózati API, nyomtatás, grafika), és az első napokban készíts róla egy kis kísérletet. Ha ez nem megy, még időben váltasz.
Valós ügyfélA legjobb projekt egy valódi felhasználóról szól. Kérdezz meg valakit (tanár, osztálytárs): mire lenne szüksége? A visszajelzés a használhatóság legjobb tanára.

Ötletkatalógus három szinten

Az ötletek kiindulópontok: válassz egyet, és szabd a saját érdeklődésedre és szintedre. Az „alap funkciók” az első, használható változat; a „bővítés” a továbbfejlesztés.

ÖtletAlap funkciókBővítésFő témák
🟢 Alap szint (3–4 hét)
JegyzetfüzetTöbb jegyzet, cím és szöveg, mentés fájlba, keresés a jegyzetekben.Kategóriák, színek, exportálás, jelszóval védett jegyzet.Vezérlők, fájlkezelés, JSON, események
Tanulókártya (flashcard) programKártyapakli létrehozása (kérdés–válasz), kikérdezés, jó/rossz számlálás.Ismétlési rendszer (a rosszul tudott gyakrabban), statisztika diagramon.Osztályok, gyűjtemények, JSON, diagram
Házipénztár / költségvetésBevételek és kiadások felvétele kategóriával, egyenleg, havi összesítés.Diagram kategóriánként, CSV-export, költségkeret-figyelmeztetés.DataGridView, LINQ, CSV, grafikon
Teendőlista emlékeztetővelFeladatok határidővel, késés jelzése, kész/nem kész.Értesítés (NotifyIcon), ismétlődő feladat, tálca-ikon.Timer, NotifyIcon, DateTime, fájlkezelés
🟡 Közepes szint (4–5 hét)
Osztálynapló / jelenléti ívOsztályok, diákok, jelenlét naponta, hiányzási statisztika (adatbázissal).Jegyek, átlag, nyomtatható jelentés, import névsorból.SQLite, rétegek, bevitel-ellenőrzés, jelentés
Játék (memória, akasztófa, kígyó, 2048)Játékszabály, kirajzolás, billentyű- vagy egérvezérlés, pontszám.Ranglista fájlban, szintek, hang, mentett állás.GDI+ rajzolás, Timer, billentyűkezelés, OOP
ReceptkönyvReceptek hozzávalókkal, keresés, kedvencek, adag-átszámolás.Bevásárlólista-generálás, kép a recepthez, import/export.Adatbázis vagy JSON, LINQ, keresés, ListView
Edzés- vagy tanulásnapló grafikonnalNapi bejegyzés (időtartam, típus), heti/havi összesítés, grafikon.Célok, sorozat (streak) számlálás, jelentés exportja.Diagram, DateTime, adatkezelés, statisztika
Mini képszerkesztőKép megnyitása, szűrők (szürkeárnyalat, fényerő), mentés.Visszavonás (undo), rajzeszközök, vágás.Bitmap, GDI+, parancs-minta, teljesítmény
🔴 Haladó szint (5–6 hét)
Készletnyilvántartó (WPF, MVVM)Termékek, mennyiség, bevételezés/kiadás, alacsony készlet jelzése.Vonalkód-beolvasás, szerepkörök, CSV/PDF jelentés.WPF, MVVM, adatkötés, adatbázis
Webszolgáltatást használó kliensNyilvános adat (árfolyam, időjárás, könyvadatbázis) lekérése, megjelenítése, gyorsítótár.Értesítések, kedvencek, előzmények diagramon.HttpClient, JSON, async, hibatűrés, titkok kezelése
Kliens–szerver nyilvántartóSaját ASP.NET Core API (15.5) és Windows Forms kliens (15.6) közös adattal.Hitelesítés, több felhasználó, szinkronizálás.API, HttpClient, rétegek, biztonság, kiadás
Bővíthető (plugin) programAlapprogram + betölthető kiegészítők közös interface-szel (például több fájlformátum-importáló).Kiegészítők dinamikus betöltése, beállítófelület.Interface, tükrözés, DI, tesztelés
Saját ötletA katalógus nem korlát. Ha van saját ötleted, ellenőrizd a 6 ismérvet (érdekel, valós igény, kicsiben kezdődik, tanultakat használ, mérhető, kicsit kihívás), és vesd össze valamelyik kategóriával, hogy reálisan beleférjen az időbe.
Szint-választásA saját szintedhez kicsit nehezebb ötletet válassz, mint amit biztosra tudsz. Ha bizonytalan vagy, a Must funkciókat tartsd az alap szint körül, a haladó elemeket tedd Could csoportba: így a projekt biztosan kész lesz, és ha marad idő, bővül.
Páros és csoportos munkaPáros projektnél a rétegek természetes munkamegosztást adnak (egyik a modell és az adatkezelés, másik a felület), a közös szerződés az interface (12.8 lecke). Mindenkinek legyen jól elkülönülő, értékelhető saját része, és használjatok közös verziókezelést.
Tanárként is használhatóTanárjelöltként tekints a katalógusra mint differenciálási eszközre is: ugyanaz a téma (például nyilvántartó) több szinten adható a tanulóknak; az időkeretet (hetek száma) a csoport és az órakeret szerint állítsd be.

Tervezési útmutató: a követelménytől az ütemtervig

A tervezés hat lépése

  1. Cél és felhasználó: egy mondatos cél; kinek készül; mi a probléma.
  2. Követelmények (MoSCoW): Must, Should, Could, Won't lista; legfeljebb 7–10 Must.
  3. Felületterv: a főablak és a fontos ablakok vázlata (papíron vagy a Designerben); navigáció; üzenetek.
  4. Adatok: milyen adatot kezelsz, hol tárolod (fájl, adatbázis: 14.7 lecke), milyen formában.
  5. Szerkezet: osztálytérkép (modell, szolgáltatás, tároló, felület: 12. fejezet), a rétegek közti interface-ek.
  6. Ütemterv és tesztterv: heti mérföldkövek; mit teszteltek; mikor és hogyan adod ki.

Egy jó követelmény

  • Egyértelmű: „A felhasználó új kártyát vehet fel kérdéssel és válasszal”, nem „kényelmes legyen”.
  • Ellenőrizhető: el lehet dönteni, hogy teljesül-e (tesztelhető).
  • Egyetlen dolgot ír le (nem „felvesz és töröl és keres”).
  • Felhasználói szemszögű: mit tehet a felhasználó, nem hogyan csinálod.
  • Számmal és példával pontosítva: „legfeljebb 40 karakter”, „1–5 jegy”.
Egy tervlap szerkezete (példa: Tanulókártya program)terv
CÉL:       A program a nyelvtanulóknak segít szókártyákat kezelni és gyakorolni.
KINEK: Saját magam és az osztálytársaim.

KÖVETELMÉNYEK
MUST: M1 pakli létrehozása névvel
M2 kártya felvétele (kérdés, válasz; legfeljebb 100 karakter)
M3 kikérdezés: a kérdés látszik, kattintásra a válasz, majd Tudtam / Nem tudtam
M4 a pakli mentése fájlba, újraindításkor betöltés
M5 hibás bevitel esetén érthető üzenet
SHOULD: S1 statisztika (hány kártyát tudtam), S2 keverés
COULD: C1 diagram a haladásról, C2 export CSV-be
WON'T: W1 online szinkron, W2 hang

FELÜLET: főablak (paklilista, gombok), szerkesztő ablak, kikérdező ablak (vázlat mellékelve)
ADATOK: JSON fájl a %AppData%\Tanulokartya mappában (14.7 lecke)
SZERKEZET: Models (Kartya, Pakli) · Services (PakliTarolo: Mentes/Betoltes, Kikerdezo) · App (Form-ok)
ÜTEMTERV: 1. hét terv + váz · 2. hét modell és tároló · 3. hét felület · 4. hét hibakezelés, teszt · 5. hét kiadás, dokumentáció
TESZT: tesztterv 20 esettel (13.8 lecke): üres pakli, hosszú kérdés, sérült fájl, ...
KIADÁS: ZIP + telepítő, README, Névjegy, verzió 1.0.0 (14. fejezet)
A felülettervRajzold le a főablakot és a kulcs-ablakokat (papíron elég). Írd fel rájuk a vezérlőket, a navigációt (melyik gomb hová visz), az üzeneteket és az állapotokat (üres lista, hiba, betöltés). A tervezés sokkal olcsóbb a rajzon, mint a kész kódban.
A szerkezetElőször a modell és a szolgáltatás (felületfüggetlen, tesztelhető), utána a felület: így a logika akkor is jó, ha a felület változik (12. fejezet, 15.3–15.4 lecke). Az osztálytérképen az interface-ek mutatják a rétegek közti szerződést.
Az ütemtervHeti mérföldkövek, mindegyiknek kézzelfogható eredménnyel: „2. hét végére a modell és a tároló egységtesztekkel fut”. Számolj tartalék idővel (a legtöbb feladat tovább tart, mint hinnéd) és a kiadás előkészítésével (14. fejezet: legalább egy hét).
A teszttervA követelményekből következik: minden Must-hoz legyen legalább egy teszteset, és a hibás esetekhez (üres, hosszú, sérült, szélsőérték: 13.5 lecke). A tesztterv a követelménytábla ellenpárja.

Jósolj!

A projekt tervezésekor 25 „Must” követelményt írsz fel, mert „mind fontos”. Mi lesz a 3. hét végén?

Jóslat ellenőrzése

Sok félkész funkció, egyik sem teljesen jó, és nincs idő a hibakezelésre és a kiadásra. A Must lista a legkisebb használható program: legfeljebb 7–10 elem. Ami nem létfontosságú, Should vagy Could: az maradjon a végére, ha van idő.

Értékelési rubrika (100 pont)

SzempontPontMit nézünk?
Terv és követelmények10Egyértelmű cél, MoSCoW lista, felületterv, osztálytérkép, ütemterv, tesztterv; a terv és a kész program összhangja.
Funkcionalitás20A Must funkciók hiba nélkül működnek; a Should/Could bővítések minősége.
Felület és használhatóság10Átlátható, következetes felület; billentyűzetes használat; érthető üzenetek; méretezhetőség; akadálymentesség (6. fejezet).
Kódminőség és szerkezet15Felelősségek szétválasztása (12. fejezet), jó nevek, rövid metódusok, nincs ismétlődő kód, megfelelő hozzáférési szintek.
Hibakezelés és bevitel-ellenőrzés10Érvénytelen, üres, szélsőérték bevitel; fájl- és hálózati hibák; globális hibakezelő (13. fejezet).
Adatkezelés10Megfelelő tárolás és hely (14.7 lecke), biztonságos mentés, séma-kezelés, nincs adatvesztés.
Tesztelés és hibakeresés10Tesztterv és eredmények, hibajegyek, naplózás, regressziós futtatás, a talált hibák javítása (13. fejezet).
Kiadás és dokumentáció10Működő csomag vagy telepítő, README, Névjegy és verzió, licenc, tiszta gépes próba (14. fejezet).
Bemutató és reflexió5Világos bemutató, élő demó vagy videó, őszinte értékelés: mi sikerült, mi nem, mit tanultál.
Miért ez a megoszlás?A pontszám a tanfolyam tanításait tükrözi: a működő program a legtöbb, de a szerkezet, a hibakezelés, a tesztelés és a kiadás együtt a pontok nagyobb részét adja. Egy „működő, de törékeny” program nem kap maximumot.
ÖnértékelésA beadás előtt pontozd magad a rubrika szerint, és indokold: ez rávilágít a hiányokra, amíg még javíthatod. A tanár értékelése és a tiéd közti eltérés is tanulságos.
Átlátható szabályA rubrikát a projekt elején ismerd meg: ahhoz igazodik a munka. Az értékelő is csak azt kérheti számon, ami a rubrikában és a követelményekben szerepel.
ŐszinteségA reflexióban a hibák és a hiányok bevallása többet ér, mint a leplezésük: aki tudja, mit rontott el, és mit csinálna másképp, az tanult a legtöbbet.

Munkamódszer: verziókezelés, mérföldkövek, bemutató

Verziókezelés Gittel (a projekt mappájában)parancsok
git init                                   (a mappa verziókezelt tárolóvá válik)
dotnet new gitignore (.gitignore: a bin, obj és a generált fájlok kimaradnak)
git add .
git commit -m "Kezdő váz: solution, Core és App projekt"

git status (mi változott?)
git diff (mi a pontos változás?)
git log --oneline (a történet röviden)
git switch -c kartya-szerkeszto (új ág egy új funkcióhoz)
git switch main (vissza a fő ágra)
git merge kartya-szerkeszto (az ág beolvasztása)

Mit ad a verziókezelés?

  • Biztonsági háló: bármikor visszatérhetsz egy működő állapothoz.
  • Történet: látod, mikor és miért változott a kód; a hibák okát is könnyebben megtalálod.
  • Bátor kísérletezés: új ágon próbálsz, és ha nem jó, eldobod.
  • Együttműködés: páros munkánál a változások egyesíthetők.
  • Kiadás-címke: a kiadott verzió pontos forrása megmarad (14.9 lecke).

Jó commit-szokások

  • Kis, önmagában működő lépések (nem a hét végén egyetlen óriási commit).
  • Érthető üzenet: mit és miért („Üres név ellenőrzése a pakli-szerkesztőben”).
  • Nem commitolsz titkot (kulcs, jelszó), generált fájlt (bin, obj) és személyes adatot.
  • Minden mérföldkőnél címke vagy külön commit: „2. hét: modell és tároló kész”.
  • Rendszeresen (naponta) mentsd távoli tárolóba is (felhőalapú Git-szolgáltatás): a gép meghibásodása ellen.
Heti ritmusHétfő: a heti cél kijelölése. Napi: kis lépés, teszt, commit. Hét vége: a mérföldkő ellenőrzése, a terv frissítése, rövid napló („mi ment jól, mi nem, mi a következő”). A kis, rendszeres lépések legyőzik a végső hajtást.
MunkanaplóVezess rövid fejlesztői naplót (dátum, mit csináltál, milyen problémába ütköztél, hogyan oldottad meg). A reflexióhoz és a dokumentációhoz arany, és megmutatja, hol tartasz.
Kész, ha...Egy funkció akkor „kész”, ha működik, hibás bemenetre is jól viselkedik, tesztelve van, és a kód rendezett. Egy „majdnem kész” funkció a legrosszabb: a hibák a végén torlódnak fel.
Bemutató5–8 perc: 1) a probléma és a felhasználó; 2) élő demó a fő útvonalon; 3) egy érdekes technikai megoldás (rétegek, hibakezelés); 4) a legnagyobb nehézség és megoldása; 5) a tanulságok és a következő lépések. A demóhoz készíts tartalék képernyőfelvételt: az élő demó elromolhat.

Jósolj!

A projekt utolsó napján egy nagy változtatás tönkreteszi a programot, és nincs verziókezelés, sem mentés. Mi lesz a bemutatóval?

Jóslat ellenőrzése

A bemutatóra egy törött program vagy az előző napok elvesztett munkája marad. Verziókezelővel egy paranccsal visszatérsz az utolsó működő állapothoz. Ezért: kis lépések, gyakori commit, és kiadás előtt „fagyasztott” (címkézett) működő változat.

Hibakeresés: te vagy a hibadetektív (a projekt hibái)

Mi a baj, és hogyan javítod?

Gondold végig az okot, és csak utána nyisd le a megoldást.

1. „Majdnem kész” funkciók a határidő előtt

A 4. héten nyolc félkész funkciód van.

Ok és javítás

Túl sok Must, és párhuzamos kezdés. Vágd vissza a Must listát; egyszerre egy funkciót vigyél végig (működik, ellenőrzött, tesztelt, commitolt); a többit tedd a Could listára.

2. A kész program nem fut másik gépen

A bemutató gépén hibát ad.

Ok és javítás

A kiadást nem próbáltad tiszta környezetben (14. fejezet): hiányzó futtatókörnyezet, fix elérési út, hiányzó fájl. A tiszta gépes próba legyen a 4–5. hét feladata, nem az utolsó napé.

3. A kód egyetlen óriási Form

Háromezer soros Form1.cs, amelyet senki nem ért.

Ok és javítás

Nincs rétegezés (12. fejezet). Vedd ki a logikát modell- és szolgáltatás-osztályokba; a Form csak a felületet kezelje. Ez a tesztelhetőség feltétele is.

4. Az utolsó napon derül ki a hiba

A bemutató előtt találsz egy súlyos hibát.

Ok és javítás

Hiányzik a folyamatos tesztelés. A hibákat a megírásuk után azonnal teszteld (13. fejezet), és a Must funkciókhoz írj tesztet, amelyet minden változtatás után lefuttatsz (regresszió).

5. Nincs miről beszélni a reflexióban

Nem emlékszel, mi történt a hetekben.

Ok és javítás

Nincs munkanapló és commit-történet. Vezess rövid heti naplót, és a commit üzenetekben írd le a döntéseket.

6. A program kész, de senki nem érti, hogyan kell használni

A felhasználó nem találja a fontos funkciót.

Ok és javítás

A felületet nem próbálta ki valódi felhasználó. Már a 3. héten adj a programot valakinek, figyeld meg (hallgass, ne magyarázz), és javítsd a zavaró részeket; írj rövid használati útmutatót.

Mini projekt: a saját projekttervem

Ebben a leckében nem programot, hanem tervet készítesz: egy 2–3 oldalas projekttervet, amellyel megkezdheted a záróprojektedet. A kész terv a követelménytábla első sorához is tartozik.

  1. Ötlet-válogatás: írj fel 3 lehetséges ötletet (a katalógusból vagy saját), és mindegyiket pontozd 1–5 között a 6 ismérv szerint (érdekel, valós igény, kicsiben kezdődik, tanultakat használ, mérhető, kicsit kihívás); válaszd a legtöbb pontot.
  2. Egy mondatos cél és a felhasználó (név szerint: kinek készül, és megkérdezted-e).
  3. Követelmények: MoSCoW lista (Must legfeljebb 7–10, Should, Could, Won't); minden követelmény egyértelmű és ellenőrizhető.
  4. Felületterv: a főablak és legalább egy másik ablak vázlata (papír vagy Designer), a navigációval.
  5. Adatok és szerkezet: milyen adatot kezel; hol tárolod; osztálytérkép (legalább 4 osztály, a rétegekkel és az interface-ekkel).
  6. Kockázatok: legalább 3 kockázat (például ismeretlen API, nyomtatás, időhiány) és az első kísérlet, amely csökkenti őket.
  7. Ütemterv: 5–6 heti mérföldkő, tartalékidővel és kiadási héttel.
  8. Tesztterv-vázlat: minden Must-hoz legalább egy teszteset, és legalább 5 hibás/szélsőséges eset.
  9. Kiadási terv: milyen csomag (ZIP, telepítő), milyen futtatókörnyezet, hol vannak az adatok, milyen README.
  10. Önértékelés és visszajelzés: pontozd a tervedet a rubrika „Terv és követelmények” sora szerint, és mutasd meg a tervet egy leendő felhasználónak vagy a tanárnak; a visszajelzés alapján módosítsd.
Mintamegoldás: egy kitöltött tervlap (Osztálynapló) és kockázati tábla
PROJEKTTERV.md (minta: Osztálynapló)Markdown
# Osztálynapló – projektterv

## Cél és felhasználó
A program az osztályfőnöknek segít a jelenlét és a hiányzások nyilvántartásában.
Felhasználó: az osztályfőnököm (megkérdezve, a 3. héten kipróbálja).

## Követelmények
MUST: M1 osztály és diákok felvétele · M2 jelenlét rögzítése naponta (jelen/hiányzik/igazolt)
M3 diák hiányzásainak összesítése · M4 adatok mentése SQLite adatbázisba
M5 hibás bevitel és hibás adatbázis érthető üzenettel · M6 adatok törlése megerősítéssel
SHOULD: S1 havi jelentés megjelenítése · S2 keresés névre
COULD: C1 export CSV-be · C2 nyomtatható jelentés
WON'T: W1 több felhasználó · W2 hálózati szinkron

## Szerkezet
Models (Diak, Osztaly, Jelenlet) · Services (NaploSzolgaltatas, IAdatTarolo) · Data (SqliteAdatTarolo) · App (FoForm, JelenletForm)
Az IAdatTarolo mögött a tároló cserélhető (teszthez memóriás megvalósítás).

## Kockázatok
| Kockázat | Hatás | Csökkentés |
|---|---|---|
| SQLite használata új számomra | késés | az 1. héten kis kísérlet: tábla, mentés, olvasás |
| Valós diákadat kezelése | adatvédelem | csak kitalált adat a fejlesztéshez; az adat a felhasználó gépén marad |
| Időhiány a jelentésnél | a Should kimarad | a Must elkészül előbb; a jelentés a 4. héten |

## Ütemterv
1. hét: terv, váz, SQLite-kísérlet · 2. hét: modell, tároló, egységtesztek · 3. hét: felület (M1–M3), első kipróbáltatás
4. hét: M4–M6, hibakezelés, napló, jelentés · 5. hét: tesztek, javítások, dokumentáció · 6. hét: kiadás, tiszta gépes próba, bemutató

## Tesztterv (vázlat)
T1 üres osztálynév · T2 azonos nevű diák · T3 jelenlét rögzítése és újraindítás · T4 sérült adatbázisfájl · T5 csak olvasható adatmappa · T6 1000 diák betöltése

## Kiadás
Önálló ZIP és telepítő (14.5–14.6 lecke); README (követelmény, telepítés, adatok helye, eltávolítás); Névjegy; verzió 1.0.0.

Értékelési szempontok a tervhez: a cél egy mondatban megfogalmazható; a Must lista rövid (6 elem) és ellenőrizhető; a szerkezet felületfüggetlen modell és tároló interface-szel; a kockázatok konkrétak és van első lépés; az ütemterv tartalmaz tartalék és kiadási hetet; a tesztterv a követelményekből és a hibás esetekből következik. Ez csak egy lehetséges terv: a sajátod más szerkezetű is lehet.

📷 Képernyőkép helye

Mit tegyél ide: a felületterv fényképe vagy a Designer-vázlat a főablakról, és a PROJEKTTERV.md első oldala.Javasolt fájlnév: winforms-15-7-terv.webp · Alt szöveg: A projektterv és a felületvázlat

Három önálló gyakorlófeladat

Egyszerre csak egyet csinálj: tervezd meg, írd meg, futtasd, ellenőrizd, és csak utána nyisd ki a megoldást.

1. Követelmények élesítése

Írd át a homályos követelményeket ellenőrizhetővé: (a) „a program legyen gyors”; (b) „a felület legyen szép”; (c) „kezelje a hibákat”.

Egy lehetséges megoldás

(a) „A 1000 elemű lista betöltése 2 másodpercnél rövidebb ideig tart.” (b) „Minden ablak ugyanazt a színkészletet és betűméretet használja; a vezérlők igazítottak; 125%-os nagyításon sem takarják egymást.” (c) „Üres, túl hosszú vagy hibás bevitelre a program érthető üzenetet ad, és nem omlik össze; sérült adatfájl esetén biztonságos alapállapotból indul.”

2. MoSCoW-besorolás

Egy játékprogramhoz: pontszám, hang, mentett állás, ranglista, szintek, többjátékos mód. Osszd el a négy csoportba.

Egy lehetséges megoldás

Must: a játék szabálya, pontszám. Should: mentett állás, ranglista fájlban. Could: szintek, hang. Won't: többjátékos mód (hálózat, nagy kockázat). A beosztás indoka: a legkisebb játszható és befejezhető változat a Must.

3. Kockázat és kísérlet

A projekted egy nyilvános időjárás-API-t használna. Milyen kockázat van, és mi az első kísérlet?

Egy lehetséges megoldás

Kockázat: kulcs és kvóta, hálózati hiba, az API megváltozása, adatformátum. Első kísérlet (az 1. héten): egy konzolos vagy egyablakos kis program, amely egyetlen kérést küld, kiírja a választ, és kezeli a hibát (15.6 lecke); a kulcs beállításból, nem a kódból.

Gyakorlótár: 6 további feladat

Három szinten gyakorolhatsz: alap, közepes és kihívás. Csak a próbálkozás után nyisd le a megoldást.

Alap szint

1. Mi a MoSCoW?

Mit jelent a négy betű?

Megoldás megnyitása

Must (kell), Should (kellene), Could (jó lenne), Won't (most nem): a követelmények fontossági sorrendje.

2. Hány Must?

Hány Must követelményt érdemes felvenni?

Megoldás megnyitása

Legfeljebb 7–10 elemet: a legkisebb használható program követelményeit.

Közepes szint

3. Mérföldkő

Mi egy jó heti mérföldkő?

Megoldás megnyitása

Kézzelfogható, ellenőrizhető eredmény („a modell és a tároló egységtesztekkel fut”), nem általános „dolgozom a programon”.

4. Commit-üzenet

Melyik jobb: „javítás” vagy „Üres név ellenőrzése a pakli-szerkesztőben”?

Megoldás megnyitása

A második: megmondja, mit és hol változott; a történet így hasznos a hibakeresésben és a reflexióban.

Kihívás szint

5. A kockázatos rész

Miért érdemes a kockázatos részt az elején kipróbálni?

Megoldás megnyitása

Ha nem megy, még van idő váltani vagy egyszerűsíteni; a végére hagyva megbuktathatja a projektet.

6. Önértékelés

Miért pontozod magad a beadás előtt?

Megoldás megnyitása

A hiányokat még időben észreveszed és javítod; az eltérés a tanári értékeléstől is tanulságos.

Gyors önellenőrzés

Válaszolj fejben, és csak utána nyisd le a választ.

1. Mi egy jó projekt ismérve?

Érdekel, valós igény van rá, kicsiben kezdődik, használja a tanultakat, mérhető, és kicsit kihívás.

2. Mi a követelmény ellenőrizhetősége?

El lehet dönteni, hogy teljesül-e: konkrét, számokkal és példával pontosított.

3. Mit tartalmaz a tervlap?

Cél, felhasználó, követelmények, felületterv, adatok és szerkezet, kockázatok, ütemterv, tesztterv, kiadási terv.

4. Miért kell verziókezelés?

Biztonsági háló, történet, kísérletezés ágon, együttműködés, a kiadás forrásának megőrzése.

5. Mit nézünk a rubrikában?

Terv, funkcionalitás, felület, kódminőség, hibakezelés, adatkezelés, tesztelés, kiadás, bemutató.

6. Mi a tiszta gépes próba?

A kiadott csomag kipróbálása fejlesztői környezet nélküli gépen (14. fejezet).

7. Mit teszel, ha túl nagy az ötlet?

Lekicsinyíted: a Must listát a legkisebb használható programra vágod, a többi Should, Could vagy Won't.

Merre tovább?

Mélyíts

  • C# és .NET: a nyelv újabb elemei, a LINQ és az async mélyebben, a tesztelés (xUnit/MSTest), a tervezési minták.
  • Adatbázisok: SQL alapok, Entity Framework.
  • Felületek: WPF és MVVM (15.2–15.3 lecke), majd egy többplatformos technológia (15.4 lecke).
  • Web: ASP.NET Core és Blazor (15.5 lecke), HTML/CSS/JavaScript alapok.

Hogyan tanulj tovább?

  • Építs: a legtöbbet a saját projektekből tanulod; mindig legyen egy aktuális kis projekted.
  • Olvass kódot: nyílt forráskódú projektek, mások megoldásai; kérj és adj kódáttekintést.
  • Használd a hivatalos forrásokat: a Microsoft Learn és a .NET dokumentáció a legfrissebb; a kérdéseidhez közösségi fórumok.
  • Tanítsd: magyarázd el valakinek, amit tanultál: ez ellenőrzi és mélyíti a tudásod. Tanárjelöltként ez a legjobb tanulási módszer.
  • Légy kitartó: a hibák és a megakadások a tanulás részei; a hibakeresés (13. fejezet) tudása éppen erre szolgál.

A tanfolyam végén: mit tudsz már?

  • Windows Forms alkalmazásokat építesz: űrlapok, vezérlők, események, grafika, fájl- és adatkezelés, gyűjtemények, párhuzamos munka (async).
  • Programot tervezel rétegekkel: osztályok, modell, szolgáltatás, felület különválasztása (12. fejezet).
  • Hibát keresel és javítasz (debugger, kivételek, naplózás, tesztelés: 13. fejezet).
  • Kiadsz egy programot: Release, telepítő, adatok helye, verzió, frissítés (14. fejezet).
  • Ismered a továbblépési utakat: WPF, MVVM, MAUI, web, webes szolgáltatások (15. fejezet).
  • Képes vagy egy saját projektet megtervezni, felépíteni és bemutatni.

Gratulálunk: a tanfolyam végére értél!

Térj vissza a tanmenethez, ismételd át azokat a részeket, ahol bizonytalan vagy, és kezdd el a saját projektedet.