Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner



Podobné dokumenty
Jakub Čermák Microsoft Student Partner

Windows - bezplatné služby pro školy. Jakub Vlček Specialist Microsoft Corporation

Jakub Čermák Microsoft Student Partner

Efektivní provoz koncových stanic

Lukáš Kubis. MSP pro VŠB-TU Ostrava

Jakub Čermák Microsoft Student Partner

Jak Vám partnerské programy pomohou v rozvoji podnikání. Víte, že můžete získat software v hodnotě tisíců USD za zlomek ceny?

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner

Windows na co se soustředit

Zabezpečení infrastruktury

Sdílíme, a co vy? Ing. Eliška Pečenková Plzeňský kraj. Ing. Václav Koudele Microsoft

System Center Operations Manager

Dnešní program. Jak síť využít. Přínosy sítě. Nasazení sítě. Proč síť

Skype for Business 2015

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

GDPR compliance v Cloudu. Jiří Černý CELA

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

Vývojář vs. správce IT

Marketingová podpora pro partnery Microsoft

Komentáře CISO týkající se ochrany dat

David Bednárek Jakub Yaghob Filip Zavoral.

PREPROCESOR POKRAČOVÁNÍ

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

Rizika výběru cloudového poskytovatele, využití Cloud Control Matrix

Programování v C++ 2, 4. cvičení

Vzorové analýzy rizik zpracování v cloudu. Zdeněk Jiříček National Technology Officer Microsoft ČR

Novinky v licencovaní a edíciách a ako to súvisí s System Center 2012

PB161 Programování v jazyce C++ Přednáška 4

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Optimalizace infrastruktury cesta ke kontrole IT. Pavel Salava Specialist Team Unit Lead Microsoft, s.r.o

Generické programování

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Microsoft a nařízení GDPR. Ladka Poláková Partner Sales Executive Cloud

Jazyk C# (seminář 6)

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

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

Zápis programu v jazyce C#

Teoretické minimum z PJV

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

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

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

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Objektově orientované programování

David Bednárek Jakub Yaghob Filip Zavoral.

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

Programování v C++ 1, 5. cvičení

Úvod do programovacích jazyků (Java)

Programování v C++ 1, 1. cvičení

Jazyk C# (seminář 3)

PB161 Programování v jazyce C++ Přednáška 10

PROGRAMOVÁNÍ V C++ CVIČENÍ

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

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Úvod do programování - Java. Cvičení č.4

Jak na Cloud. Roman Šuk, Microsoft Monika Kavanová, Sales2Win

ADT/ADS = abstraktní datové typy / struktury

7. Datové typy v Javě

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

přetížení operátorů (o)

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

PB161 Programování v jazyce C++ Přednáška 8

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.

PB161 Programování v jazyce C++ Přednáška 10

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Výčtový typ strana 67

Jak řešit zpracování osobních údajů v cloudu dle GDPR a nešlápnout vedle. Zdeněk Jiříček National Technology Officer Microsoft ČR

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 9

Základy C++ I. Jan Hnilica Počítačové modelování 18

Programování v Javě I. Leden 2008

Úvod do programování v jazyce Java

PB161 Programování v jazyce C++ Přednáška 7

Abstraktní datové typy

Datové abstrakce v programovacích jazycích

URČITÝM ZPŮSOBEM PODOBNÉ

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Od Czech POINTu k vnitřní integraci

Programování v Javě I. Únor 2009

a konverze na úřadech Martin Řehořek

NPRG031 Programování II 1 / :47:55

Základy programování (IZP)

Dědění, polymorfismus

Základy programování (IZP)

PB161 Programování v jazyce C++ Přednáška 2

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

Potřebujete mít vaše IS ve shodě s legislativou? Bc. Stanislava Birnerová

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

Jazyk C# (seminář 5)

Stav podnikové bezpečnosti, Globální zpráva Jakub Jiříček, Symantec ČR a SR

