Assembly a jazyková interoperabilita
|
|
- Simona Fišerová
- před 7 lety
- Počet zobrazení:
Transkript
1 1 Assembly a jazyková interoperabilita Cílem následující ukázky je poskytnout p ř íklad naznač ující jen ně co málo více, než je hello, world. Bude se jednat o malou knihovnu pro ř ešení kvadratické rovnice. Téma opravdu elementární, pro demonstrač ní úč ely však bohatě stač í. Tuto knihovnu spat ř íte v ně kolika programovacích jazycích, což nám p ř edstaví.net platformu jako vícejazykovou, provázanou s mnoha svě ty 1. Navíc si také p ř iblížíme pojem rodina jazyků C, kam C# pat ř í. Na platformě.net jsou assembly soubory s p ř íponou *.exe nebo *.dll, obsahující jednu nebo více t ř íd p ř eložených do mezijazyka CIL. Kromě tohoto ř ízeného kódu obsahují v tzv. manifestu rovně ž metadata, t.j. sebepopisné informace o tě chto t ř ídách a mohou obsahovat i další atributy. Pokud chceme budovat knihovnu, je žádoucí její t ř ídy zkompilovat do samostatného assembly s p ř íponou *.dll. Takové assembly neobsahuje vstupní bod, metodu Main(). Knihovnu mů žeme potom znovu použít v jiné aplikaci, bez nutnosti kompilovat opakovaně zdrojový kód. Mů žeme zač ít návrhem t ř ídy v nadjazykové podobě, pro tento úč el byl vytvo ř en Unified Modelling Language UML jazyk. Na obrázku je vidě t UML diagram popisující č lenské promě nné (složky, fields) a č lenské funkce (metody) které chceme implementovat. Rovně ž vidíme, že každá t ř ída.netu je potomkem t ř ídy System.Object. 1 Ř íká se tom Cross Language Interoperability
2 2 Vhodným nástrojem (nap ř. MS Visio, které je souč ástí Visual Studia.Net Architect) lze z tohoto diagramu vygenerovat kostru zdrojového kódu. Ta vypadá v C# takto using System; namespace KvadrRovLib public class Solver private double a,b,c; public Solver() public void Read() public void Solve() private double Read(string caption) private double discriminant(double a,double b,double c)
3 3 a na cvič ení mů že být nabídnuta k doplně ní kódu. A takhle vypadá kostra ve Visual Basicu.Net (VB). VB nepat ř í do rodiny C a je to vidě t. Imports System Namespace KvadrRovLib Public Class Solver Inherits Object Private a As Double Private b As Double Private c As Double Public Sub Solver () End Sub Public Sub Read () End Sub Public Sub Solve () End Sub Private Function Read (ByVal caption As String) As Double End Function Private Function discriminant (ByVal a As Double, _ ByVal b As Double, _ ByVal c As Double) _ As Double End Function End Class End Namespace Visio umí vygenerovat i kostru pro ANSI/ISO C++. Jazyk C++ je následník jazyka C, který jej uvedl do svě ta objektového programování a byl šlágrem 90tých let minulého století. V C++ 2 musíme mít hlavič kový (*.h) soubor, který je pot ř eba ší ř it společ ně s binárními soubory. Ta totiž v C++ na rozdíl od assembly neobsahují metadata ( v p ř ípadě data o funkcích, t ř ídách, metodách...). #ifndef SOLVER #define SOLVER #include <string> using namespace std; namespace KvadrRovLib class Solver private: double a,b,c; public: Solver(); void Read(); void Solve(); private: double Read(string caption); 2 Takhle vypadá neř ízená varianta C++, Visual C++ umí generovat i ř ízený kód. Zdrojový kód pro ř ízené C++ je v dodatku.
4 4 double discriminant(double a,double b,double c); ; #endif // SOLVER A zde je soubor *.cpp s kostrou definic metod #include ".\solver.h" namespace KvadrRovLib Solver::Solver() void Solver::Read() void Solver::Solve() double Solver::Read(string caption) double Solver::discriminant(double a,double b,double c) Protože jsou definice oddě leny od deklarací, je nutno u každé metody znovu dodat vazbu na metadata. Tím myslím, že p ř ed identifikátorem metody stojí oddě leno č ty ř teč kou :: jméno t ř ídy, ke které metoda náleží. Rovně ž je p ř ítomen p ř íkaz preprocesoru #include, kterým umožníme kompilátoru C++ provést kontrolu metadat. V.Netu, jak již víme, jsou metadata integrální souč ástí assembly a proto ani č ty ř teč ku ani hlavič kové soubory s deklaracemi neuvidíme. Metadata si vygenerují v procesu kompilace a jsou neodluč ně spojena s ř ízeným kódem v assembly. Vrať me se proto rychle k našemu C#. Po doplně ní tě l metod zdrojový kód vypadá takto: Matematická knihovna v C# (Solver.cs) 1 using System; 2 namespace KvadrRovLib 3 4 public class Solver 5 6 public Solver() 7 8 Random rand = new Random(); 9 a = rand.nextdouble(); 10 b = rand.nextdouble(); 11 c = rand.nextdouble(); private double a, b, c; private double Read(String caption) Console.WriteLine(caption); 19 return double.parse(console.readline()); public void Read() a = Read("a:");
5 Ř 5 25 b = Read("b:"); 26 c = Read("c:"); private double discriminant(double a, double b, double c) return b*b-4*a*c; public void Solve() double d = discriminant(a,b,c); 37 if (d == 0) Console.WriteLine(- b / (2 * a)); 40 return ; if (d > 0) Console.WriteLine((- b + Math.Sqrt(d))/(2*a)); 45 Console.WriteLine((- b - Math.Sqrt(d))/(2*a)); else double r = Math.Sqrt(- d) / (2 * a); 50 Console.WriteLine("0+1i",- b/ (2 * a),r); 51 Console.WriteLine("0-1i",- b/ (2 * a),r); Na ř ádku 6 je deklarován implicitní konstruktor t ř ídy Solver. Implicitní znamená, že nemá parametry. Pokud bychom ho nenapsali, doplní si jej p ř itom p ř ekladač automaticky sám (prázdný). My jsme implicitní konstruktor napsali. Funkcí konstruktorů je inicializovat data a uvést instance t ř ídy do provozuschopného stavu. Proto se konstruktory volají automaticky p ř i vytvá ř ení instancí (objektů ). To se právě dě je na ř ádku 8, kde je vytvá ř ena instance rand t ř ídy System.Random. T ř ída Solver má t ř i č lenské privátní promě nné typu double pro koeficienty kvadratické rovnice. Na ř ádcích 9 11 jsou tyto promě nné inicializovány pomocí volání metody NextDouble() objektu rand. ádkem 16 zač íná privátní metoda Read s parametrem caption typu string. Jejím úč elem je p ř eč íst promě nnou typu double a p ř edat ji jako návratovou hodnotu. Parametr caption slouží jako návě ští pro uživatele. Ř ádek 19 return double.parse(console.readline()); volá statickou metodu Parse t ř ídy double, která se pokusí zkonvertovat ř etě zec p ř eč tený z klávesnice na reálné č íslo s dvojitou p ř esností, v opač ném p ř ípadě se vyhodí výjímka, tu však pro jednoduchost neodchytáváme.
6 Ř 6 ádek 37 if (d == 0) obsahuje dvojité == což je logický test rovnosti (v C rodině tradič ní) jednoduché = je p ř i ř azovací p ř íkaz (v Pascalu = a :=, VB si pochopí sám). Koneč ně následující ř ádek 50 Console.WriteLine("0+1i",- b/ (2 * a),r); obsahuje zajímavou variantu statické metody WriteLine. Prvním parametrem je formátovací ř etě zec, který obsahuje znač ky 0,1,,n. Za formátovacím ř etě zcem následují parametry par0, par1,...,parn. Metoda WriteLine zkonvertuje parx na ř etě zec a substituuje jím všechny výskyty znač ek x ve formátovacím ř etě zci. Výsledný ř etě zec se objeví jako nový ř ádek textu na konzole. Zbytek kódu je snad sdostatek sebepopisný. Program v C# používající tuto knihovnu (KvadrRov1.cs) 1 using System; 2 using KvadrRovLib; 3 4 namespace kursycs 5 6 class TridniObal 7 8 static void Main() 9 10 Solver sol = new Solver(); 11 sol.solve(); 12 sol.read(); 13 Console.WriteLine("Reseni:"); 14 sol.solve(); 15 Console.ReadLine(); Na ř ádku 2 vidíme p ř íkaz using KvadrRovLib, který nám umožní zkrátit identifikátory. Soubor deklaruje t ř ídu TridniObal která bude souč ástí jmenného prostoru kursycs. Metoda Main() obsahuje na ř ádku 10 p ř íkaz new, který vytvo ř í instanci t ř ídy KvadrRovLib.Solver a odkaz (adresu) na tuto instanci uloží do promě nné sol typu KvadrRovLib.Solver. Na ř ádcích se sekvenč ně volají ve ř ejné (public) metody naší t ř ídy Solver. Nejd ř íve je voláno Solve() nad stavem instance sol, do kterého ji uvedl implicitní konstruktor. Vy ř eší se kvadratická rovnice s koeficienty vygenerovanými náhodným generátorem. Poté mů že uživatel zadávat svoje koeficienty a odeč íst ř ešení z
7 7 konzoly. Na 15. ř ádku se č eká na Enter, což v jistých situacích zamezí neč ekanému zmizení konzolového okna. P eklad a spušt ní programu Knihovnu a program ji používající p ř eložíme do ř ízeného kódu (CIL) p ř íkazy csc /target:library solver.cs csc kvadrrov1.cs /reference:solver.dll Nezapomeň te si nejd ř íve nastavit prost ř edí. V pracovním adresá ř i vznikly dvě assembly solver.dll a kvadrrov1.exe. Parametr /target:library za ř ídí, že vzniklé assembly bude mít p ř íponu *.dll. Pokud tento parametr neuvedeme, p ř eklad skonč í chybou, protože pro *.exe je vyžadována p ř ítomnost metody Main(). Parametr /reference zjistí na základě metadat v assembly solver.dll zda jsou p ř ítomny všechny t ř ídy a metody volané z kvadrrov1.cs a uloží vazbu na solver.dll do assembly kvadrrov1.exe. Spustíme kvadrov1.exe Samoz ř ejmě, že náš program mohl vzniknout jako jediné assembly, nap ř. tak, že bychom obě t ř ídy umístili do jediného souboru a rovně ž st tak zjednodušili p ř íkazy pro kompilaci. Takto ale mů žeme použít kdykoliv t ř ídu KvadrRovLib.Solver aniž bychom manipulovali se zdrojovým kódem. Dodatky pro zvlášť odolné jedince Platforma.Net podporuje mnoho jazyk S Visual Studiem 2003 dostanete 5.Netových jazyků C#, J#, Jscript, VB, C++ (to umí i nativní kód a je dodáno s nativními knihovnami) 3. Dalších více než 20 jazyků mů žete získat z jiných, č asto univerzitních zdrojů. 3 C++, C#, J#, Jscript patř í do rodiny C jazyků
8 8 MS.Net je navržen tak, aby si každý vývojář mohl vybrat jazyk podle toho, který např. nejvíce umí, nebo spíše ten který, se pro danou problematiku nejvíce hodí. Č asto se jedná o tradici. Intenzivní výpoč ty se např. programují nejč astě ji ve Fortranu, nově ji pak v C++, Javě a C#. Samozř ejmě se rozhodují vě tšinou týmy a jednotlivci se musí př izpů sobit. Nejdů ležitě jší je v moderním vývoji znovupoužitelnost kódu a tehdy se musejí př ekonávat jazykové bariéry. Program ve finanč nictví psaný ve Visual Basicu např. potř ebuje používat knihovnu psanou v C++. K tomu dř íve sloužil a slouží COM a CORBA, což jsou složité a tě žkopádné technologie. V.Netu to prostě díky společ ným typů m (CTS Common Type Specification) a stavbě jazyků (Common Language Specification) není žádný problém. Samozř ejmě musí jít o programy psané pro.net verze tě chto jazyků, používající FCL. V následující ukázce pů jde ještě o více. Sun Java má mnoho společ ných rysů s.netem, je ovšem v podstatě jednojazyková. Existuje velké množství kódu v javě. Př edpokládejme, že máme př ístup ke zdrojovému kódu. Mů žeme si vybrat.netový jazyk který je Sun Javě velmi blízko, je to J#. Pomocí kompilátoru J# (vjc.exe) mů žeme vyrobit ř ízený modul, který potom budeme modifikovat např. ve Visual Basicu a používat nakonec v C#. Mů žeme ovšem rovně ž použít Java Conversion Assistant pro (polo)automatickou konverzi zdrojového kódu Javy na zdrojový kód C#. Java má v.netu trochu vě tší podporu, než by se č ekalo, do jisté míry je podporován nejen jazyk, ale i runtime (Java platforma). V př edchozím jsme napsali knihovnu na ř ešení kvadratické rovnice, mohli jsme si to ale odpustit, kdybychom mě li k dispozici zdrojový kód v Sun javě. Matematická knihovna v isté Sun Jav (Solver.java) package KvadrRovLib; public class Solver public Solver() a=math.random(); b=math.random(); c=math.random(); private double a,b,c; private double Read(String caption) byte[] buf = new byte[100]; System.out.println(caption); double r=0; try System.in.read(buf); catch(java.io.ioexception exc) System.out.println(exc.toString());
9 9 String str = new String(buf).trim(); r = Double.parseDouble(str); return r; public void Read() a = Read("a:"); b = Read("b:"); c = Read("c:"); private double discriminant(double a, double b, double c) return b*b-4*a*c; public void Solve() double d = discriminant(a,b,c); if(d==0) System.out.println(-b/(2*a)); return; if(d>0) System.out.println((-b+Math.sqrt(d))/(2*a)); System.out.println((-b-Math.sqrt(d))/(2*a)); else double r = Math.sqrt(-d)/(2*a); System.out.print(-b/(2*a)); System.out.print("+"); System.out.print(r); System.out.print("i"); System.out.println(); System.out.print(-b/(2*a)); System.out.print("-"); System.out.print(r); System.out.print("i"); System.out.println(); Program v Jav používající tuto knihovnu (KvadrRov.java) import KvadrRovLib.*; public class KvadrRov public static void main(string[] args) Solver sol = new Solver();
10 10 sol.solve(); sol.read(); System.out.println("Reseni:"); sol.solve(); Jak to sestavíme a spustíme pod Sun JDK (Java Development Kit)? JDK je obdobou.net SDK, obsahuje základní nástroje nutné pro vývoj aplikací. Nejdř íve si ově ř íme zda máme JDK nainstalováno. Uložíme-li soubor KvadrRov.java do adresář e ř ekně me Kvadratice, je nutno uložit soubor Solver.java do podadresář e Kvadratice\KvadrRovLib. KvadrRovLib je název balíč ku - package, java alternativě prostoru jmen a jak se zdá Java pro prostory jmen př ímo používá adresář ový strom. 4 Zjistíme si, v kterém adresář i leží JDK adresář bin a napíšeme si následující dávku (buildjava.bat). set jdkbin=c:\jbuilder9\jdk1.4\bin cd kvadrrovlib %jdkbin%\javac.exe solver.java cd.. %jdkbin%\javac.exe -classpath. kvadrrov.java Pokud dávku spustíme, vytvoř í se v odpovídajících adresář ích ke každému souboru *.java soubor *.class obsahující tzv. byte kód (obdoba CIL). Pro spuště ní programu si napíšeme následující dávku (run.bat) set jdkbin=c:\jbuilder9\jdk1.4\bin %jdkbin%\java.exe -classpath. KvadrRov Probě hne JIT př eklad a JVM (Java Virtual Machine) spustí kód: Uvě domíme si, že v Javě velké množství tř íd znamená velké množství *.class souborů uložených ve stromové adresář ové struktuř e 5 simulující prostory jmen. 4 Zdrojový soubor *.java nesmí rovně ž obsahovat více než jednu veř ejnou tř ídu. 5 To je dů vod, proč se dále balí do *.jar archívů.
11 11 Knihovnu použijeme pod.net frameworkem Nad adresář em Kvadratice nastavíme prostř edí SDK (máme zavě šeno kafe). Zadáním př íkazu vjc /target:library KvadrRovLib/solver.java vyrobíme př ekladač em J# v adresář i KvadrRov assembly solver.dll obsahující ř ízený kód se tř ídou Solver. Toto assembly mů že rozvinout tým VB programátorů, který v každé tř ídě implementuje metodu about(). Tady je př íslušný kód Imports KvadrRovLib, System Public Class VBSolver Inherits Solver Public Function About() As String Console.WriteLine("Kvadraticka rovnice:") End Function End Class uložme jej do souboru VBSolver.vb. Př íslušné assembly z potomkem VBSolver př eložíme př ekladač em Visual Basicu vbc vbsolver.vb /reference:solver.dll /t:library kde referencujeme zdě dě ný kód ze solver.dll. Koneč ně vše použijeme v C# programu using System; using KvadrRovLib; namespace kursycs class TridniObal static void Main(string[] args) VBSolver sol = new VBSolver(); sol.about(); sol.solve(); sol.read(); Console.WriteLine("Reseni:"); sol.solve(); Console.ReadLine(); Vše př eložíme a sestavíme př íkazem csc kvadrrov.cs /r:solver.dll /r:vbsolver.dll
12 12 Vzniklé assembly kvadrrov.exe spustíme obvyklým způ sobem, tady je výsledek Kromě př íspě vku VB týmu (Kvadratická rovnice) vidíme rovně ž, jak.net na rozdíl od Javy podporuje automaticky č eskou kulturu (desetinná č árka). Implementace knihovny v MC (Managed C++) Ano C++ je jedním z jazyků.netu, dosahuje se toho pomocí tzv. ř ízených rozšíř ení (managed extensions). V našem př ípadě je to klíč ové slovo gc př ed slovem class, které instruuje př ekladač k vytvoř ení ř ízené tř ídy, jejíž životnost spravuje sbě rač odpadků Garbage Collector. // SolverMC.h #pragma once using namespace System; namespace KvadrRovLib public gc class Solver private: double a,b,c; public: Solver() Random* rand = new Random(); a = rand->nextdouble(); b = rand->nextdouble(); c = rand->nextdouble(); void Read()
13 13 a=read("a:"); b=read("b:"); c=read("c:"); void Solve() double d = discriminant(a,b,c); if (d == 0) Console::WriteLine(- b / (2 * a)); return ; if (d > 0) Console::WriteLine((-b+ Math::Sqrt(d))/(2*a)); Console::WriteLine((-b-Math::Sqrt(d))/(2*a)); else double x = - b/ (2 * a); double y = Math::Sqrt(- d) / (2 * a); Console::WriteLine("0+1i", box(x), box(y)); Console::WriteLine("0-1i", box(x), box(y)); private: double Read(String* caption) Console::WriteLine(caption); return Double::Parse(Console::ReadLine()); double discriminant(double a,double b,double c) return b*b-4*a*c; ; Implementace knihovny v Ansi/ISO C++ Zde je implementace v C++ podle normy ANSI/ISO, jazyce, který zů stal ve Visual Studiu a s.netem komunikuje prostř ednictvím MC (viz výše). Hlavič kový soubor solver.h je ten co už byl uveden. Obsahuje př íkaz using namespace std naznač ující použití standardní knihovny STL, která je souč ástí normy jazyka. #include ".\solver.h" #include <iostream> #include <cmath> #include <cstdlib> #include <ctime> #include <limits>
14 14 namespace KvadrRovLib Solver::Solver() srand( (unsigned)time( NULL ) ); double m = (double)numeric_limits<int>::max(); a = rand()/m*1000; b = rand()/m*1000; c = rand()/m*1000; void Solver::Read() a=read("a:"); b=read("b:"); c=read("c:"); void Solver::Solve() double d = discriminant(a,b,c); if (d == 0) cout << - b / (2 * a) << endl; return; if (d > 0) cout << (- b + sqrt(d)) / (2 * a) << endl; cout << (- b - sqrt(d)) / (2 * a) << endl; else double r = sqrt(- d) / (2 * a); cout << - b/ (2 * a) << "+" << r << "i" << endl; cout << - b/ (2 * a) << "-" << r << "i" << endl; double Solver::Read(string caption) cout << caption << endl; double r; cin >> r; return r; double Solver::discriminant(double a,double b,double c) return b*b-4*a*c; A ještě kód klienta: #include "./solver.h" using namespace KvadrRovLib; int _tmain(int argc, _TCHAR* argv[]) Solver* psolver = new Solver();
15 15 psolver->solve(); psolver->read(); psolver->solve(); delete psolver; return 0; Ješt m žeme vytvo it ízenou obálku (managed wrapper) Máme-li zajímavý kód v ANSI/ISO C++ a nemů žeme-li jej z ně jakého dů vodu př epsat do ně jakého.netového jazyka (nejlepší by byl MC), vyrobíme tzv. ř ízený obal. Dů vodem proč nechceme kód př epsat mů že být zachování výkonu. MC optimalizuje více než C#, ale na nativní C++ nemá. Tady vidíme plnou sílu Visual C++. Ř ízený kód je mixován s neř ízeným. Je vytvoř en odkaz na neř ízený objekt psolver a všechna volání metod jsou př evedena na ně j. Jak vidíme ř ízená tř ída mů že mít i destruktor. Trochu si asi budete muset pohrát s linkerem (smíšený kód v dll), ale zdrojový kód obálky je prů zrač ný. #include ".\solver.h" using namespace System; namespace KvadrRovLib public gc class SolverMC private: Solver* psolver; public: SolverMC()pSolver = new Solver(); ~SolverMC()delete psolver; void Read()pSolver->Read(); void Solve()pSolver->Solve(); ; A pro úplnost kód klienta v C#. using System; using KvadrRovLib; namespace KursCS class TridniObal static void Main() SolverMC solver = new SolverMC(); solver.solve(); solver.read(); solver.solve();
16 16 Assembly je ješt t eba ádn zatemnit Když se podíváme nástrojem ILDasm na assembly s knihovnou KvadrRovLib, s hrů zou si uvě domíme, jak snadné mů že být reverzní inženýrství našeho kódu. Visual Studio 2003 obsahuje zatemň ovač == obfuscator, komunitní DotFuscator. Po jeho použití se všechno krásně zatemní. Musíte si ovšem zatemnit všechny assembly aplikace naráz, jinak si nebudou rozumě t. Assembly se př idávají na záložku Trigger Files. Rovně ž je potř eba nastavit adresář e na záložce Build. DotFuscator najdete v nabídce Visual Studio.Net Tools (stejně jako shortcut na vsvars32.bat v př edchozí lekci).
17 17
MSDN == Microsoft Developer Network Library
1 MSDN == Microsoft Developer Network Library je živá (tj. webová) dokumentace ke všem produkt ů m tohoto softwarového giganta. Na webu je př ístupná každému zdarma. Verze na CD (3CD, resp. další 3CD pro
Prostory jmen. #include<iostream.h> namespace RadimuvProstor { int secti(int a, int b); class Trida { private: int Atribut; public: void metoda();
Prostory jmen. Prostor jmen je oblast platnosti identifikátorů. Představme si situaci, kdy budeme chtít mít v jednom programu stejné identifikátory (názvy tříd, proměnných, metod, funkcí atd...). Nelze
Programovací jazyk Úvod do programování v C#
Programovací jazyk C# Úvod do programování v C# Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz .NET Framework Dramaticky zjednodušit
<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
Programovací jazyk C# Úvod do programování v C#
Programovací jazyk C# Úvod do programování v C# Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz.net Framework Dramaticky zjednodušit
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
Programovací jazyk C# Úvod do programování v C#
Programovací jazyk C# Úvod do programování v C# Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz.net Framework Dramaticky zjednodušit
Funkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.
Architektura COM 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 Historie Component Object Model (COM)
Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní
Základy jazyka C# 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 Architektura.NET Historie Vlastnosti
MANUÁL PRO PRÁCI S POČÍTAČOVÝM PROGRAMEM SLUNÍČKO
UNIVERZITA PALACKÉHO V OLOMOUCI Pedagogická fakulta Katedra speciální pedagogiky RADKA BENEŠOVÁ III. roč ník prezenč ní studium obor: speciální pedagogika př edškolního vě ku MANUÁL PRO PRÁCI S POČÍTAČOVÝM
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
PREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom
Poznámky k virtuálním metodám aneb co když zkoušíme překladač zlobit... Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom chtěli). Pokud neuvedeme
IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
Programování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java
3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java Studijní cíl V tomto bloku navážeme na konec předchozího bloku a seznámíme se s vývojovými prostředími, které se nejčastěji používají
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
Programování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
1 - Úvod do platformy.net. IW5 - Programování v.net a C#
1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní
Konstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
PROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
Používáme Visual Studio
1 Používáme Visual Studio Okenní klient knihovny KvadrRovLib Založíme-si nový projekt podle obrázku. Bude se jednat o okenní aplikaci, která nám zp ř ístupní práci s naší knihovnou v p ř íjemném GUI prost
Jazyk C# přednáška 01. Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015
Jazyk C# přednáška 01 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015 Přednáší Ing. Jan Hřídel (@h0nza) jan.hridel@upce.cz 466 037 178 V pochvalných i kritických tweetech z přednášky
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
IRAE 07/08 Přednáška č. 7. Začátek (head)
Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Úvod do programování v jazyce Java
Úvod do programování v jazyce Java Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 5. říjen, 2011 Petr Krajča (UP) KMI/UP3J: Seminář I. 5.10.2011 1 / 17 Organizační informace email: petr.krajca@upol.cz
Abstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.
Nadpis kapitoly Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem. Klíčové pojmy: Překladač, editor, compiler, linker. Úvod Abychom mohly využívat našich napsaných programů, musíme
Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics
Java Cvičení 01 http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Příklady - Porovnání Co kód vypíše? package cz.cuni.mff.java.example01.tests; public class Test01
Soubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
Vector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
Seznámení s prostředím dot.net Framework
Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Úvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová
Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit
Více o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Seminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
Mělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
RMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Generické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Komponenty v.net. Obsah přednášky
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í
Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března
Dědičnost Cíle lekce Cílem lekce je naučit se pracovat a využívat dědičnosti při návrhu a tvorbě programů. Lekce je zaměřena hlavně na jednoduchou dědičnost. Bude rovněž vysvětlen rozdíl mezi dědičností
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
První kapitola úvod do problematiky
První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru
Množina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120
Základní informace o struktu e dat: Komise (nadkomise) obsahují leny schválené VR (po jejich identifikaci v SIS, p íp. dopln ní budou obsahovat všechny schválené leny, po novém za azení se vyplní datum
Programování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
Kapitola 5 WCF, webové služby a mezidoménové zásady
Kapitola 5 WCF, webové služby a mezidoménové zásady Silverlight 2 přináší obrovské množství nástrojů, s jejichž pomocí lze vytvářet propracovaná uživatelská rozhraní. Může také využívat různé služby v
3 KTE / ZPE Informační technologie
3 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Komentáře
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Sazba zdrojových kód. Jakub Kadl ík 20. 03. 2014
Sazba zdrojových kód Jakub Kadl ík 20. 03. 2014 1 Obsah 1 Základní prost edí verbatim 3 2 Balí ek listings 3 3 Sazba kódu z externího souboru 5 4 Téma Solarized 5 4.1 Solarized light.............................
Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března
Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.
Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
Dotazování nad stromem abstraktní syntaxe
Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 3.6.2010 Osnova while 1 Reprezentace programu 2 AST a Java 3 Vyhledávání v AST 4 Aplikace body if expr Jak reprezentovat program
přetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
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/04.0006
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/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Java - výjimky. private void vstup() throws IOException {... }
Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace
Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25
Programování v C# Úvodní slovo 1 / 25 Obsah přednášky Seznámení s předmětem Co je.net Vlastnosti.NET 2 / 25 Kdo je kdo Petr Vaněček vanecek@pf.jcu.cz J 502 Václav Novák vacnovak@pf.jcu.cz?? Při komunikaci
Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.
C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme
Java a XML. 10/26/09 1/7 Java a XML
Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Visual Studio Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 19,2 Číslo: V/5 Programování
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.9 10/14
ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 5.9 10/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 31 0:40 Programovací jazyky Programovací jazyky jsou jazyky
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník 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 Abstraktní datové typy omezené rozhraní
Algoritmizace. Cíle předmětu
Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule
20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
Jazyk C++ II. Šablony a implementace
Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);
TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;
Remote Method Invocation RMI
Remote Method Invocation RMI Java TM Remote Method Invocation (RMI) umožňuje objektu na jedné Java Virtual Mashine(JVM) jednoduše spustit metodu jiného objektu na vzdálené JVM. Při volání vzdálené metody
11.5.2012. 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
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Datové abstrakce v programovacích jazycích
Datové abstrakce v programovacích jazycích Motivace Strukturovat rozsáhlé programy Dovolit separátní překlad Možné formy strukturování: Podprogramy původní forma abstrakce -abstrakce výpočtů Moduly kontejnery
IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku
Podprogramy zásady: jednu věc programovat pouze jednou podprogram logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku // nacteni strany 1 double
C++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v
IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí
Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální
Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)
Osnova přednášky Programové prostředky řízení Úvod do C# II. Členy (Members) Jmenné prostory (Namespaces) Třídy (Classes) Struktury (Structs) Pavel Balda Západočeská univerzita v Plzni, FAV, KKY 2 Členy