Programování v jazyku Java RMI, vnitřní a vnořené třídy, generika

Rozměr: px
Začít zobrazení ze stránky:

Download "Programování v jazyku Java RMI, vnitřní a vnořené třídy, generika"

Transkript

1 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programování v jazyku Java RMI, vnitřní a vnořené třídy, generika BI-PJV Programování v jazyku Java Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké učení technické

2 RMI = Remote Method Invocation Tato technologie využívá vzdálené objekty tím, že volá jejich metody. Argumenty metod jsou požadavky a metoda případně vrátí výsledek. Vzdálený objekt existuje v jiné JVM - povětšinou na jiném počítači. Klient komunikuje se vzdáleným objektem pouze přes interfejs, který: musí být potomkem interfejsu Remote všechny jeho metody throws RemoteException Vlastní vzdálený objekt, tj. implementace, musí být: realizací programátorem definovaného interfejsu potomkem třídy - java.rmi.server.unicastremoteobject či Activatable ( ta zařídí export ) - anebo musí být explicitně exportován metodou java.rmi.server.unicastremoteobject.export(...).

3 Klient - Server Vývojář odpovídá pouze za definice interfejsů a implementujících tříd -nemusí se starat o komunikační protokol. Původně musel zajistit generaci stubu a sketetonu pomocí dodatečného kompilátoru rmic od verze 1.5 se tyto vytvářejí automaticky. JVM Java RMI client (application layer) stub RRL Transport layer socket factory socket JRMP on TCP/IP JVM Java RMI server (application layer) skeleton RRL Transport layer RRL = Remote Reference Layer

4 RMI Unicast RemoteObject Remote Security Manager registry MojeTrida MujInterfejs Registry stub rmic client server new p gor MujInterfejs stub RMI / IIOP skel eton object mar Pro v1.2 je skeleton integrován v UnicastRemoteObject

5 Spouštění RMI 1. Server vytvoří jeden vzdálený objekt a předá serializovaný stub do registry k registraci. Ten realizuje výpočet i pro více klientů. 2. Klient získá od registry handle ke vzdálenému objektu. 3. Registry mu vrátí serializovanou kopii stubu. Klient z ní vytvoří instanci stubu. Pro další komunikaci klient-server není registry nutná. 1. Klientský program zavolá nějakou metodu stubu. 2. Stub kontaktuje skeleton v serveru. 3. Skeleton zavolá metodu vzdáleného objektu. Při každém zavolání vytvoří server nové vlákno, které provede výpočet v metodě. 4. Metoda vrátí výsledek skeletonu. 5. Skeleton vrátí výsledek stubu. 6. Stub vrátí výsledek klientskému programu.

6 Remote ( tag interface ) javax.management.remote.rmi RMIServer RMIServer Impl RMIIIOP ServerImpl java.rmi.* RMIJRMP java.rmi.registry Registry Locate Registry ServerImpl Distributed Garbage Collection java.rmi.dgc Marshalled DGC Lease VMID Object java.rmi.activation Naming ActivationInstantiator Activation Activation java.lang ActivationMonitor Desc GroupDesc Security Manager ActivationSystem Activator Activation ID Activation GroupID RMISecurity Manager

7 tag interface java.rmi.server java.rmi Remote javax.rmi.corba.stub _Remote_Stub Remote Stub Remote Object Remote Server java.rmi.activation Activable java.io Externalizable RemoteRef Unreferenced Unicast ServerRef RMIConnection Impl RMIConnection Impl_Stub RemoteObject java.rmi.activation Activation Group RMIClass LoaderSpi RMIClass Loader RMIServer javax.management.remote.rmi Activation Group_Stub java.rmi.activation ActivationInstantiator java.rmi.activation UID ObjID RMIClientSocketFactory RMISocket Factory RMIServerSocketFactory Portable RemoteObject RMIFailureHandler

