Co bylo na mých přednáškách z NMIN201 OOP ========================================= 08.01.2019: * DateTime - TimeSpan - měření času * String vs StringBuilder * delegáty * anonymní funkce * vlákna: - VytvorNaplnASetridPole() - může být jinak rychlé v Debug a Build režimu - race-condition - Lock - k cemu vlakna - GUI vs. výpočet (aby dlouhý výpočet neblokoval reakce GUI, spustí se v novém vlákně) * hygiena programování: - oddělovat činnosti - vest si deník - ToDo-list, issue-tracker - správa versí - automatické testy 18.12.2018: * Programování pomocí testů - Příklad: funkce na určení podílu dvou čísel zadaných ve stringu - Testování – vstup ručně, kontrola očima = pracné, pomalé, nespolehlivé - Nahradit zadávání vstupu kódem - Nahradit kontrolu výsledků kódem - Funkce na otestování jednoho volání - Očekávaný výsledek - Funkce na otestování jednoho volání - Funkce na otestování funkce - Porovnání jednoho výsledku - Rozhodnutí,jak zacházet s chybami – výjimky nebo chybové kódy - Změna hlavičky funkce - Vracet chybový kód i výsledek – výsledek vs. var/out-parametry - Přidávání testů (protože je to snadné) - Počítání chyb - unit-testy ve Visual Studiu //- unit-testy, regresní testy, výkonové testy * Generické metody, generické třídy, List<> * Diskrétní simulace: - co mají společné a čím se liší různé programy/modely - procesy, události, reakce na ně - stavový diagram - návrh modelu obchodního domu 11.12.2018: Diskrétní simulace: * úloha s hromadou písku * Řešení: - Přímý výpočet - Složitější - Odkrokovat * Model - Zjednodušený, jen některé atributy - Co modelovat a co zanedbat - Co modelovat jak * Simulace spojitá vs. diskrétní * Auto - Atributy podstatné pro výpočet * Písek v A, Písek v B * Čas * Fronta v A Program: * enum TypUdalosti * událost * Kalendář * Auto * Model: PísekVA, PísekVB, Čas... * diskrétní simulace - k čemu je a k čemu není simulace - sledovat chování modelu při různých parametrech - možnost vyzkoušet, jestli je lepší a) pridat auto b) vymenit auto za rychlejsi c) pridat člověka s lopatou - příklad výpočtu pro různé počty aut a nakladačů = nemusíme přepisovat kód, ale vytvoříme odvozenou třídu a přepíšeme jenom některé funkce (pokud jsou virtuální)! 04.12.2018: * Grafika v C# (WinForms) - Graphics - Získání this.CreateGraphics() Graphics.From… - Pen - Pens (properties) Př: čára Př: sinusoida - Př.: (int)(100 Math.Sin(fi/180*Math.PI)); - Color - Připravené (properties) - new Pen - ...Caps Př: měněná tloušťka - Problém: mizející obrázek - PictureBox a Bitmap - PictureBox - Bitmap Refresh() Př: ještě sinusoida: - DrawRectangle - FillRectangle - Štětec - Brushes (properties) - new SolidBrush (pozor, Brush je ABSTRAKTNÍ typ!) - Color – tabulka barev - Color – FromARGB, RGB = vypočítaná barva - GetPixel, setPixel - PictureBox1.Refresh - = kopie - barevná složka - světlost – převod na šedou - práh - Distribuce chyby - Zmena souradnic - Zvetseni - deformace - Clone(...) - vyrez z Bitmapy 27.11.2018: Programování řízené událostmi: - princip - dosud „program provádí algoritmus“ - událost - zpracování - hierarchie - polymorfismus - MSVS - Designer, ToolBox, Property editor - Oddělení properties a funkčního kódu - Syntaxe: partial class - Příklady - Prázdná aplikace - Tlačítko, nadpis - MessageBox - Nastavování vlastností - Unikající tlačítko - Sdílení obslužných metod - Sender - Přetypování - Příklady - Kalkulačka - WebBrowser 20.11.2018: jazyk – C#, MS Visual Studio objekty a OOP: - způsob uvažování o částech programu - CO x JAK - Uvažování v problémové doméně - spojení dat a funkcí - zapouzdření = ukrývání vnitřku, díky tomu konsistentní stav - typ x instance: třída x objekt (formička x bábovička) - i formička může mít své vlastnosti = statické členy (funkce i data) - příklad: komplexní čísla C# a Microsoft Visual Studio - 1995 Java, bytecode - 2002 C#, .NET - Anders Hejlsberg - PolyPascal -> Turbo Pascal - 1989 Borland - Borland Delphi chief architect - 1996 Microsoft - 2000- C# lead architekt - program = sbírka tříd - metoda Main() - žádné “globální” metody ani proměnné, všechno patří nějaké třídě - trochu syntaxe jazyka C# Objekty: Pes deklarace, členské proměnné, inicializace konstruktor, this - vice konstruktorů - výchozí konstruktor bez parametrů dědičnost - co to je, co se dědí - : base v konstruktoru - base jinde virtuální metody - proč - ne-virtuální x virtuální, určování, jakou metodu volat - tabulka virtuálních metod, ukazatel na ni (dosazuje konstruktor!) - virtual-override abstraktní třída abstraktní metoda - polymorfismus