Co bylo na mých přednáškách z NMIN201 OOP ========================================= 11.01.2018: * 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 04.01.2018: * Diskrétní simulace: - co mají společné a čím se liší různé programy/modely - návrh modelu obchodního domu - procesy, události, reakce na ně - stavový diagram * Generické metody, generické třídy, List<> 21.12.2017: * výjimky - přístup k chybám: testování PŘEDEMpředem vs. řešení POTOM - try-catch, catch(typVyjimky1 identifikator), .Message, .StackTrace - hierarchie typů výjimek, Exception - throw - finally - vnořování chráněných bloků - výjimky vs. chybové kódy, neviditelné GOTO * 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 14.12.2017: 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 - I rovnice je model - 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čů 30.11.2017: * 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.Image - 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 - Změna souřadnic - Zvětšení - deformace - barevná složka - světlost – převod na šedou - práh - Distribuce chyby - psaní textu - Font 23.11.2017: 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í //- …is… - Příklady - Kalkulačka 16.11.2017: 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 - příklad: komplexní čísla - příklad s tiskem slov na řádky dané šířky 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 objektů - metoda Main() - žádné “globální” metody ani proměnné, všechno patří nějaké třídě - trochu syntaxe jazyka C# Příklady tříd Console DateTime TimeSpan List<> 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í - private-(protected)-public - : 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 //(konstruktor!) - virtual-override - polymorfismus abstraktní třída abstraktní metoda