Date post: | 19-Feb-2017 |
Category: |
Education |
Upload: | jan-hridel |
View: | 57 times |
Download: | 0 times |
INPTPrekapitulace zs 2016/17
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
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.
Ř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>.
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;
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 };
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.
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();
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“.
Pravidla pro psaní metod
1. Měly by být malé!2. Měly by být ještě menší!
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.
https://youtu.be/yE9sWvuAlxo
WPF
WPF animace
● Generátor hodnot, které jsou postupně přiřazovány některé z vlastností kontroly.
● Animovat můžeme pouze vlastnosti typu DependencyProperty.
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.
Typy WPF animací
● Základní● Frame● Path
WPF styly
● Obdoba CSS u webových stránek.● Definují se v párovém elementu <Style>.● Element <Setter> nastavuje vlastnosti kontroly.
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ů
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/beveragesodpoví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
ASP.NET MVC 5 - Razor templates
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>
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
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.
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