Advanced .NET Programming I 1st Lecture

Slides:



Advertisements
Podobné prezentace
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Advertisements

Funkce Připomeňme si program pro výpočet faktoriálu:
AJAX fenomén současného internetu Dalibor Kačmář Academic Developer Evangelist Microsoft ČR host Vítek Karas Senior Software Development Engineer Microsoft.
Jazyk C# a platforma .NET ZS 2013/2014
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
„Programátor by měl být v prvé řadě líný.“. PIFovo Web API (API = Application Programming Interface)
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Michal Neuwirth Partner Technical Readiness Microsoft s.r.o.
Programování v C++ Cvičení.
Sociální zabezpečení a důchodová politika SZDP Přednášející: Mgr. Hana Grzegorzová Typ předmětu: povinně volitelný, kontrola docházky…..nastaveny na první.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Makroekonomie - podmínky Přednášky, cvičení: Mgr. Hana Grzegorzová Kontakt: Cvičení: Ing. Hana Tichá – info.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
KIV/PPA2 1.cvičení Cvičící: Pavel Bžoch.
12/04/20151 Kolekce (1) Kolekce (collection) představují standardní datové struktury (seskupení) prvků (objektů) Jsou definovány ve jmenném prostoru System.Collections.
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Advanced.NET Programming I + II 1 st Lecture Pavel Ježek.
1 / 9X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log.
Příležitost pro partnery s Windows 7 Lukáš Křovák Produktový manažer divize Windows
123.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
KIV/PRJ Speciální předmět pro zvídavé a hravé.
PPA1 – 5.cvičení Pavel Bžoch.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
ŠKOLA: Gymnázium, Tanvald, Školní 305, příspěvková organizace ČÍSLO PROJEKTU: CZ.1.07/1.5.00/ NÁZEV PROJEKTU: Šablony – Gymnázium Tanvald ČÍSLO.
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-2.PT-09-Způsoby cestování Název školyStřední odborná škola a Střední odborné učiliště,
KIV/PPA2 1.cvičení Cvičící: Pavel Bžoch. Údaje o cvičícím Pavel Bžoch Kancelář: UL408 Konzultační hodiny: –Středa 12:05 – 12:50 –Čtvrtek 11:10 – 11:55.
Pokročilé programování v C++ (část B)
Počítačová grafika III Organizace Jaroslav Křivánek, MFF UK
PŘÍKAZ while úkol 1_42.
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Tutorial: Obchodní akademie Topic: Logical Functions Prepared by: Mgr. Zdeněk Hrdina Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/ je.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-3.PT-21-Jídlo a nápoje Název školyStřední odborná škola a Střední odborné učiliště,
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-1.PT-06-Rodina a přátelé Název školyStřední odborná škola a Střední odborné učiliště,
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-3.PT-26-Londýn Název školyStřední odborná škola a Střední odborné učiliště, Dubno.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-3.PT-20-Mezilidské vztahy Název školyStřední odborná škola a Střední odborné učiliště,
FUN WITH C# EPISODE XIII INTERFACES STRIKE BACK CLI Type System All types Reference types (allocated on managed heap) PointersValue types (allocated.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-2.PT-13-Vzdělávání Název školyStřední odborná škola a Střední odborné učiliště,
B AT SOUBORY Jednoduché skripty ve Windows. O PAKOVÁNÍ PŘÍKAZU OPAKUJ. off for /L %i in ( ) do ( echo *** echo %i echo *** ) Zápis: Opakuj.
Základy informatiky Přednášející: Ing. Jana Krutišová Cvičící: Ing. Jan Štěbeták.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Jazyk C# a platforma.NET ZS 2015/2016 Pavel Ježek
Katedra managementu ŘÍZENÍ OBCHODU – SEMINÁRNÍ PRÁCE Nesplněná docházka Ing. Patricia Jakešová
NSWI152 - Vývoj cloudových aplikací Filip Zavoral Tomáš Herceg ~ Mario Kamburov ~ Jiří Vinárek
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá.
Název vzdělávacího materiálu
SOLID principy v OOP návrhu
Přetěžování metod (1) Přetěžování metod – overloading:
Jazyk C# a platforma .NET ZS 2016/2017
Jazyk C# a platforma .NET ZS 2016/2017
Advanced .NET Programming I 1st Lecture
Advanced .NET Programming II 1st Lecture
Informatika 1 (IN1, INN1)
Agilní webový projekt na platformě .NET
Reflexe jako introspekce
C# přehled vlastností.
Praktická cvičení Úvodní hodina David Malý kabinet 205.
Datum: Projekt: Kvalitní výuka Registrační číslo: CZ.1.07/1.5.00/
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
1. Exercise Tomas Hogenauer
Vázání dat Data Binding
Jazyk C# a platforma .NET ZS 2018/2019
Advanced .NET Programming I 1st Lecture
Composite “Spojuj a panuj”.
Transkript prezentace:

