Programování není pouze o schopnosti napsat fungující program. S kvalitou programu je (vedle návrhu a celé řady
funkčních charakteristik) spojena celá řada charakteristik, které s funkcí programu přímo nesouvisí. Náplní předmětu je
seznámit studenty s praktickými postupy a pravidly, jejichž důsledné dodržování a aplikace vedou ke kvalitnějším
programům. Cílem předmětu je motivovat studenty k osvojení a používání probíraných postupů v praxi.
Předpokládají se znalosti programování v rozsahu bakalářského kursu NPRG031 Programování II.
Poslední úprava: T_KSI (04.05.2007)
Programming is not just about writing a working program. The quality of a program is (besides design and other functional
characteristics) associated with a number of characteristics unrelated to the function of a program. The subject introduces
students into programming practices adhering to which leads to construction of high-quality programs. The goal of the
subject is to motivate students for adopting such techniques for use in their own programming practice.
Podmínky zakončení předmětu -
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)
Zápočet je podmíněn účastí na cvičeních a vypracováním úkolů ve stanovených termínech.
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)
To receive credit, the student has to attend the labs and submit assignments within given deadlines.
Literatura
Poslední úprava: T_KSI (04.05.2007)
1. McConnell, S.: Code Complete. Microsoft Press, 2nd edition, ISBN 978-0735619678, June 2004.
2. On-line zdroje ve formě článků a esejí k probíranému tématu.
Požadavky ke zkoušce -
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)
Předmět nemá zkoušku v klasické podobě. Výsledná známka z předmětu je odvozena z bodového hodnocení úkolů.
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (06.10.2017)
The final grade is determined by the sum of points from the assignments.
Sylabus -
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (16.01.2024)
Proces vývoje a tvorby software, inherentní a zavlečená složitost.
Návrh rozhraní (API), obecné principy, návrh veřejných tříd a metod rozhraní.
Návrh tříd, abstrakce a zapouzdření, dědičnost vs. kompozice, polymorfizmus, immutability.
Základní principy objektového návrhu (Single responsibility principle, Open-closed principle, Liskov substitution principle, Interface segregation principle, Dependency inversion principle).
Jednotkové testování, testovatelný design.
Principy objektového návrhu v návrhových vzorech (strategy, observer, decorator, factory).
Návrh metod, metody jako abstrakce, název a účel metody, délka a soudržnost kódu, práce s parametry a vracení hodnot, používání výjimek.
Defenzivní programování, kontrola vstupů a použití assertů, obsluha chyb.
Obecná pravidla pro práci s proměnnými a konstantami, názvové konvence, základní datové typy.
Obecná pravidla pro práci s řídícími strukturami a primitivy, organizace kódu, refaktoring.
Poslední úprava: doc. Ing. Lubomír Bulej, Ph.D. (16.01.2024)
Software construction and development, essential and accidental complexity.
Interface (API) design, guiding principles, designing API classes and methods.
Class design guidelines, abstraction and encapsulation, inheritance and composition, polymorphism, immutability.