Advanced .NET Programming I 1st Lecture

Slides:



Advertisements
Podobné prezentace
Funkce Připomeňme si program pro výpočet faktoriálu:
Advertisements

Jazyk C# a platforma .NET ZS 2013/2014
Číslo projektuCZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_AJK-4.PT-30-Problémy dnešního světa Název školyStřední odborná škola a Střední odborné.
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.
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.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Advanced.NET Programming I + II 1 st Lecture Pavel Ježek.
Š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.
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_ 007 Název školy Gymnázium, Tachov, Pionýrská 1370 Autor Mgr.Stanislava Antropiusová.
Příležitost pro partnery s Windows 7 Lukáš Křovák Produktový manažer divize Windows
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é.
PPA1 – 5.cvičení Pavel Bžoch.
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.
Š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.
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.
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.
Čí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ě,
y.cz Název školyStřední odborná škola a Gymnázium Staré Město Číslo projektuCZ.1.07/1.5.00/ AutorMgr. Roman Chovanec Název šablonyIII/2.
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.
Educational program: Mechanic - electrician Title of program: Technical training II. class Bistable multivibrator Worked out: Bc. Chumchal Miroslav Projekt.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
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.
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.
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-4.PT-27-Životní prostředí 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-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-23-Počasí 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-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-2.PT-16-Praha Název školyStřední odborná škola a Střední odborné učiliště, Dubno.
Podpora rozvoje cizích jazyků pro Evropu 21. stol. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Tento projekt je spolufinancován Evropským sociálním fondem a státním.
Internet publishing HTML documents writing basics Petr Zámostný room: A-72a phone.: 4222
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jan Rozsíval. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jan Rozsíval. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
Čí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.
EU peníze středním školám Název vzdělávacího materiálu: B2 – Verbs – Computers Číslo vzdělávacího materiálu: ICT12-19 Šablona: III/2 Inovace a zkvalitnění.
Listening VY_32_INOVACE_AJ_2_60 Multiple choice Číslo projektu: CZ.1.07./1.5.00/ Název projektu: Zlepšení podmínek pro vzdělávání na SUŠ, Ostrava.
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
Education Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín Tematická oblast Angličtina: The USA Datum vytvoření Ročník.
Název vzdělávacího materiálu Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín Tematická oblastAngličtina, Maturitní ústní zkouška.
Název vzdělávacího materiálu
SOLID principy v OOP návrhu
Jazyk C# a platforma .NET ZS 2016/2017
Jazyk C# a platforma .NET ZS 2016/2017
Název vzdělávacího materiálu
Going across the USA Tematická oblast Angličtina: The USA
Advanced .NET Programming II 1st Lecture
Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 25/6/2014
DIGITÁLNÍ UČEBNÍ MATERIÁL
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
Digitální učební materiál
Reflexe jako introspekce
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Autor: Mgr. Kateřina Suková
C# přehled vlastností.
DIGITÁLNÍ UČEBNÍ MATERIÁL
WH-QUESTIONS.
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
1. Exercise Tomas Hogenauer
Jazyk C# a platforma .NET ZS 2018/2019
Advanced .NET Programming I 1st Lecture
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 – úterý 10:40 v S3 Cvičení (SW2) NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) Přednáška – pondělí 10:40 v S3 – „interface s okolím“ NPRG064 (0/2 Z) – Programovaní uživatelských rozhraní v .NET (léto) Přednáška – úterý 15:40 v S3 – „interface s uživatelem“ Začíná 4. týden semestru (1.-3. týden jsou v tomto slotu přednášky o Ročníkovém projektu a o Bakalářských pracech)

Požadavky na zápočet/zkoušku NPRG035 (2/2 Zk/Z) – Jazyk C# a platforma .NET (zima) Zkouška (ala Principy) 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) Splněné povinnosti ze cvičení (1/2 [= 3+2{vlákna}] domácích úkolů na 100%) Zápočtový program NPRG057 (2/0 Zk) – Pokročilé programování pro .NET II (léto) “Zkouškový program” (kontrolují cvičící z NPRG038, případně i NPRG035) nebo Zápočet Zápočet Zkouška

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 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: 14. 7. 2017 Předvedení finální plně funkční verze (včetně uživatelské a programátorské dokumentace): 1. deadline: 4. 8. 2017 2. deadline: 8. 9. 2017 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ě 60 kB zdrojového kódu v jazyce C# Předvedeno do 2. deadline: minimálně 90 kB zdrojového kódu v jazyce C# Předvedeno po 2. deadline: minimálně 120 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), 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: Extension Methods and Structs

Test: Static Constructors

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();

Iterators so far foreach loop can be applied to objects of classes which implement IEnumerable class MyClass: IEnumerable<T> { ... public IEnumerator<T> GetEnumerator() { return new MyEnumerator(...); } private class MyEnumerator: IEnumerator<string> { public string Current { get {...} } public bool MoveNext() {...} public void Reset() {...} interface IEnumerable<T> { IEnumerator<T> GetEnumerator(); } MyClass x = new MyClass(); ... foreach (string s in x) ... complicated to implement!!

Iterator Methods Characteristics of an interator method class MyClass { string first = "first"; string second = "second"; string third = "third"; ... public IEnumerator<string> GetEnumerator() { yield return first; yield return second; yield return third; } Characteristics of an interator method has the signature public IEnumerator<T> GetEnumerator statement body contains at least one yield statement MyClass x = new MyClass(); ... foreach (string s in x) Console.Write(s + " "); // prints "first second third " returns a sequence of values foreach loop traverses this sequence How does an iterator method work? Note MyClass need not implement IEnumerable!

What Happens Behind the Scene? returns an object of the following class public IEnumerator<int> GetEnumerator() { try { ... } finally { } class _Enumerator1 : IEnumerator<int> { int Current { get {...} } bool MoveNext() {...} void Dispose() {...} } is translated into foreach (int x in list) Console.WriteLine(x); IEnumerator<int> _e = list.GetEnumerator(); try { while (_e.MoveNext()) Console.WriteLine(_e.Current); } finally { if (_e != null) _e.Dispose(); } MoveNext runs to the next yield statement Dispose executes a possibly existing finally block in the iterator method