Advanced .NET Programming I 1st Lecture Pavel Ježek pavel.jezek@d3s.mff.cuni.cz Some of the slides are based on University of Linz .NET presentations. © University of Linz, Institute for System Software, 2004 published under the Microsoft Curriculum License (http://www.msdnaa.net/curriculum/license_curriculum.aspx)

Struktura předmětu NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Přednáška Cvičení (SW2) – třeba se přihlásit v SISu NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Přednáška – středa 17:20 v S3 Cvičení (SW2/SU2) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) Přednáška – úterý 17:20 v S3 – „interface s okolím“ NPRG064 (0/2 Z) – Programovaní uživatelských rozhraní v .NET (léto) Přednáška – pondělí 15:40 v S3 – „interface s uživatelem“

Požadavky na zápočet/zkoušku NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Zkouška (jako na Principech počítačů + povinné ústní dozkoušení) Splněné povinnosti ze cvičení Zápočtový program (kontrolují cvičící) Praktický zápočtový test v počítačové laboratoři Naprogramovat a odladit jeden jednoduchý příklad Časový limit: 3 hodiny Celkem 5 pokusů, z toho ale maximálně 3 pokusy v zimním zk. obd. (další až v některém z letních termínů) Dostatek termínů v zimním zkouškovém období + přibližně 2 v letním NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) “Zápočtový program” (kontrolují cvičící z NPRG038, případně i NPRG035) NEBO NPRG064 (0/2 Z) – Programování uživatelských rozhraní v .NET (léto) Zápočtový program (kontrolují cvičící z NPRG038, případně i NPRG 035) Zápočet Zápočet Zkouška Zápočet

Požadavky na zápočet/zkoušku NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Zkouška (jako na Principech počítačů + povinné ústní dozkoušení) Splněné povinnosti ze cvičení Zápočtový program (kontrolují cvičící) Praktický zápočtový test v počítačové laboratoři Naprogramovat a odladit jeden jednoduchý příklad Časový limit: 3 hodiny Celkem 5 pokusů, z toho ale maximálně 3 pokusy v zimním zk. obd. (další až v některém z letních termínů) Dostatek termínů v zimním zkouškovém období + přibližně 2 v letním NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) “Zápočtový program” (kontrolují cvičící z NPRG038, případně i NPRG035) NEBO NPRG064 (0/2 Z) – Programování uživatelských rozhraní v .NET (léto) Zápočtový program (kontrolují cvičící z NPRG038, případně i NPRG 035) Zápočet NPRG064 (0/2 Z) – Programování uživatelských rozhraní v .NET (léto) Zápočtový program, který byl uznaný v NPRG035 a/nebo v NPRG038 a/nebo v NPRG057, pokud má nějaké netriviální uživatelské rozhraní (Desktop App = WinForms/WPF, Mobile App = Xamarin, Web App = ASP.NET WebForms/ASP.NET MVC, Game = Unity) Zápočet Zkouška Zápočet

Požadavky na zápočet/zkoušku NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Zkouška (jako na Principech počítačů + povinné ústní dozkoušení) Splněné povinnosti ze cvičení Zápočtový program (kontrolují cvičící) Praktický zápočtový test v počítačové laboratoři Naprogramovat a odladit jeden jednoduchý příklad Časový limit: 3 hodiny Celkem 5 pokusů, z toho ale maximálně 3 pokusy v zimním zk. obd. (další až v některém z letních termínů) Dostatek termínů v zimním zkouškovém období + přibližně 2 v letním NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) “Zápočtový program” (kontrolují cvičící z NPRG038, případně i NPRG035) NEBO NPRG064 (0/2 Z) – Programování uživatelských rozhraní v .NET (léto) Zápočtový program (kontrolují cvičící z NPRG038, případně i NPRG 035) Zápočet NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Splněné povinnosti ze cvičení (1/2 [= 3+2{vlákna}] domácích úkolů na 100%) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) Zápočet Zkouška Zápočet

Požadavky na zápočet/zkoušku NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Zkouška (jako na Principech počítačů + povinné ústní dozkoušení) Splněné povinnosti ze cvičení Zápočtový program (kontrolují cvičící) Praktický zápočtový test v počítačové laboratoři Naprogramovat a odladit jeden jednoduchý příklad Časový limit: 3 hodiny Celkem 5 pokusů, z toho ale maximálně 3 pokusy v zimním zk. obd. (další až v některém z letních termínů) Dostatek termínů v zimním zkouškovém období + přibližně 2 v letním NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) “Zápočtový program” (kontrolují cvičící z NPRG038, případně i NPRG035) NEBO NPRG064 (0/2 Z) – Programování uživatelských rozhraní v .NET (léto) Zápočtový program (kontrolují cvičící z NPRG038, případně i NPRG 035) Zápočet NPRG038 (2/2 Zk/Z) – Pokročilé programování pro .NET I (léto) Splněné povinnosti ze cvičení (1/2 [= 3+2{vlákna}] domácích úkolů na 100%) Zápočtový program Zkouška (jako na PP + povinné ústní dozkoušení) 0,25 bodu ke zkoušce za každý 100% úkol nad 3+2 Zápočet Zkouška Zápočet

