Nejčastější a nejvážnější chyby v odevzdání hlavičkového souboru
V svn se musí psát komentáře ke komitům co se změnilo - programátorská kultura. Komity by měly být rozloženy v celém období a projekt by měl rovnoměrně přibývat. Průběh vytváření projektů v svn by měl být "plynulý" - když se v svn „objeví“ prázdný projekt a za tří minuty se „zjeví“ kompletně napsaný, je to proti logice svn (i zdravého rozumu). U zdrojových textů postupujte „plynule“.
individuálně je hodnocena práce se SVN. Předpokládán byl minimálně jeden komit týdně (ale z principu tohoto nástroje (viz. přednášky a cvičení) vyplývá, že komit by měl být učiněn po vytvoření každého celku (metoda, funkce, důležitá změna ...). Zápisy do SVN by měly být popsány (doprovodný komentář popisující změnu).
Základem je přečíst si zadání a splnit jeho body - CItemy se měly ladit v projektu CItem, kde k tomu byl přichystán testovací main. Tento testovací projekt byl zároveň předpřipraven tak, abyste se mohli inspirovat a naučit jak to má vypadat. Proto se předpokládalo, že si nejdříve prohlédnete co je hotové, pochopíte to a potom budete vytvářet svoje třídy (nejlépe, že je napíšete. Zkopírováním se moc nenaučíte). K pochopení tohoto (z hlediska C++ jednoduchého, ale z hlediska začátečníka složitého) projektu je ovšem vyřešení a pochopení třídy Pole2D ze cvičení nutným základem, kterým je potřeba začít.
CItemy měly být vytvářeny a testovány v projektu/adresáři CItem. Do projektu kontejner se následně mají zkopírovat - pokud kopii provedeme pomocí svn, tak nám u souboru zůstane i „historie“.
Při vytváření svých CItem bylo potřeba změnit několik proměnných a tělíček. To že return je schopen „true“ či „false“ zkonvertovat je sice hezké, ale pokud třída komplexních čísel po dotazu na hodnotu vrátí „false“ tak to asi není dobře. Nechat inicializaci false a true pro složité typy není zrovna nejlepší řešení. Míst, kde je tohle potřeba opravit je v projektu hodně (hlavičky, konstruktory, tělíčka ...)
V projektu určeném pro kontejner bylo nutné v main zavolat všechny metody - teprve „použitím“ inline metod dojde k jejich „překladu“ a tedy jejich úplné kontrole.
Reference se používá v parametru vždy, v návratové hodnotě pokud to jde. Pokud se v těle metody/funkce nemění, doplní se o modifikátor const. Promyslet předávání parametrů pomocí hodnoty (minimálně, když nejde jinak), referencí (preferovat), ukazatelem (je-li to výhodné) a to jak do tak z metod (funkcí)
Statické proměnné musí vzniknout fyzicky (tj. musí být definovány v cpp).
Předpokládá se odevzdání funkčního (přeložitelného) projektu,
který sestává ze souborů:
1) pro typ CIem pro bool a TWeekDay
(beze změny) a pro vlastní typy - oba původní jsou součástí
projektu, pouze jeden je v demonstračním souboru „zapnutý“
pomocí namespace. U vlastního typu je třeba změnit pouze typy
parametrů, zbytek by se neměl měnit ani doplňovat (porušení
kompatibility s CItem_bool, které musí také fungovat - být
přeložitelné).
2) soubory pro vlastní třídu obsahující lineární
seznam prvků CItem budou v samostatném projektu.
3) demonstrační
soubor s použitím všech implementovaných metod a funkcí
(vlastností)
4) pomocí souborů knihovny check je kontrolována
paměť (viz prvotní zadání)
všechny soubory by měly mít komentářový úvod se stručnou charakteristikou a jmény autorů
hlavičku knihovny check je nutnté naincludovat do všech cpp (i h) a to VŽDY jako poslední include
pro tisk statických proměnných jsou potřeba statické metody
pro přepínání namespace-ů je určen hlavičkový soubor CItem.h, includovaný tam kde je třeba, tak aby změna z bool na vlastní typ (a naopak) byla možná na jednom místě. Soubory s CItem-y se includují sem a ne do všech ostatních souborů.
překontrolovat proti původnímu zadání zda něco nechybí (například kopykonstruktor, rozdělení metod do privátních/veřejných ...) aby za to nebyly strženy body i ve finální zdrojové verzi
„datovým“ prvkem, který v kontejneru ukazuje na seznam by měl být typ „ukazatel na CItem“.
pro typy kontejnerů jsou charakteristické některé metody (názvy), které by neměly chybět
Je-li předepsán kód pro metodu bbb=aaa.Reverzuj() a bbb=Reverzuj(aaa) potom musí vracet nějakou hodnotu
v rámci tohoto kola jsme nevěnovali pozornost (pokud jsme si náhodou nevšimli) obsahům tělíček, proto je neberte jako odsouhlasená v případě, že již byly přítomny v této fázi
Poslední úpravy 2011-11-29