PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

(instance konkrétní třídy)
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Funkce Připomeňme si program pro výpočet faktoriálu:
OOP OOP (Object Oriented Programming)
Pole, ukazatele a odkazy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
4IT1014IT101 Pátá přednáška Datové struktury - pokračování Statické prvky třídy.
Polymorfismus Dědičnost
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Čtvrté cvičení Objektové programování Objektový model v Javě
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Objekty v CLIPSu RNDr. Jiří Dvořák, CSc.
Druhá přednáška Datové typy a operátory Zapouzdření Pojem rozhraní
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
4IT101 7.přednáška Třída String a regulární výrazy Algoritmy v kolekcích Vnitřní a vnořené třídy.
Objektové orientované programování Objektově orientované problémy v PHP Lukáš Masopust 2008.
Objektové programování
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
C# - OOP (object oriented programming)
08/04/20151 Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo- vě bezpečné ukazatele.
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
Počítače a programování 1
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Vaše jistota na trhu IT Interní datové typy Rudolf Pecinovský
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
ZADÁNÍ Sestavte program, který vypočítá obvod a obsah čtverce o straně a. Zajistěte, aby výpočet byl realizován pouze v případě, kdy strana a bude mít.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
JAVA Tutoriál Ing. Lumír Návrat, A1018 Tel:
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
PJV031 Přetypování (casting) Objekty, atributy, lokální proměnné, parametry a návratové hodnoty metod mají definovaný, neměnný typ. Jsou dva druhy typů:
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Pokročilé programování v C++ (část B)
PŘÍKAZ while úkol 1_42.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Template Method. Motivační příklad – reálný svět Čaj 1) Uvař vodu 2) Dej do hrnku sáček čaje 3) Zalij hrnek 4) Přisyp cukr a vymačkej citrón Káva 1) Uvař.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) č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á.
Y36PJC Programování v jazyce C/C++
Úvod do C# - OOP Jaroslav BURDYS 4IT.
OOP - Objektově Orientované Programování
Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: systematizují typovou kontrolu kompilátorem, vyjadřují jasněji smysl,
Polymorfismus = Mnohotvarost
Bridge.
Reflexe jako introspekce
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Výčtové typy ( Java 5 ) Výčtové typy jsou speciální třídy zavedené pro větší bezpečí a pohodlí. V nejjednodušší variantě se definují příkladmo takto:
Composite “Spojuj a panuj”.
Bridge.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je 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.

PJV152 Vnořené a vnitřní členy tříd a interfejsů Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou soubory X.class, X$Y.class a X$Y$Z.class. Člen Z vidí členy svých obalů - nehledě na jejich modifikátory přístupu. Má-li však modifikátor static, pak je statickým členem svého obalu – tzv. vnořený ( nested ) - a má přístup jen ke statickým členům svých obalů. Vložit do obalu lze vnořené ( nested ) interfejsy s těmito modifikátory : [ public | protected | private ] [ strictfp ] [ abstract ] [ static ] Vložit do obalu lze třídy s těmito modifikátory : [ public | protected | private ] [ strictfp ] [ abstract | final ] [ static ] Instanciace: In y = new In( ); či Ne n = new Ne( ); // uvnitř Out Out.Ne n = new Out.Ne( ); // zvnějšku nested Out.In x = new Out( ).new In( ); // zvnějšku inner Tzv. vnitřní ( inner ) třída je nestatickým členem svého obalu. Kromě static final konstant, nemůže deklarovat statické členy – může je však zdědit. Speciálním případem je třída lokální (v metodě) a anonymní (bez hlavičky).

PJV153 Lokální třída je vnitřní třída deklarovaná v metodě, bloku či v dynamickém 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á zvně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í.

PJV154 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 };

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

PJV156 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 } };

PJV157 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 { public void m( ) { x++; } } public void test( ) { Inner n = new Inner( ); n.m( ); } public static void main(... ) { Outer o = new Outer( ); o.test( ); } main( test( m( this n Outer Inner x Outer.this stackheap

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

PJV159 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++; } main( m( p n x Outer Inner x Outer.this x

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

PJV1511 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 Float extends Point2D { float x, y;... get } static class 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 );