Nevygenerovaný (ručně psaný) rozumný kód Zápočtový program Termíny NPRG035 (zima), i NPRG038 (léto), NPRG057 (léto), NPRG064 (léto): Specifikace: 13. 7. 2018 Předvedení finální plně funkční verze (včetně uživatelské a programátorské dokumentace): 1. deadline: 3. 8. 2018 2. deadline: 7. 9. 2018 Požadavky na program z NPRG035, NPRG064: Předvedeno do 1. deadline: minimálně 30 kB zdrojového kódu v jazyce C# Předvedeno do 2. deadline: minimálně 45 kB zdrojového kódu v jazyce C# Předvedeno po 2. deadline: minimálně 60 kB zdrojového kódu v jazyce C# Požadavky na program z NPRG038, resp. z NPRG057: Předvedeno do 1. deadline: minimálně 45 kB zdrojového kódu v jazyce C# Předvedeno do 2. deadline: minimálně 60 kB zdrojového kódu v jazyce C# Předvedeno po 2. deadline: minimálně 90 kB zdrojového kódu v jazyce C# Netriviální a rozumné použití některé z „technologií“ probíraných v NPRG038 (vlákna, Sockets [síťování], .NET Remoting, LINQ, Reflection, generování kódu, rozumní delegáti), resp. NPRG057 (unsafe kód, C++/CLI, .NET Security, ADO.NET, Web Services, serializace, skriptování) – ne XML! Poznámka: Každý zápočtový program, který splňuje požadavky NPRG038, resp. NPRG057, splňuje i požadavky NPRG035 (tj. lze odevzdat jeden program za oba předměty) rozumný/rozumné = na požádání posoudí cvičící POZOR! Osobní předvedení je součástí odevzdání. Na předvádění si připravte několik slidů shrnujících: hlavní funkce programu + hlavní řešené problémy + nástin architektury. Nevygenerovaný (ručně psaný) rozumný kód

Test: Static Constructors

Extension Methods Declaration: public static partial class Extensions { public static int ToInt32(this string s) { return Int32.Parse(s); } } Usage: string s = "1234"; int i = s.ToInt32(); // Same as Extensions.ToInt32(s) Instance methods take precedence over extension methods Extension methods imported in inner namespace declarations take precedence over extension methods imported in outer namespace declarations

Extension Methods (2) Declaration: public static partial class Extensions { public static T[] Slice<T>(this T[] source, int index, int count) { if (index < 0 || count < 0 || source.Length – index < count) throw new ArgumentException(); T[] result = new T[count]; Array.Copy(source, index, result, 0, count); return result; } } Usage: int[] digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int[] a = digits.Slice(4, 3); // Same as Extensions.Slice(digits, 4, 3)

Test: Extension Methods and Structs

Goto

Class System.Object Topmost base class of all other classes class Object { protected object MemberwiseClone() {...} public Type GetType() {...} public virtual bool Equals (object o) {...} public virtual string ToString() {...} public virtual int GetHashCode() {...} public static bool ReferenceEquals(object objA, object objB); }

Sorting: IComparable and IComparer IComparable is interface for types with order classes implementing IComparable are values types like Int32, Double, DateTime, … class Enum as base class of all enumeration types class String IComparer is interface for the realization of compare operators public interface IComparable { int CompareTo(object obj); // <0 if this < obj, 0 if this == obj, >0 if this > obj } public interface IComparable<in T> { int CompareTo(T obj); // <0 if this < obj, 0 if this == obj, >0 if this > obj public interface IComparer { int Compare(object x, object y); // <0 if x < y, 0 if x == y, >0 if x > y } public interface IComparer<in T> { int Compare(T x, T y); // <0 if x < y, 0 if x == y, >0 if x > y

IEnumerable and IEnumerator (1) Anything which is enumerable is represented by interface IEnumerable IEnumerator realizes an iterator Also generic versions IEnumerable<out T> and IEnumerator<out T> Enumerator should throw an InvalidOperationException on concurrent modification! interface IEnumerable { IEnumerator GetEnumerator(); } interface IEnumerator { object Current {get;} bool MoveNext(); void Reset(); }

IEnumerable and IEnumerator following statement: foreach (ElementType element in collection) statement; is translated into: IEnumerator enumerator = ((IEnumerable) collection).GetEnumerator(); try { ElementType element; while (enumerator.MoveNext()) { element = (ElementType) enumerator.Current; statement; } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) disposable.Dispose();

IEnumerable and IEnumerator (optimized) following statement: foreach (ElementType element in collection) statement; is translated into: var enumerator = collection.GetEnumerator(); try { ElementType element; while (enumerator.MoveNext()) { element = (ElementType) enumerator.Current; statement; } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) disposable.Dispose();