Komponenty v.net. Obsah přednášky

Podobné dokumenty
Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Generické programování

Softwarové komponenty a Internet

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Vytváření a použití knihoven tříd

Technologie JavaBeans

Abstraktní datové typy: zásobník

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Principy objektově orientovaného programování

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

IRAE 07/08 Přednáška č. 7. Začátek (head)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Jazyk C# a platforma.net

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

8 Třídy, objekty, metody, předávání argumentů metod

typová konverze typová inference

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Tvorba informačních systémů

Jazyk C# (seminář 6)

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

Aplikace s grafickým uživatelským rozhraním

Úvod do programovacích jazyků (Java)

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 3)

Komponentní technologie

RMI - Distribuované objekty v Javě

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Platforma.NET 4. hodina dnes to bude ideologické

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

RMI Remote Method Invocation

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Jakub Čermák Microsoft Student Partner

PŘETĚŽOVÁNÍ OPERÁTORŮ

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

Programovací jazyk C# Úvod do programování v C#

Programovací jazyk Úvod do programování v C#

Zápis programu v jazyce C#

Programovací jazyk C# Úvod do programování v C#

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

UJO Framework. revoluční architektura beans. verze

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

1. Programování proti rozhraní

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# a platforma.net

Metody připojování periferií

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Vytvoření.NET komponenty (DLL) ve Visual Studiu

Abstraktní třídy, polymorfní struktury

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Architektury informačních systémů

Úvod do programovacích jazyků (Java)

IRAE 07/08 Přednáška č. 1

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

KTE / ZPE Informační technologie

Třídy a objekty -příklady

Programovací í jazyk Haskell

Úvod Vývojová prostředí Štábní kultura Dokumentace Konec. Programování v C# Prostředí a doporučení 1 / 39

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

Objektové programování

Aplikace a sestavení Sestavení (assembly)

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Dědění, polymorfismus

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 7)

Seminář Java IV p.1/38

PREPROCESOR POKRAČOVÁNÍ

Architektury informačních systémů

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Skriptovací jazyky. Obsah

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Základy objektové orientace I. Únor 2010

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

20. Projekt Domácí mediotéka

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

Jazyk C# (seminář 5)

Transkript:

doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování založené na rozhraních Metody, vlastnosti Delegáty a události Příklad - čítač Komponenty GUI v.net 2 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 1

Rozdíl mezi COM a.net Neexistuje žádné bázové rozhraní jako IUnknown. Komponenty se vytvářejí přímo, ne přes class factory. Nepoužívají se čítače odkazů. Všechny informace o rozhraní jsou obsaženy ve zdrojovém programu, nepoužívá se IDL. Identifikace komponenty nevychází z GUID, ale z namespace a pro sdílené komponenty i z digitálního podpisu (strong name). 3 Distribuce komponent Základní jednotkou je assembly Jednodušší instalace pouhým kopírováním Jednotka verzování a zabezpečení Forma DLL nebo EXE Může obsahovat několik fyzických modulů Komponenty Další zdroje ikony, obrázky, řetězce Metadata + manifest Assembly Linker AL.exe 4 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 2

Komponenty ve Visual Studiu Vytvoření komponenty Projekt typu Class Library Použití komponenty Add Reference import definic typů a komponent z jiných knihoven (systémevých nebo vlastních) Hlavní program Windows Application s uživatelským rozhraním Console Application příkazový řádek 5 Komponenty ve Visual Studiu 6 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 3

Komponenty ve Visual Studiu 7 Programování založené na rozhraních Rozhraní = specifikace kontraktu Referenční typ Má pouze veřejné členy metody, vlastnosti, indexery, události Nemá implementaci, konstruktory a nelze vytvářet instance Třída = implementace kontraktu Může dědit pouze z jediné třídy Může implementovat více rozhraní Může navíc obsahovat proměnné, konstanty, 8 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 4

Rozhraní a typová bezpečnost Implicitní přetypování public interface IMyInterface { void Method1(); public class MyClass: IMyInterface { void Method1() { IMyInterface obj = (IMyInterface)new MyClass(); obj.method1(); 9 Metody a vlastnosti public interface IMyInterface { void Method1(); int SomeProperty{ get; set; public class MyClass: IMyInterface { public void Method1() { public int SomeProperty { get { set { 10 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 5

Delegát Objekt obalující referenci na konkrétní metodu delegate int BinaryOp(int x, int y); int add(int x, int y){ return x+y; BinaryOp Op = new BinaryOp(add); int z = Op(1, 2); 11 Delegát jako seznam Delegát lze použít také jako seznam referencí na metody public delegate void MyEvent(); MyEvent += new MyEvent(obj.Method1); MyEvent += new MyEvent(obj.Method2); Volání delegáta zajistí postupné provedení všech registrovaných metod MyEvent(); 12 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 6

Delegát jako událost public delegate void NumberChangedEvent(int val) Publisher = třída generující události class MyPublisher { public event NumberChangedEvent NumberChanged; public void FireEvent(int num) { NumberChanged(num); 13 Delegát jako událost Subscriber = třída reagující na událost public class MySubscriber { void OnNumberChanged(int num) { Console.WriteLine( num={0, num); MyPublisher publisher = new MyPublisher(); MySubscriber subscriber = new MySubscriber(); // registrace odběratele publisher.numberchanged += new NumberChangedEvent(subscriber.OnNumberChanged); 14 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 7

Konvence pro typ delegáta Delegát nevrací žádnou hodnotu Co by s ní měl publisher dělat? Objekt generující událost se předává jako první parametr Obslužná metoda může být společná pro více zdrojů Další parametry jsou zabaleny do třídy odvozené od EventArgs Možnost změn bez nutnosti zásahu do odběratelů 15 Konvence pro typ delegáta public delegate void EventHandler( object sender, EventArgs eventargs ) // zdroj události // parametry EventArgs.Empty - nejsou-li parametry public class MyEventArgs: EventArgs { Metody pro obsluhu událostí se pojmenovávají On<událost> 16 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 8

Příklad using System; namespace PTE { public class Counter { // událost překročení maximální hodnoty public event EventHandler LimitReached; public Counter(int limit) { this.limit = limit; 17 Příklad // hodnota čítače private int val; public int Value { get { return val; set { val = value; // maximální hodnota private int limit; public int Limit { get { return limit; set { limit = value; 18 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 9

Příklad // zvýšení čítače a ošetření přetečení public void increment() { val++; if( val >= limit ) { if( LimitReached!= null ) LimitReached(this, EventArgs.Empty); val = 0; 19 Komponenty GUI v.net namespace System.Windows.Forms komponenty pro lokální aplikace nahrazuje MFC (MS Foundation Classes) z C++ namespace System.Web.UI komponenty pro webové aplikace System.Web.UI.HtmlControls System.Web.UI.WebControls součást ASP.NET 20 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 10

21 Komponenty GUI v.net Windows.Forms.Label label1 = new Windows.Forms.Label(); label1.location = new Drawing.Point(24, 24); label1.name = "label1"; label1.size = new Drawing.Size(56, 24); label1.tabindex = 0; label1.text = "Login"; Controls.add(label1); 22 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 11