KTE / ZPE Informační technologie

Podobné dokumenty
3 KTE / ZPE Informační technologie

KTE / ZPE Informační technologie

Algoritmizace a programování

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

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

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

Algoritmizace a programování

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

17. Projekt Trojúhelníky

Soubor jako posloupnost bytů

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

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

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

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

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

Generické programování

1. Programování proti rozhraní

RMI Remote Method Invocation

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

8. přednáška: Soubory a proudy

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

Rozklad problému na podproblémy

Principy objektově orientovaného programování

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

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.

Typický prvek kolekce pro české řazení

Abstraktní datové typy: zásobník

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

Datové struktury. alg12 1

Úvod do programovacích jazyků (Java)

C# konzole Podíl dvou čísel, podmínka IF

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

Výjimky. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Programování v Javě I. Leden 2008

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

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

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

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

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

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

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

Algoritmizace. Cíle předmětu

Výjimky. v C# a Javě

Úvod do programovacích jazyků (Java)

Dědičnost (inheritance)

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

20. Projekt Domácí mediotéka

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/

Programovací jazyk Java

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

Java Výjimky Java, zimní semestr

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

Výčtový typ strana 67

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

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

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Řídicí struktury. alg3 1

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

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

Textové soubory. alg9 1

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ)

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

Teoretické minimum z PJV

Seminář Java II p.1/43

JUnit příklad na použití

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

Úvod do programovacích jazyků (Java)

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

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

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

Mnohotvarost (polymorfizmus)

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

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

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Abstraktní třída a rozhraní

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

Objektově orientované programování

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

5. přednáška - Rozklad problému na podproblémy

Objektově orientované programování

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

1. Téma 03 - Rozhodování

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

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

OOPR_05. Případové studie

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

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

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

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

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

KTE / ZPE Informační technologie

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

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

10 Balíčky, grafické znázornění tříd, základy zapozdření

Regulární výrazy. Vzory

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

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

Abstraktní datové typy

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

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

Transkript:

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ší společný dělitel použití výjimek při komunikaci s uživatelem (ošetření vstupu): package fel.kte.zpe; import java.util.inputmismatchexception; import java.util.scanner; /** * Největší společný dělitel dvou čísel * * @author Petr Kropík public class Hlavni { public static int nsd(int a, int b) { if ((a <= 0) (b <= 0)) { return 0; while (a > 0) { if (a > b) { a = a - b; else { b = b - a; if (b == 0) { return a; return 0; /** * Hlavní spouštěcí funkce * * @param args the command line arguments public static void main(string[] args) { Scanner klavesnice = new Scanner(System.in); System.out.printf("Největší společný dělitel dvou čísel%n"); int prvnicislo; while (true) { try {

System.out.printf("Zadejte první číslo: "); prvnicislo = klavesnice.nextint(); break; catch (InputMismatchException ex) { System.out.printf("To nebylo číslo...%n"); klavesnice.next(); int druhecislo; while (true) { try { System.out.printf("Zadejte druhé číslo: "); druhecislo = klavesnice.nextint(); break; catch (InputMismatchException ex) { System.out.printf("To nebylo číslo...%n"); klavesnice.next(); int vysledek = nsd(prvnicislo, druhecislo); System.out.printf("Nejvetsi spolecny delitel cisel %d a %d je %d%n", prvnicislo, druhecislo, vysledek);

OOP Objektově Orientované Programování (objektové programování) - princip Vlastnosti tříd - třída je jakýmsi vzorem pro své instance (objekty) - třída je jako datový typ pro proměnné. - má datové prvky atributy, které ji "popisují" - má metody jakýsi "komunikační kanál" k datovým prvkům instance dané třídy (tj. objektu) - dynamická vazba lze vytvořit program tak, že to, která metoda se bude volat, je určeno až za běhu programu.

- objekty viz obrázky výše

- obdobně např.: slon Pepa má vlastnosti -> datové prvky (viz ukázka kódu dále) public class Slon { private int vyska; private String jmeno; // konstruktor třídy public Slon(String novejmeno, int novavyska) throws ZapornaHodnotaException { jmeno = novejmeno; setvyska(novavyska); // a jedna metoda na ukázku public void setvyska(int novavyska) throws ZapornaHodnotaException { if (novavyska >= 0) vyska = novavyska; else throw new ZapornaHodnotaException("Zaporna vyska nelze"); // "spouštěcí funkce třídy" public static void main(string[] args) { Slon a, b; a = new Slon("Ferda", 220); b = new Slon("Bimba", 200); a.setvyska(250); b.setvyska(230); // konec metody main // konec třídy Slon

Zapouzdření (encapsulation) Slon a; a = new Slon("Lojzik", 220); a.vyska = 230; je-li vyska privátní prvek => nešlo by to. - třída (class) je realizací (implementací) abstraktního datového typu Příklad Výpočet obsahu kruhu objektově řešený příklad z první přednášky Formulace problému: vstupní údaj: poloměr r, výstupní údaj: obsah kruhu S Analýza: S= πr 2 Sestavení algoritmu výpočtu: Slovní popis: Je poloměr r >0? ANO NE S= pi*r*r Vypiš:Poloměr r musí být kladný Vypiš: obsah S Konec S Z r > 0 + = π * r * r Piš: S K - Piš: r musí být kladný

Pro objektové jazyky se pro návrh a popis struktury aplikací používá UML - UML Unified Modeling Language vyjadřuje vztahy mezi daty, vlastnosti objektů a co objekty umí (metody)

UML diagram naší aplikace pro výpočet obsahu kruhu package fel.kte.zpe.obsahkruhu; /** * * @author Petr Kropík public class Kruh { private double polomer; public Kruh(double polomer) throws ZapornaHodnotaVyjimka { setpolomer(polomer); public double getpolomer() { return polomer; public final void setpolomer(double novypolomer) throws ZapornaHodnotaVyjimka { if (novypolomer >= 0.0) { polomer = novypolomer;

else { throw new ZapornaHodnotaVyjimka("Zaporny polomer nelze..."); public double kolikmasobsah() { return Math.PI * Math.pow(polomer, 2); package fel.kte.zpe.obsahkruhu; /** * * @author petr public class ZapornaHodnotaVyjimka extends Exception { public ZapornaHodnotaVyjimka(String zprava) { super(zprava); package fel.kte.zpe.obsahkruhu; import java.util.scanner; /** * * @author Petr Kropík public class Hlavni {

/** * @param args parametr příkazového řádku public static void main(string[] args) { Kruh kr1; System.out.printf("Zadej poloměr kruhu: "); Scanner klavesnice = new Scanner(System.in); double r; r = klavesnice.nextdouble(); try { kr1 = new Kruh(r); System.out.printf("%nObsah kruhu o poloměru %f je: %f%n", kr1.getpolomer(), kr1.kolikmasobsah()); catch (ZapornaHodnotaVyjimka ex) { System.out.printf("%nPoloměr kruhu musí být nezáporný.%n"); Příště si rozšíříme příklad na pole Kruhů.