Třídy a objekty -příklady



Podobné dokumenty
Principy objektově orientovaného programování

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

20. Projekt Domácí mediotéka

Abstraktní datové typy: zásobník

Typický prvek kolekce pro české řazení

Abstraktní třída a rozhraní

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

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

OOPR_05. Případové studie

typová konverze typová inference

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

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

Java - řazení objektů

Úvod do programovacích jazyků (Java)

Technologie JavaBeans

11. Dědičnost. Dědičnost strana 103

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

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

Deklarace a vytváření

Teoretické minimum z PJV

KTE / ZPE Informační technologie

Algoritmizace a programování

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

5 Rekurze a zásobník. Rekurzivní volání metody

1. Téma 12 - Textové soubory a výjimky

Programování v Javě I. Leden 2008

Objektově orientované programování

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

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

Seminář Java IV p.1/38

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

OOPR_05. Případové studie

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

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

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

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

Java Enum Java, zimní semestr ,2017 1

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

PREPROCESOR POKRAČOVÁNÍ

Úvod do programovacích jazyků (Java)

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Třídy a dědičnost. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

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

Čipové karty Lekařská informatika

Java - výjimky. private void vstup() throws IOException {... }

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

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

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

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/

Java a XML. 10/26/09 1/7 Java a XML

Návrhové vzory Tvorba objektů

Mnohotvarost (polymorfizmus)

RMI Remote Method Invocation

Iterator & for cyklus

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

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

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

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

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

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

Výčtový typ strana 67

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

Distribuované systémy a výpočty

Zápis programu v jazyce C#

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Návrhové vzory Design Patterns

Jazyk C# (seminář 3)

Generické programování

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

Java Výjimky Java, zimní semestr

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

Přehled probírané látky

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

9. přednáška - třídy, objekty

Třída jako zdroj funkcí

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

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

CMS LARS VIVO VERZE 1.2 Z POHLEDU VIVOJÁŘE

Jazyk C# (seminář 6)

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Jazyk C# a platforma.net

Java - Kresba. 2/28/11 1/8 Java - kresba

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

Jazyk C# a platforma.net

Mělká a hluboká kopie

Třída jako datový typ. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Část I Spojové struktury

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

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

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

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

Vláknové programování část V

10 Generické implementace

Obsah přednášky. Postup při vytváření objektů. Postup při vytváření objektů. Alokace paměti. Inicializace hodnot atributů

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu

Java testovací třída

Transkript:

Třídy a objekty -příklady 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 Příklad 1 Kvadratická rovnice static void kr(double a,double b,double c) double d = b * b 4 * a * c; if( d < 0 ) System.out.println( Nemá reálné kořeny ); else if( d == 0 ) double x = - b / (2*a); System.out.println("x=" + x); else double x1 = (-b + Math.sqrt(d)) / (2*a); double x2 = (-b Math.sqrt(d)) / (2*a); System.out.println("x1=" + x1); System.out.println("x2=" + x2); Třídy a objekty - příklady 2 Příklad 2 - Vložení prvku do pole static void vlozit(int[] pole, int pocet, int hodnota) int i; for( i = pocet-1; i >= 0; i-- ) if( hodnota > pole[i] ) break; pole[i+1] = pole[i]; pole[i+1] = hodnota; Třídy a objekty - příklady 3 Příklad 3 Vyhledání v poli static boolean find(int[] a, int x) for(int i = 0; i < a.length; i++ ) if( a[i] == x ) return true; return false; int[] pole = 2, 4, 1, 6, 9, 3 ; System.out.println(find(pole, 5)); Třídy a objekty - příklady 4 1