Mobilní počítač Dolphin TM Stručný návod k použití

Více o konstruktorech a destruktorech

Programování v C++ 3, 3. cvičení

NMIN201 Objektově orientované programování 2016/17 1 / :03:29

Cloud nový směr v poskytování IT služeb

Jazyk C++ I. Šablony 2

Bázové třídy platformy.net

Dynamika objektů. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze

Základy objektové orientace I. Únor 2010

Transkript:

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz Microsoft Student Partner

Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces Třídy, vlastní typy Hodnotové typy Managed halda, referenční objekty Stack semantics pro referenční objekty Polymorfismus Viditelnost

Nástupce Managed Extensions for C++ Vylepšení jazyka C++ nebo nový CLR jazyk? Standard ECMA-372 Přímé volání managed kódu z nativního a naopak Mixed assembly Visual Studio 2005 a výše (nebo Express edici)

Proč to použít Nativní knihovny, managed aplikace (nebo naopak) Nativní jádro, managed UI/komunikace/ Portování nativní aplikace do.netu (nebo naopak) Proč to nepoužít Komplikovanější syntax a použití (než C#) Interop režie, JIT (/clr:pure) Security (/clr:safe)

Vytvoření Vytvoření CLR projektu v New project Zapnout Project properties->clr support Funkce main int main(array<system::string ^> ^args) Header (*.h) a code soubory (*.cpp) Stdafx.h #include knihovních hlaviček

Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces Třídy, vlastní typy Hodnotové typy Managed halda, referenční objekty Stack semantics pro referenční objekty Polymorfismus Viditelnost Dotazy

1. Primitivní typy Bool, (signed) char, wchar_t, double, float, int64, int, short, void (NE STRING!) Stejné pro managed i nativní 2. normální nativní typy nespravované GC C++ class, struct Stack / nativní halda 3. managed hodnotové Stack / managed halda 4. managed referenční Managed halda (vždy) 5. Pointery, handly, reference (další slide)

Stejné jako v C++, navíc: ^... Definice managed handlů ( pointerů na objekty managed haldy) Jen na celé objekty, mohou být null (nullptr) String ^a; %... Managed (tracking) reference I na jednotlivé membery, nemohou být null Managed handly i reference ukazují vždy na daný objekt; updatovány při přesunu objektu po paměti (např. GC) Gcnew obdoba new pro managed objekty

Jiná reprezentace i umístění (pole znaků vs. managed objekt).net: System.String C++: char *, std::string, CString char * Kopie: Marshal.StringToHGlobalAnsi, Marshal.PtrToStringAnsi Odkaz: pin_ptr<wchar_t *> PtrToStringChars(String ^) Konstruktor System::Stringu Std::string, CString přímá neexistuje

Nativní pole pořád stejné Managed pole Template třída cli::array [qualifiers] array<[qualifiers]type1[, dim]>^var = gcnew array<type2[, dim]>(val[,val...]) Type1 formální typ pole Type2 faktický typ pole (podpora kovariance) Dim dimenze pole Val,... jednotlivé rozměry pole Type1 i type2 musí být primitivní nebo managed Možnost jagged arrays: array<array<int> ^> ^jagged

array<int> ^jednodim_pole = gcnew array<int>(42); array<int> ^dalsi_pole = {1, 2, 3, 5}; array<int, 3> ^trojdim_pole = gcnew array<int, 3>(4,5,6);

Výčet hodnot Nativní enum Deklarace: Enum NazevEnumu { NE_prvek1, NE_prvek2,... }; Použití: NazevEnumu t = NE_prvek2; Managed enum Deklarace enum class NazevEnumu : typ { prvek1, prvek2,... } Typ = underlying type Použití: NazevEnumu t = NazevEnumu::prvek2;

Nativní: enum VectorVisTransformationType { VVT_LINEAR, VVT_ROOT, VVT_LOG }; Managed: public enum class day_char : char {sun, mon, tue, wed, thu, fri, sat};

Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces Třídy, vlastní typy Hodnotové typy Managed halda, referenční objekty Stack semantics pro referenční objekty Polymorfismus Viditelnost

If, switch, while, for,... zůstávají For each iterace přes kolekci Iteruje přes IEnumerable Nebo jako C++ (operátor ++ a *) for each(typ iterační_proměnná in kolekce) {... } Možnost iterace přes reference změny hodnot v kolekci Výhoda oproti C# Neplést s for(int& x : my_array) v C++0x

std::vector<int> vect; //stvoříme std::vector vect.push_back(4); vect.push_back(6); // naplníme ho for each(int i in vect) // a vypíšeme Console::WriteLine(i); //... // + Demo ve VS: for each na nativním poli // vyvoření jagged array pomocí foreache array<array<int> ^> ^jagged = gcnew array<array<int> ^>(5); //vytvoření v vnějšího pole for each (array<int> ^% arr in jagged) arr = gcnew array<int>(6);

Příklad: Thread v System::Threading Oddělování namespaců pomocí :: Globální using using namespace System::Threading; Referencování assemblies #using <System.dll> Deklarace Namespace System { Namespace Threading {... } }

Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces Třídy, vlastní typy Hodnotové typy Managed halda, referenční objekty Stack semantics pro referenční objekty Polymorfismus Viditelnost

Nic nového Omezení Nelze managed v nativní třídě Většinou nelze nativní typy v managed třídě

Stejné jako v C#, VB.NET Nulování hodnot Navíc jdou vytvářet na stacku i haldě Rozdíl oproti C# value class Struktura { }; value struct Struktura { }; Struct X class: defaultní viditelnost proměnných

Stejné jako v C#, VB.NET Pouze na managed haldě Přístup přes handly Dereference handlu: * Přístup k položkám: -> Alokace přes gcnew Trida ^t = gcnew Trida(); Jednoduchá dědičnost

Konstruktor Metoda s názvem jako třída Volána při deklaraci nebo gcnew Destruktor Bezparametrická metoda s názvem ~třída() Odpovídá Dispose Implikuje implementaci IDisposable Finalizer Berparametrická metoda s názvem!třída() Při ničení objektu GC

Trida t; // alokace referenčního typu jakoby na stacku Ve skutečnosti alokace na haldě Přiřazení (např. t1 = t2;) Vyžaduje operator = provádějící kopírování t1 i t2 jsou pořád různé objekty, jen se stejným obsahem! Předání funkci jako parametr pomocí copy ctoru Definovaná doba života Ne podle referencí (GC) Destruktor (Dispose) při vyjití z bloku

Omezení: 1 třída, rozhraní (dané.netem) Nekombinovat nativní a managed třídy Syntaktické odlišnosti: Klíčové slovo abstract u metody Ekvivalent =0 Override nebo new Povinně, za název metody při overridu nebo hidingu Abstract u třídy Abstraktní třída nepovinné, způsobuje warning Konstruktor VTable pointer ukazuje VŽDY na posl. potomka

Virtuals.cpp

public ref class Trida { public: static int X; protected private: int PP; };

Members: Třídy: Private public

MSDN referenční dokumentace, některé postupy http://vbnet.cz/ - článek o C++/CLI Ebooky na českém MSDN Od úplných programátorských začátků Google, Bing

Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces Třídy, vlastní typy Hodnotové typy Managed halda, referenční objekty Stack semantics pro referenční objekty Polymorfismus Viditelnost

Zatím neznámé datum Další vlastnosti objektového modelu Property, eventy, intefraces Generika + šablony Výjimky Pointery Užší spolupráce nativních a managed dat Pokročilé hostování managed assembly v čistě nativní aplikaci

E-mail: jakub@jcermak.cz WWW: http://www.jcermak.cz

2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.