8 interfejs java.rmi.registry public void bind( String name, Remote obj ) throws RemoteException, AlreadyBoundException, AccessException public void unbind( String name ) throws RemoteException, NotBoundException, AccessException public void rebind( String name, Remote obj ) throws RemoteException, AccessException public String[ ] list( ) throws RemoteException, AccessException public Remote lookup( String name ) throws RemoteException, NotBoundException, AccessException

9 Registry čili registratura umožňuje evidovat vzdálené objekty pod jednoduchým jménem. Klient jejím prostřednictvím může navázat spojení se serverem. Registry není perzistentní. Může být spuštěna v rámci OS nebo JVM. Každý servrový proces může udržovat vlastní registry nebo sdílet jedinou podporující všechny virtuální stroje na lokálním systému. Registry se vytvoří zavoláním rmiregistry.exec [ port 1099 ], z adresáře classes anebo se tam zkopíruje jdk/bin. ( Ve Windows je třeba zkopírovat také jli.dll, tj. application extension. ) Registry se ovládá statickými metodami třídy java.rmi.naming: bind, unbind, rebind, list a lookup

10 Použití Registry reg = LocateRegistry.createRegistry( port ); //SINGLETON reg.bind( "Moje", new MojeTrida( ) ); Spuštění zevnitř: Runtime.getRuntime( ).exec( "rmiregistry" ); Runtime.getRuntime( ).exec( "rmid J-Djava.security.policy=rmid.policy" ); javaw background in Win

11 Využití RMI Naming Service Klient vyhledá vzdálený objekt jménem takto: rmi://host:port/name v metodě Naming.lookup. ( Defaultně: rmi localhost 1099.) Např.: String id = "rmi://" + host + ":" + port + "/Moje" ; MujInterfejs z = ( MujInterfejs ) Naming.lookup(); z.metoda1(... );

12 java.rmi.marshalledobject Po deserializaci instance MarshalledObject není její obsah deserializován. Obsahuje totiž pole bytů, které může být později interpretováno jako objekt. Codebase URL je uložen uvnitř této struktury a ukazuje kde jsou příslušné classy uloženy pro automatické stažení. Tedy lze deserializovat na strojích nemající patřičnou třídu v classpath. Objekty mohou být předávány přes více strojů aniž jsou plně deserializovány. ArrayList data =... MarshalledObject mo = new MarshalledObject( data ); Object o = mo.get( );

13 Dřívější příprava stubu a skeletonu Pro uskutečnění spojení mezi klientem a serverem je třeba na straně klienta vytvoří tzv. stub. ( V Javě 1.1 bylo nutné ještě na straně serveru vytvářet tzv. skeleton. ) To zařizuje speciální kompilátor rmic, který se nalézá v j2sdk/bin/... Stub vytváří rmic podle třídy vzdáleného objektu. V JBuilderu je proto nutno u těchto tříd zvolit: -> Properties Generate RMI stub/skeleton Options: -keep v1.2 Při rebuild se v patřičném podadresáři balíčku v classes\...\ vytvoří MojeTrida_Stub.class a v adresáři classes\generated Source\...\MojeTrida_Stub.java.

14 Aktivace objektů Aktivatabilní objekty jsou zpravidla vedeny na separátní(ch) JVM. Tyto JVM se definují jako Activation Group - v ní je Activation Monitor, který sleduje všechny příslušné objektu a i tu grupu. Objekty i grupy mají ID a deskriptor. Activation group ActivationGroupID ActivationGroupDesc Activation Monitor Activatable object ActivationID ActivationDesc

15 Aktivační grupy Aktivátor vytváří aktivační grupy. Tím je RMI démon v jdk/bin/rmid.exe Aktivační grupy se vytvoří pomocí tříd z java.rmi.activation: ActivationGroupDesc gd = new ActivationGroupDesc( null, null ); ActivationGroupID gi = ActivationGroup.getSystem( ).registergroup( gd ); ActivationGroup.createGroup( gi, de, 0 ); // 0 na kterémkoli portu

