2. Rozšiřující metody
Jedná se o zvláštní druh statické metody, která je volána, jako kdyby se
jednalo o nestatickou metodu. Pro uživatele není žádný rozdíl mezi voláním
rozšiřující a nestatické metody.
Syntaxe
deklarace prvního parametru rozšiřující metody:
this typ identifikátor
3. Odložené vykonávání
Metody, které vrací sekvenci, jako např. metoda Where, implementují tzv.
odložené vykonání (angl. deferred execution).
Tyto metody pouze vrací instanci nějaké třídy, která obsahuje informace
potřebné k provedení příslušné akce.
Akce je vykonána až při volání metody GetEnumerator přímo nebo
prostřednictvím cyklu foreach. Vykonání akce se provede znovu při každém
volání metody GetEnumerator.
4. Řazení
Pro seřazení sekvence vzestupně slouží metoda OrderBy.
Metoda seřadí zadanou sekvenci podle klíče, který poskytuje zadaný delegát.
Klíče porovnává pomocí vlastnosti Default třídy Comparer<TKey>.
5. Deklarace proměnné bez udání typu
Lokální proměnnou lze deklarovat bez udání typu. Místo označení typu lze
použít klíčové slovo var. Jedná se o tzv. deklaraci implicitně typové lokální
proměnné.
Syntaxe:
var identifikátor inicializace;
6. Anonymní typ
Anonymní typ slouží k zapouzdření množiny vlastností určených pouze pro
čtení do instance nepojmenované třídy. Jméno typu je generováno
překladačem a není ve zdrojovém kódu přístupné.
var osoba = new { Jmeno = "Josef", Vek = 10*2 };
7. Technologie LINQ
Dotazovací jazyk pro získání potřebných dat z určitého zdroje (databáze, XML
soubory, kolekce v paměti, …)
Integrovány přímo do programovacího jazyka
● Kontrola už v době překladu.
8. Technologie LINQ - syntaxe, ukázka
int maximum = (from cislo in cisla
where cislo % 2 == 1
orderby cislo
select cislo).Max();
List<int> lichaCislaList = (from cislo in cisla
where cislo % 2 == 1
orderby cislo
select cislo).ToList();
9. Technologie LINQ - doporučení
Doporučuje se, aby jméno dotazovací proměnné obsahovalo slovo „query“,
např. lichaCislaQuery zatímco proměnné, které neobsahují dotaz, ale
skutečnou hodnotu, nemají obsahovat ve svém jménu slovo „query“.
10. Pravidla pro psaní metod
1. Měly by být malé!
2. Měly by být ještě menší!
11. ADO.NET
ADO.NET (Microsoft ActiveX Data Objects .NET) představuje množinu tříd
nabízejících služby pro přístup k datům a tvorbu databázových aplikací. Daty
máme nyní na mysli převážně informace uložené v databázích. Ať již se jedná
o data v databázích například na Microsoft SQL Serveru či data zpřístupněná
přes OLE DB nebo XML. Mezi jeho přednosti patří především jednoduchý
způsob použití, rychlost při zpracování a další. Stačí vytvořit spojení se
serverem, s kterým budeme chtít pracovat, pomocí zvoleného adaptéru a
zadaného dotazu získat z databáze data a ty pak načíst do některé z
připravených konstrukcí pro práci s daty z tabulek.
13. WPF animace
● Generátor hodnot, které jsou postupně přiřazovány některé z vlastností
kontroly.
● Animovat můžeme pouze vlastnosti typu DependencyProperty.
14. Vlastnosti WPF animací
● From – počáteční hodnota.
● To – koncová hodnota.
● Duration – délka animace ve formátu
„hh:mm:ss“
● AutoReverse – vlastnost říkající, jestli se
má provést animace po dokončení ještě
jednou ale obráceně.
● RepeatBehivior – počet opakování („2x“,
„3x“, …, „Forever“).
● Storyboard.TargetProperty – animovaná
vlastnost.
● Storyboard.TargetName – název cílového
elementu.
16. WPF styly
● Obdoba CSS u webových stránek.
● Definují se v párovém elementu <Style>.
● Element <Setter> nastavuje vlastnosti kontroly.
17. Co to je ASP.NET MVC?
Technologie pro tvorbu sofistikovaných webových aplikací.
● Založeno na návrhovém vzoru Model-View-Controller
● Umožňuje rychlý agilní vývoj
● Využití nejnovějších webových standardů
18. ASP.NET MVC 5 - routování
Url adresy neobsahují adresu fyzického souboru, jako např.:
http://server/application/Products.aspx?id=4
Ale požívají “url patterns”:
Adresa: http://server/application/Products/show/beverages
odpovídá vzoru: server/application/{area}/{action}/{category}
>> čitelnější i pro lidi
>> router se pak stará o správný překlad url (podle šablony) na fyzický soubor (controller) a příslušnou
metodu a s příslušnými parametry
20. ASP.NET MVC 5 - Razor templates
Znak @
Začínají jím bloky kódu
<!-- Single statement blocks -->
@{ var total = 7; }
@{ var myMessage = "Hello World"; }
<!-- Inline expressions -->
<p>The value of your account is: @total </p>
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Today is: " +
weekDay;
}
<p>The greeting is: @greetingMessage</p>
21. Aplikace s více podprocesy
▪ Nejspolehlivější způsob vytvoření aplikace s více podprocesy je použít
komponentu BackgroundWorker (viz dále).
▪ Pro větší kontrolu nad chováním podprocesů a aplikace, můžeme podprocesy
spravovat sami.
▪ Třída Thread
22. Třída ThreadPool
▪ Vytvoření a rušení podprocesu pomocí třídy Thread je časově náročné. Proto
modul CLR nabízí fond již vytvořených pracovních podprocesů k okamžitému
použití. Tento fond je přístupný prostřednictvím třídy ThreadPool.
▪ Po ukončení pracovního podprocesu se tento podproces vrátí zpět do fondu k
opakovanému použití. Pokud je fond podprocesů vyčerpaný, operace
požadující své spuštění, je zařazena do fronty a čeká, dokud se některý
podproces nevrátí zpět do fondu.
23. Třída ThreadPool
▪ Maximální a minimální počet podprocesů
▪ Pro každý proces je k dispozici samostatný fond podprocesů. Počet operací, které čekají ve frontě
na uvolnění podprocesu z fondu, není omezen, resp. je limitován pouze operační pamětí počítače.
Fond podprocesů limituje počet současně aktivních (běžících) podprocesů. Od verze .NET 4.0
implicitní maximální velikost fondu podprocesů závisí na několika faktorech, např. velikosti
virtuálního adresového prostoru. Tuto velikost je možné zjistit nebo nastavit voláním metod:
▪ void GetMaxThreads(out int workerThreads, out int completionPortThreads)
▪ bool SetMaxThreads(int workerThreads, int completionPortThreads)
▪ Kódy: https://goo.gl/jwihA2