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

Podobné dokumenty
Úvod do programovacích jazyků (Java)

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

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

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

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

Principy objektově orientovaného programování

Více o konstruktorech a destruktorech

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

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)

Konstruktory a destruktory

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

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

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

Programování v Javě I. Leden 2008

Seminář Java II p.1/43

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

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

Mělká a hluboká kopie

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

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

Jazyk C# (seminář 6)

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

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

7. Datové typy v Javě

Teoretické minimum z PJV

Generické programování

PREPROCESOR POKRAČOVÁNÍ

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

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

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

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

Objektově orientované programování. Úvod

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

ADT/ADS = abstraktní datové typy / struktury

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

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

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

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

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

C++ objektově orientovaná nadstavba programovacího jazyka C

konstruktory a destruktory (o)

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

Spojová implementace lineárních datových struktur

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

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

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

Základy objektové orientace I. Únor 2010

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Programování v jazyce C a C++

KTE / ZPE Informační technologie

Úvod do programovacích jazyků (Java)

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/

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

Dědění, polymorfismus

Algoritmizace a programování. Terminálový vstup a výstup

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

Objektově orientované programování

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

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

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Jazyk C# a platforma.net

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

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

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

Soubor jako posloupnost bytů

Paměť počítače. alg2 1

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

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

KTE / ZPE Informační technologie

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. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Abstraktní datové typy: zásobník

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

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

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

Zápis programu v jazyce C#

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

Mnohotvarost (polymorfizmus)

Jazyk C++ I. Šablony 2

NMIN201 Objektově orientované programování 1 / :36:09

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

typová konverze typová inference

Dědičnost (inheritance)

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

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

1. Programování proti rozhraní

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

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

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

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

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

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

Jazyk C++, některá rozšíření oproti C

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Transkript:

Ú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ů (Java) 1/21

Příklad 1/2 public class Bod2D private double mx; private double my; public double getx ( ) return mx ; public double gety ( ) return my ; public void setx ( double x ) mx = x ; public void sety ( double y ) my = y ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 2/21