16 Aktivatabilní objekty Implementace vzdáleného objektu je buď potomkem třídy Activatable ActivationGroup.create(... ) viz výše String[ ] names = {,, ; MarshalledObject mo = new MarshalledObject( names ); ActivationDesc desc = new ActivationDesc( gid, " ", null, mo ); Registrovat takto: RemoteObject stub = ( RemoteObject ) Activatable.register(desc); Naming.rebind( "MyRENOBject", stub ); anebo je exportován: V konstruktoru se přijme ActivationID id a MarshalledObject mo names = ( String[ ] ) mo.get( ); Activatable.export( this, id, 0 ); // export do RMIRegistry Tyto úpravy se týkají pouze serveru. Pro klienta je to transparentní.

17 Vnořené a vnitřní členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy X, X$Y a X$Y$Z. Z vidí členy všech svých obalů - nehledě na jejich modifikátory přístupu. [ public protected private ] [ strictfp ] - [ static ] [ abstract ] interface - vnořený (nested) interfejs - static [ abstract final ] class - vnořená (nested) třída vnitřní interfejsy neexistují - [ abstract final ] class - vnitřní (inner) třída - lokální: bez dalších modifikátorů - anonymní: bez hlavičky Krom anonymní třídy lze uvést extends resp. implements Vnořený člen má přístup jen ke static členům svých obalů. Může mít statické i nestatické členy. I statická třída má konstruktory. Vnitřní třídy nejsou static a kromě static final konstant nemohou deklarovat žádné statické členy - mohou je však zdědit.

18 Lokální třída je vnitřní třída deklarovaná v metodě, bloku či v dynam. inicializátoru. -jen s modifikátory [ strictfp ] [ abstract final ] -typ lokální třídy je známý v bloku až za její deklarací. -lze ji instanciovat pouze z vnitřku metody - není přístupná z vnějšku. -k lokálním proměnným a parametrům metody má přístup jen jsou-li finální, neboť nefinální sídlí jen dočasně na zásobníku. -sice return umožňuje objekt vrátit, avšak jeho vlastní typ není vně znám, neb v hlavičce metody nelze zadat jméno lokální třídy jako návratový typ. Lokální třída získá jméno s prefixem ze jmen vnějších tříd a pořadovým číslem metody $n v níž jsou deklarovány stejnojmenné lokální třídy. Tento typ, např. Out$3Loc, je vně neznámý, tudíž nelze jím přetypovat. Lze užít vně známých typů, které lokální třída rozšiřuje či implementuje. Lokální interfejs není možný - vnitřní interfejsy neexistují.

19 Anonymní třída je vnitřní třída bez hlavičky a tudíž: nemá jméno, modifikátory ani nelze použít extends či implements, nemůže mít potomky, nelze definovat žádné její konstruktory, má jen defaultní konstruktor neznámého jména, roli konstruktorů event. nahrazují nestatické inicializátory, instance anonymní třídy má jméno dle obalů ukončené $i, i>=1. TX x = new T( ) { // T je třída či interfejs // TX je T či jeho nadtyp či Object... // nestatické členy... // jen statické finální atributy ;

20 Adapter je obecně třída, implementující nějaký interfejs tak, že zděděné abstraktní metody přepíše na konkrétní - avšak prázdné. Adapter mívá triviální funkcionalitu a bývá s modifikátorem abstract. Slouží totiž jako předek potomkům, kteří mají některé metody přepsány na neprázdné, čímž získají žádanou funkcionalitu aniž programátor musí psát nepotřebné metody. Např.: interface java.awt.windowlistener má sedm metod. Adapter definovaný takto: abstract class WindowAdapter implements WindowListener je všechny metody konkretizuje prázdnými metodami. Ovládat okénko ikonou lze pomocí tzv. handleru, což je objekt vytvořený buď dle normální anebo anonymní třídy. Důležité je, že v obou případech je splněn interfejs WindowListener.

21 Použití adapteru Pojmenovaně: WindowListener wl = new WindowHandler( ); kde: class WindowHandler extends WindowAdapter { public void WindowClosing( WindowEvent ev ) { System.exit(0); // end of application či anonymně: WindowListener wl = new WindowAdapter( ) { public void WindowClosing( WindowEvent ev ) { System.exit(0); // end of application ;

22 Inner class Vnitřní třída umožňuje seskupit věcně související kódy a případně je skrýt. public class Outer { private int x; public class Inner { stack heap public void m( ) { x++; public void test( ) { Inner Outer.this Inner n = new Inner( ); m( this n.m( ); test( main( n this Outer x public static void main(... ) { Outer o = new Outer( ); o.test( );

23 Inner class public class Outer { private int x; stack heap public class Inner { public void m( ) { x++; Inner Outer.this public class OuterTest { public static void main(... ) { m( main( this n p Outer x Outer p = new Outer( ); Outer.Inner n = p.new Inner( ); // n = new Outer( ). new Inner( ); n.m( ); Instanciovat Inner lze jen prostřednictvím instance Outer.

24 Inner class public class Outer { private int x; public class Inner { private int x; public void m( int x ) { x++; this.x++; Outer.this.x++; x m( n main( p Inner Outer x Outer.this x

25 Local class public class Outer { private int x = 5; public Object get( final int y ) { final int z = 6; class Local { public String tostring ( ) { return ""+(x+y+z); return new Local( ); public static void main( String [ ] args ) { Outer p = new Outer( ); Object obj = p.get( 700 ); System.out.println( obj ); // vytiskne 711

26 Využití vnořených tříd Bod, úsečku, obdélník, elipsu atd. v rovině pojednávají balíčky java.awt s přesností int a java.awt.geom s přesností double a float abstract class Point2D { // nedeklaruje atributy static class Point2D.Float extends Point2D { float x, y;... get static class Point2D.Double extends Point2D { double x, y;... get public double distance( Point2D pt ) { return public abstract double getx( ); // getry a setry class Point extends Point2D { int x, y; public double getx( ) { Od třídy Point2D dědí ostatní metody distance, distancesq a další. Díky polymorfismu lze: Point2D p1 = new Point2D.Double( 1.1, 2.2 ); Point p2 = new Point( 3, 4 ); double d = p1.distance( p2 );

27 Generika (od v. 1.5) Parametrizované datové typy podporující typovou kontrolu při kompilaci těmi lze vyjádřit jasněji záměry, zlepšit čitelnost a robustnost programu. Parametrické typy pojednává jen kompilátor a do class se nedostanou ( tzv. erasure ) v běhu jsou již jen hrubé ( raw ) typy. Generiku užívají zejména kolekce k vymezení přijatelných typů prvků. Parametrizovat lze jen referenční typy tzv. typovými parametry. Leč nikoli: - pole a vytvoření pole: E[ ] e= ( E[ ] ) new Object[5]; new E[3] new ArrayList<String>[7]; - primitivní typy: List<int> - statické atributy: static T t; - vytvořit instanci: new E( ); - potomky třídy Throwable: class MyEx<T> extends Exception { ; Podrobněji: The Java Language Specification (Third Edition) , 18 Pecinovský R.: Java 5.0, CP Books, Brno, 2005, s. 152, ISBN

28 Syntax hlaviček... class JménoTřídy [ < Deklarace > ] [ extends JménoNadTřídy [ < TypArgument,... > ] ] [ implements JménoInterfejsu [ < TypArgument,... > ],... ] { interface JménoInterfejsu [ < Deklarace > ] [ extends JménoNadInterfejsu [ < TypArgument,... > ],... ] { [ < Deklarace > ] JménoTřídy // konstruktor ( [ ( Typ TypParm ) JménoParametru,... ] )... [ [ static] [ final ] [ abstract ] ] // metoda [ < Deklarace > ] ( void NávratovýTyp ) JménoMetody ( [ ( Typ TypParm ) JménoParametru,... ] )

29 Typové proměnné ( 4.4 ) Jen referenční typy (decorated types) lze ozdobit deklarací typových parametrů v hlavičkách tříd, interfejsů, konstruktorů či metod ve tvaru: < T 1, T 2,... T n > kde T i může být: T [ extends java.lang.object ] - T se chápe jako potomek Objectu. T extends P - P je známá typová proměnná. T extends R [ & I & I... ] - R třída nebo interfejs, I interfejs, & - logický součin Typové proměnné jsou nekvalifikované identifikátory typicky: T,E,K,V,N pro Type, Element, Key, Value, Number Příklad: class Demo < T, E extends A & K, N extends J & K > { kde A je nějaká třída J a K jsou nějaké interfejsy.

30 Parametrizovaný objekt vytvoří konstruktor s typovými argumenty v počtu a s omezeními formálních parametrů dle definice typu: new Demo < A, B, C > ( ) ; kde A, B, C jsou vhodné referenční typy, tj. třídy nebo interfejsy. Parametrizovaný objekt lze referovat čtyřmi způsoby: Demo r0 ; // raw r0: Object, A, Object Demo < A,B,C > r1 ; // r1: A,B,C r1 = new Demo < A,B,C,... > ( ) ; // decorated type r0 = r1 ; // erasure r0 = new Demo ( ) ; // raw type r1 = r0 ; // unchecked conversion Reference, tj. proměnné i parametry metod, lze vymezit i žolíkem:

31 Parametrizovaný Interval public class Interval<E extends Comparable<E>> implements Comparable<Interval<E>> { E low, high; public Interval( E low, E high ) { if ( low.compareto( high ) >0 ) throw new IllegalArgumentException( ); this.low=low; public int compareto( Interval<E> that ) { return this.low.compareto( that.low public String tostring( ) { return "Interval["+low+","+high+"]"; class XI<E extends Comparable<E>> extends Interval<E> { public XI( E a, E b) { super(a,b);

32 ? čili žolík Reference, tj. proměnné a parametry metod, lze vymezit i žolíkem. Symbolizuje množinu neznámých typů takto: <? > - bez omezení čili <? [ extends java.lang.object ] > <? extends Typ > - shora, tj. Typ a jeho potomci či implementace - extends se zde chápe i jako implements <? super Typ > - zdola, tj. Typ a všechny jeho supertypy Reference s žolíkem umožňuje přístup, ale nedovolí přidat nebo změnit ( kromě null ) avšak odstranit ano. Pro výpis jakékoli kolekce lze použít neomezený žolík: void printany( List<? > c ) { // ne < Object > for ( Object o : c ) System.out.println( o ); c.get( 0 ); c.add( new Object( ) ); // lze - nemá param. typ // má param. E - compile error

33 ? v referenci Budiž třída na výrobu parametrizovatelných krabic: class Box<E> { E e; // nelze inicializovat jinak než = null a věci tříd A, B, C, D extends C extends B extends A extends Object. Kompilátor umožní do new Box<B>( ) vložit B resp. C, D pomocí referencí: Box < [? super ] B > Box - leč pak s hláškou unchecked assignment. Přistoupit k věci uložené v krabici lze pomocí referencí: Box<? [ extends ( Object A B ) ] > Box<? super B > Box a referovat ji jako B či jen kterýmkoli předkem.

34 Příklad syntaxe class Demo < X, Y extends Number, Z eabstractmap < K, V > implements NavigableMap < K, V > { private Comparator<? super K > comparator = null ; public TreeMap( Comparator<? super K > c) { comparator = c ; public TreeMap( Map<? extends K,? extends V > m ) { putall( m );... Map < String, Integer > m = new TreeMap< String, Integer > ( ) ;

35 TreeMap jako příklad class TreeMap< K, V > extends AbstractMap < K, V > implements NavigableMap < K, V > { private Comparator<? super K > comparator = null ; public TreeMap( Comparator<? super K > c) { comparator = c ; public TreeMap( Map<? extends K,? extends V > m ) { putall( m );... Map < String, Integer > m = new TreeMap< String, Integer > ( ) ; m.put ( "AAA", 1); int I = m.get ( "AAA" );

36 Příklad parametrizované metody Parametrizovat metody lze i v neparametrizovaných třídách i interfejsech.... String s = m ( "AAA", ); // čísla převádí autoboxing Integer i = m ( 777, "BBB" ); Object o = <Double,Number>m( 3.14, 3L ); // s vymezením public static <U, V> U m( U u, V v ) { U x = u; V y = v; System.out.println( u.getclass( ) +" "+ v.getclass( ) ); System.out.println( x+" "+y ) ; return x; Lze parametrizovat i konstruktor - to má smysl jen v parametrizovaných třídách.

37 Generika a subtypy Důležitá, byť neituitivní, zábrana proti narušení vymezení Pro vztah Subtyp --> Supertyp ( extends / implements ) neplatí: L<Subtyp> --> L<Supertyp> Příklad: class Driver extends Person { List<Driver> drivers = new ArrayList<Driver> ( ); List<Person> people = drivers; // error people.add( new Person( ) ); // non-driver in drivers

38 Erasure Collection<String> cs = new ArrayList <String>( ); Collection co = cs; // raw type co.add( 666 ) ; // unsafe operation Collection<?> cx = cs; Collection<? extends String > cy = cs; Collection<Object> co = cs; // incompatible types

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18 Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: - systematizují typovou kontrolu kompilátorem, - vyjadřují jasněji smysl, zlepšují čitelnost a robustnost programu, - ulehčují

Více

Návrhové vzory Tvorba objektů

Návrhové vzory Tvorba objektů Objektové modelování, AD7B36OMO Návrhové vzory Tvorba objektů JIŘÍ ŠEBEK Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze https://edux.feld.cvut.cz/courses/ad7b36omo Přednáška

Více

RMI - Distribuované objekty v Javě

RMI - Distribuované objekty v Javě Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009 Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování

Více

RMI Remote Method Invocation

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

Více

JAVA V RMI Java, letní semestr

JAVA V RMI Java, letní semestr JAVA RMI Přehled Remote Method Invocation používání vzdálených objektů objekty v jiné VM (na stejném počítači i přes síť) jako by to byly lokální objekty (téměř) pouze volání trvají déle Vzdálené volání

Více

Remote Method Invocation RMI

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

Více

JAVA RMI Java, letní semestr 2018

JAVA RMI Java, letní semestr 2018 JAVA RMI Přehled Remote Method Invocation používání vzdálených objektů objekty v jiné VM (na stejném počítači i přes síť) jako by to byly lokální objekty (téměř) pouze volání trvají déle java.rmi modul

Více

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server Soketové připojení Při socketovém připojení spolu komunikují dvě nezávislé JVM pomocí streamů odpovídajících typů. Po síti můžete posílat textové i binární informace, je možno posílat i objekty, které

Více

java remote method invocation Kateřina Fricková, Matouš Jandek

java remote method invocation Kateřina Fricková, Matouš Jandek java remote method invocation Kateřina Fricková, Matouš Jandek Distribuovaný systém počítačový systém, ve kterém jsou jednotlivé komponenty propojeny počítačovou síťí komponenty systému sdílí cíl, kterého

Více

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

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í

Více

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

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

Více

Teoretické minimum z PJV

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

Více

Generické programování

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 =

Více

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Jini (pronounced GEE-nee) Cvičení 8 - DS 2006 Úvod JINI (pronounced GEE-nee; loosely derived from the Arabic for magician) Systém pro vyhledávání (lookup) a objevování (discovery) objektů v síti Zcela

Více

Úvod do programovacích jazyků (Java)

Ú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

Více

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ 4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve

Více

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

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í

Více

RMI - Remote Method Invocation

RMI - Remote Method Invocation RMI - Remote Method Invocation Cíl cvičení: Cílem je seznámit se s procedurální komunikací Java RMI a procvičit si použití vývojového prostředí Eclipse. Cvičení zahrnuje ukázkový příklad Hello, jeho zdrojové

Více

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í. 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;

Více

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

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íce

OOP - Objektově Orientované Programování

OOP - Objektově Orientované Programování OOP - Objektově Orientované Programování Programovat lze klasicky neobjektově - tedy s využitím jen primitivních typů a statického kontextu - tj. statických atributů, statických metod, statických inicializátorů

Více

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

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

Více

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

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

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

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd 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 Prostory jmen motivace spolupráce

Více

Výčtový typ strana 67

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

Více

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

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

Více

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika Použití jazyka Java pro aplikace měření a řízení Roman Gužík Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, 708 33 Ostrava-Poruba, Česká republika Abstrakt Příspěvek

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy 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 diagramům tříd, asociaci,

Více

Programování v Javě I. Leden 2008

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

Více

Jazyk C# (seminář 6)

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í

Více

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

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

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

Dědičnost (inheritance)

Dědičnost (inheritance) Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)

Více

Java Výjimky Java, zimní semestr

Java Výjimky Java, zimní semestr Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní

Více

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

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ů

Více

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.

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. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

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

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íce

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty 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 C E T

Více

Datové abstrakce v programovacích jazycích

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

Více

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

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

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íce

Seminář Java IV p.1/38

Seminář Java IV p.1/38 Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly

Více

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 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á

Více

Programovací jazyk Java

Programovací jazyk Java 1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška

Více

PREPROCESOR POKRAČOVÁ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,

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

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 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

Více

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

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íce

Seminář Java II p.1/43

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

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

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

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

Více

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

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í

Více

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics 1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového

Více

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost Přístup ke třídám i jejim prvkům lze (podobně jako např. v C++) regulovat. Přístupem se rozumí jakékoli použití dané třídy, prvku

Více

Java - řazení objektů

Java - řazení objektů Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

Více

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

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íce

Jazyk C# (seminář 3)

Jazyk C# (seminář 3) Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na

Více

Abstraktní datové typy: zásobník

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í

Více

Programování v jazyku Java základy OOP

Programování v jazyku Java základy OOP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programování v jazyku Java základy OOP BI-PJV Programování v jazyku Java Katedra teoretické informatiky Miroslav Balík Fakulta informačních

Více

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

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ů

Více

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

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

Více

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

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

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Soubor jako posloupnost bytů

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í

Více

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

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

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)

Více

KTE / ZPE Informační technologie

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ší

Více

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

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

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

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

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

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é

Více

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

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é

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

Distribuované systémy a výpočty

Distribuované systémy a výpočty Distribuované systémy a výpočty X36DSV Jan Janeček Peter Macejko CORBA Common Object Request Broker Architecture - konsorcium OMG (Object Management Group) - standard pro podporu komunikace v DS - pouze

Více

Úvod do programovacích jazyků (Java)

Ú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

Více

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

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íce

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

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

Více

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

Více

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

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Reflexe Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší

Více

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

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational

Více

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. 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

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

Objektově orientované programování v PHP 5. Martin Klíma

Objektově orientované programování v PHP 5. Martin Klíma Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory

Více

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky 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 rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

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

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object. Objekty v PHP 5.x This is an object-oriented system. If we change anything, the users object. Objektové PHP Objekty se poprvé objevili v PHP ve verzi 4. Nepříliš zdařilý pokus. Programátoři získali nedůvěru

Více

20. Projekt Domácí mediotéka

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ý

Více

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka Java 8 Ondřej Hrstka Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 13 A0B36PR2 Programování 2 Ondřej Hrstka, 2015 A0B36PR2 Přednáška 13: Java 8 1 / 26 Obsah Lambda

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více