Web programozás és haladó fejlesztési technikák – C#

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás III FACTORY, KOMPOZÍCIÓ és EGYEBEK.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Tömbök ismétlés Osztályok Java-ban Garbage collection
Hernyák Zoltán XML validálás.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
Entity framework Krizsán Zoltán
Krizsán Zoltán.  Ha az algoritmus sokáig dolgozik,  de el akarjuk kerülni a „fagyást”.  Kisebb a költsége, mint az új folyamatnak.  Programozás szempontjából.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Az UML kiterjesztési lehetőségei
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
1 A bannernek is van szeme. Erre ma már megvannak az eszközök! 6.
ONTOLÓGIA és TUDÁSREPREZENTÁCIÓ Szőts Miklós Alkalmazott Logikai Laboratórium
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Egyenesvonalú (lineáris) adatszerkezetek
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
Haladó Programozás Reflexió OE-NIK HP.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
A világon elsőként: NEMZETKÖZI VIRTUÁLIS SAKKISKOLA (  Világszerte elfogadott tény, melyet számos kutatási eredmény is.
A BCD használata üzleti partnerek felkutatásához
Neumann János Informatikai Kar
Assembly/DLL Reflexió
Script nyelvek előadás
„Designer-barát” játéklogika
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Adatkonverziók Erőforrások
Cascading Style Sheet.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
Web programozás és haladó fejlesztési technikák
Informatikai gyakorlatok 11. évfolyam
Filmes példaalkalmazás I.
Függvénysablonok használata
Előadás másolata:

Web programozás és haladó fejlesztési technikák – C# Reflexió - Feladat

Reflexió A reflexió az a képesség, amellyel a program önmaga struktúráját és viselkedését futásidőben analizálni és alakítani tudja Magas szintű nyelv kell hozzá (Java, PHP, … C#) Különböző mértékű támogatás a nyelvekben C#-ban a leggyakoribb használati módja a futásidőben végrehajtott típusanalízis De lehetséges típusok futásidejű létrehozása is: System.Reflection.Emit Több technológia használja Intellisense, Properties és más IDE-szolgáltatások Több .NET technológia (szerializáció, .NET Remoting, WCF) Tesztek Hátránya: NAGYON LASSÚ!!!

Futásidejű típusanalízis - Assembly Assembly a = Assembly.GetExecutingAssembly(); Assembly a = Assembly.LoadFrom(„Path.To.Assembly”); Assembly a = Assembly.Load(bytes); Assembly a = type.Assembly; a.GetTypes() – típusok kinyerése a.EntryPoint – belépési pont (metódus, exék esetén)

Futásidejű típusanalízis - Type Type t = assembly.GetType(„Type.Name.In.Assembly”); Type t = typeof(int); Type t = typeof(T); Type t = obj.GetType(); Type t = Type.GetType(„Type.Name.In.Any.Assembly”); Ha nem az aktuálisan végrehajtódó szerelvényben vagy az mscorlib.dll-ben van, akkor ún. „assembly-qualified name” megadása szükséges t.FullName, t.AssemblyQualifiedName – nevek különféle formában t.BaseType, t.IsSubclassOf(anotherType), t.IsAssignableFrom(anotherType) – ős, utód vizsgálat typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. See AssemblyQualifiedName. If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. If the assembly has a strong name, a complete assembly name is required. TopNamespace.SubNameSpace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089

Futásidejű típusanalízis – xxxInfo PropertyInfo pi = t.GetProperty("PropName"); PropertyInfo[] pis = t.GetProperties(); FieldInfo fi = t.GetField("FieldName"); FieldInfo[] fis = t.GetFields(); MethodInfo mi = t.GetMethod("MethodName"); MethodInfo mis = t.GetMethods(); Általában átadható BindingFlags paraméter, amivel a keresés szűkíthető/konfigurálható PropertyInfo pi = t.GetProperty("PropName", BindingFlags.Static | BindingFlags.NonPublic) Nem publikus (privát) tagok is megkaphatók Ez (elsősorban) nem arra való, hogy kijátsszuk a láthatóságokat!

Saját attribútum Saját attribútum létrehozása Attribútum elérése reflexióval Az eddig említett módszerek is ezt használják [AttributeUsage(AttributeTargets.Property)] class HelpAttribute : Attribute { public string HelpURL { get; private set; } public HelpAttribute( string helpURL) this.HelpURL = helpURL; } [Help("http://path.to.my.help.for.setting1.html")] public string Setting1 { get; set; } //PropertyInfo propertyInfo = typeof(Settings).GetProperty("Setting1"); HelpAttribute helpAttribute = propertyInfo.GetCustomAttribute<HelpAttribute>(); Console.WriteLine(helpAttribute.HelpURL);

Feladat / Reflection Hozzon létre egy osztályt, amely képes egy tetszőleges példány tetszőleges szabályok szerinti validálására A megoldás során használjon reflexiót A RangeAttribute segítségével egy tulajdonság minimum és maximum értékét lehessen beállítani A MaxLengthAttribute segítségével egy tulajdonság maximum hosszát lehessen beállítani Az ezekhez illő MaxLengthValidation és RangeValidation osztályok végzik el a tényleges ellenőrzést. Mindkét osztály implementálja az IValidation interfészt, és a validációt egy Validate(xxx) metóduson keresztül végezzék el A ValidationFactory osztály felelős egy megadott attribútumhoz a megfelelő validátor osztály létrehozásáért A Validator osztály public bool Validate(object instance) metódusa végzi a tényleges ellenőrzést. A paraméterül kapott példány tulajdonságait megjelölő attribútumokra a Factory segítségével kérje le az ellenőrzést elvégző példányt, és annak a Validate(xxx) metódusa segítségével futtassa le a példányra az összes ellenőrzést „Korlátozottan igaz” = AppDomain –enként egyszer https://msdn.microsoft.com/en-us/library/vstudio/43wc4hhs%28v=vs.100%29.aspx

„Korlátozottan igaz” = AppDomain –enként egyszer https://msdn