Příklad 2/2 public s t a t i c void main ( S t r i n g [ ] args ) Bod2D bod = new Bod2D ( ) ; bod. setx ( 1. 0 ) ; bod. sety ( 1.0); System. out. p r i n t l n ( " x : " + bod. getx ( ) + ", y : " + bod. gety ( ) ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 3/21

Ukazatel (reference) Bod2D a = new Bod2D(); je ukazatel na objekt v paměti. Po přiřazení Bod2D c = a; budou a a c ukazovat na stejný objekt. Ukazatel null označuje ukazatel na žádný objekt. Bod2D d = null; Pokud budeme chtít přistupovat na atribut nebo metodu null ukazatele, program skončí chybou. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 4/21

Dealokace paměti V jazyku Java je pamět alokovaná pomocí operátoru new dealokována automaticky. Systém obsahuje automatické řízení paměti garbage collector. Pokud neexistuje ukazatel na pamět, objekt je zničen a pamět uvolněna. Garbage collector musí řešit i cyklické závislosti. + programátor se nestará o alokovanou pamět. - větší režie oproti ručnímu uvolňování paměti. public s t a t i c void main ( S t r i n g [ ] args ) Bod2D bod = new Bod2D ( ) ; / / alokace pameti... / / o b j e k t j e znicen garbage collectorem c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 5/21

Klíčové slovo this, příklad 1/2, Bod2D.java Klíčové slovo this označuje ukazatel na objekt v jehož metodě je this použito. public class Bod2D... public double EuclideanDistance (Bod2D bod1, Bod2D bod2 ) return Math. s q r t ( Math. pow( bod1. getx ( ) bod2. getx ( ), 2 ) + Math. pow( bod1. gety ( ) bod2. gety ( ), 2 ) ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 6/21

This, příklad 2/2, Bod2D.java public s t a t i c void main ( S t r i n g [ ] args ) Bod2D bod1 = new Bod2D ( ) ; bod1. setx ( 2. 0 ) ; bod1. sety ( 2. 0 ) ; Bod2D bod2 = new Bod2D ( ) ; bod2. setx ( 0. 0 ) ; bod2. sety ( 0. 0 ) ; Bod2D bod = new Bod2D ( ) ; System. out. p r i n t l n ( " Euclidean Distance : " + Bod. EuclideanDistance ( bod1, bod2 ) ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 7/21

This, příklad 2 1/2 public class Bod2D... public double EDistance ( Bod2D bod ) return EuclideanDistance ( this, bod ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 8/21

This, příklad 2 2/2 public s t a t i c void main ( S t r i n g [ ] args ) Bod2D bod1 = new Bod2D ( ) ; bod1. setx ( 2. 0 ) ; bod1. sety ( 2. 0 ) ; Bod2D bod2 = new Bod2D ( ) ; bod2. setx ( 0. 0 ) ; bod2. sety ( 0. 0 ) ; Bod2D bod = new Bod2D ( ) ; System. out. p r i n t l n ( " Euclidean Distance : " + bod. EuclideanDistance ( bod1, bod2 ) ) ; System. out. p r i n t l n ( " Euclidean Distance : " + bod1. EDistance ( bod2 ) ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 9/21

Přetížení metod (Overloading) v Javě mohou být přetíženy. To znamená, že třída může obsahovat více metod se stejným názvem. se musí lišit v počtu a typech parametrů. Metoda, která bude zavolána je vybrána dle počtu a typu parametrů. Návratový typ nemusí být stejný. public class Bod2D... public double EuclideanDistance (Bod2D bod1, Bod2D bod2 )... public double EuclideanDistance (Bod2D bod )...... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 10/21

Zapouzdření (Encapsulation) Atributy a metody označené jako private mohou být přístupné pouze z metod tříd ve které jsou definovány. Atributy a metody označené jako public mohou být přístupné z libovolné třídy. Pokud uvažujeme čistý objektově-orientovaný návrh, pak data jsou zapouzdřena ve třídách (private) a metody pracují s těmito daty (public) zapouzdření. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 11/21

Inicializace objektu Po vytvoření instance jsou všechny atributy nastaveny na hodnotu nula: Číselné hodnoty (int, long, char, float,...) jsou nastaveny na hodnotu 0. Booleovské hodnoty jsou nastaveny na false. (na objekty a pole) jsou nastaveny na null. Můžeme použít explicitní inicializaci: public class Bod2D private double mx = 1. 0 ; private double my = 1. 0 ;... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 12/21

(constructor) Objekt může být inicializován pomocí konstruktoru. připomíná metodu, ovšem: Jméno konstruktoru je stejné jako jméno metody. nevrací hodnotu. může být volán pouze při vytváření instance pomocí new. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 13/21

, příklad 1/2 public class Bod2D private double mx; private double my; Bod2D( double x, double y ) mx = x ; my = y ; Bod2D ( )... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 14/21

, příklad 2/2 public s t a t i c void main ( S t r i n g [ ] args ) Bod2D bod1 = new Bod2D ( ) ; bod1. setx ( 2. 0 ) ; bod1. sety ( 2. 0 ) ; Bod2D bod2 = new Bod2D ( 2. 0, 2. 0 ) ;... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 15/21

, poznámky y mohou být přetěžovány. může být označen private, protected a public jako běžné metody. Pokud není definován žádný konstruktor, pak je vygenerován prázdný konstruktor. Pokud je definován alespoň jeden konstruktor, pak není vygenerován prázdný konstruktor. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 16/21

Úvod do programovacích jazyků (Java), 4 může volat jiný konstruktor. K tomuto účelu použijeme klíčové slovo this. Volání jiného konstruktoru může být použito pouze na prvním řádku těla konstruktoru. c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 17/21

, příklad public class Bod2D... Bod2D( double x, double y ) mx = x ; my = y ; Bod2D( double value ) this ( value, value ) ;... c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 18/21

Příklad 1/3, SearchApplication.java public class SearchApplication Searcher msearcher ; public SearchApplication ( ) msearcher = new Searcher ( ) ; public void Run ( S t r i n g s t r, char ch ) i n t number = msearcher. Search ( s t r, ch ) ; System. out. p r i n t l n ( " Pocet vyskytu : " + number ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 19/21

Příklad 2/3, SearchApplication.java public s t a t i c void main ( S t r i n g args [ ] ) new SearchApplication ( ). Run ( " Toto j e retezec ", t ) ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 20/21

Příklad 3/3, Searcher.java public class Searcher i n t Search ( S t r i n g s t r, char ch ) i n t number = 0 ; for ( i n t i = 0 ; i < s t r. l e n g t h ( ) ; i ++) i f ( s t r. charat ( i ) = = ch ) number ++; return number ; c 2006 Michal Krátký Úvod do programovacích jazyků (Java) 21/21