Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Advanced .NET Programming I 1st Lecture
Pavel Ježek 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 (
2
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“
3
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
4
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
5
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
6
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
7
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: Předvedení finální plně funkční verze (včetně uživatelské a programátorské dokumentace): 1. deadline: 2. deadline: 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
8
Test: Static Constructors
9
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
10
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)
11
Test: Extension Methods and Structs
12
Goto
13
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); }
14
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
15
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(); }
16
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();
17
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();
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.