Příklad 3 Spojení dvou polí 1,3,7 4,2 => 1,3,7,4,2 static int[] spoj(int[] a, int[] b) 1) Určíme délku výsledného pole 2) Vytvoříme výsledné pole 3) Okopírujeme obsah pole a 4) Připojíme obsah pole b Třídy a objekty - příklady 5 Příklad 3 Spojení dvou polí static int[] spoj(int[] a, int[] b) int len = a.length + b.length; int[] c = new int[len]; int k = 0; for(int i = 0; i < a.length; i++) c[k++] = a[i]; for(int i = 0; i < b.length; i++) c[k++] = b[i]; return c; Třídy a objekty - příklady 6 Příklad4 Evidenceosob public class Osoba public string login; public string jmeno; public string prijmeni; Problémy? Osoba os = new Osoba(); os.login = bon007 ; System.out.println(os); 1. problém - inicializace class Osoba public Osoba(string l,string jm,string p) login = l; jmeno = j; prijmeni = p; Osoba os = new Osoba( aaa000, Johnny, Walker ); Třídy a objekty - příklady 7 Třídy a objekty - příklady 8 2

2. problém - zobrazení System.out.println(os); Osoba@2ae3645f Kdo je to? class Osoba public string tostring() return jmeno + " " + prijmeni; System.out.println("os = " + os); os = Johnny Walker Třídy a objekty - příklady 9 3. problém - zapouzdření public class Osoba private string login; public string getlogin() return login; public void setlogin(string login) // tady by měla být kontrola this.login = login; Třídy a objekty - příklady 10 4. problém - identita Osoba o1 = new Osoba( 007, James, Bond ); Osoba o2 = new Osoba( 007, James, Bond ); Platí o1 == o2? Ne! Různé objekty public boolean equals(object obj) if( obj instanceof Osoba ) return login.equals(((osoba)obj).login); return false; Příklad 5 - Dědičnost class Student extends Osoba public Student(string login, string jmeno, string prijmeni, string obor) super(login, jmeno, prijmeni); this.obor = obor; public string getobor() return obor; public void setobor(string ob) obor = ob; private string obor; Třídy a objekty - příklady 11 Třídy a objekty - příklady 12 3

Příklad 6 - Obrazce Definice třídy Obrazec Kruh r Obrazec obvod() obsah() Obdélník a, b Čtverec class Obrazec double obvod() return 0.0; double obsah() return 0.0; Jak vypadá Obrazec? Je to ABSTRAKCE! Třídy a objekty - příklady 13 Třídy a objekty - příklady 14 Abstraktní třídy abstract class Obrazec public abstract double obvod(); public abstract double obsah(); new Obrazec() class Kruh extends Obrazec Kruh(double r) this.r = r; double obvod() return 6.28 * r; double obsah() return 3.14 * r * r; double r; Abstraktní třídy class Obdelnik extends Obrazec Obdelnik(double a, double b) this.a = a; this.b = b; double obvod() return 2*(a+b); double obsah() return a*b; class Ctverec extends Obdelnik Ctverec(double a) super(a, a); Třídy a objekty - příklady 15 Třídy a objekty - příklady 16 4

Rozhraní interface Obrazec double obvod(); double obsah(); class Kruh implements Obrazec Kruh(double r) this.r = r; double obvod() return 6.28 * r; double obsah() return 3.14 * r * r; double r; Rozdíly Abstraktní třída může obsahovat instanční proměnné může obsahovat konkrétní metody lze rozšiřovat pouze jednu třídu Rozhraní nesmí obsahovat proměnné všechny metody jsou public abstract lze implementovat více rozhraní Třídy a objekty - příklady 17 Třídy a objekty - příklady 18 Pozdní vazba Příklad použití pozdní vazby static boolean vetsi(obrazec o1, Obrazec o2) return o1.plocha() > o2.plocha(); Která metoda plocha() se volá? Včasná vazba výběr volané metody v době překladu podle typu reference, přes kterou metodu voláme Pozdní vazba výběr volané metody v době běhu podle typu objektu, na který reference ukazuje void print(object obj) print obj.tostring(); class Object public String tostring() class Osoba extends Object public String tostring() Osoba@24f32e Johnny Walker Třídy a objekty - příklady 19 Třídy a objekty - příklady 20 5

Přetěžování operací class Counter int n = 0; void increment() n++; void increment(int d) n += d; přetížená operace 1 + 1 2.5 + 3.14 abcd + efgh přetížený operátor + Přetěžování operací - příklad class Complex public Complex() public Complex(double r) public Complex(double r, double i) public add(complex c) public add(double r) public add(double r, double i) Třídy a objekty - příklady 21 Třídy a objekty - příklady 22 6