JAVA Tutori - PowerPoint PPT Presentation

About This Presentation
Title:

JAVA Tutori

Description:

Ing. Lum r N vrat, A1018 Tel: +420 59 732 3252 Email: lumir.navrat_at_vsb.cz ICQ: 64100582 Materi ly vych zej z podklad doc. Ing. Miroslava Bene e , Ph.D. – PowerPoint PPT presentation

Number of Views:152
Avg rating:3.0/5.0
Slides: 86
Provided by: Lum
Category:
Tags: java | applet | java | tutori

less

Transcript and Presenter's Notes

Title: JAVA Tutori


1
JAVA Tutoriál
  • Ing. Lumír Návrat, A1018
  • Tel 420 59 732 3252
  • Email lumir.navrat_at_vsb.cz
  • ICQ 64100582
  • Materiály vycházejí z podkladu doc. Ing.
    Miroslava Beneše , Ph.D.
  • (?28.5.2005)

2
Doporucená literatura
  • Ucebnice
  • Eckel, B. Myslíme v jazyce Java. Grada,
    2000.http//www.eckelobjects.com/
  • Herout, P. Ucebnice jazyka Java. KOPP, 2000.
  • Pecinovský R. Myslíme objektove v jazyku Java
    5.0
  • Internet
  • Studijní materiály k tutoriáluhttp//www.cs.vsb.c
    z/navrat/vyuka/esf/
  • Slidy z predchozích kurzu výuky jazyka JAVA na
    katedre
  • http//www.cs.vsb.cz/java/

3
Programové vybavení
  • http//java.sun.comJava SE Development Kit
    dokumentace
  • http//ant.apache.orgNástroj pro správu projektu
  • Vývojová prostredí Netbeans IDE, Eclipse,
    Borland JBuilder,Intelli JIdea...
  • Editory JEdit, PSPad, TextPad, gvim, ...,
    Notepad ?

4
Vznik jazyka
  • Motivace Jazyk pro tvorbu programového vybavení
    pro spotrební elektroniku pracky, diáre,
    mikrovlnné trouby, ...
  • Požadavky nezávislost na procesoru,
    spolehlivost, jednoduchost, robustnost.
  • 1990 - James Gosling, Sun jazyk Oak
  • 1993 Internet WWW nové aplikace
  • Sun HotJava prohlížec s applety
  • 23. 1. 1996 JDK 1.0 první implementace
  • 2004 JDK 1.5 -gt JDK 5 Tiger nové prvky jazyka
  • prosinec 2006 JDK 6 aktuální verze

5
Preklad a spuštení programu
Test.java
zdrojový program
zpetnýpreklad
javac Test.java
Test.class
javap Test
.html
java Test
javadoc Test.java
výsledky
JIT
dokumentace
JIT Just-In-Time preklad
6
Program Ant
  • Implementován v prostredí Java
  • Možnost rozširování
  • implementace akcí v jazyce Java
  • definované rozhraní
  • Cinnost se rídí souborem v XML
  • build.xml
  • Integrován do vývojových prostredí
  • Eclipse, Netbeans,

7
Struktura rídicího souboru
project
1
1
n
name default basedir description
n
property
target
name value location
name depends if unless description
1
n
task
8
Struktura rídicího souboru
  • lt?xml version"1.0"?gt
  • ltproject name"Test" default"all" basedir"."gt
  • ltproperty name"src" location"src"/gt
  • ltproperty name"build" location"classes"/gt
  • lttarget name"all" depends"init,compile,run"/gt
  • lttarget name"init"gt
  • ltmkdir dirbuild/gt
  • lt/targetgt
  • lt!-- --gt
  • lt/projectgt

9
Spuštení programu
  • ant
  • rídicí soubor build.xml
  • provedení implicitního cíle
  • ant compile
  • provedení zadaného cíle
  • ant buildfile test.xml
  • použití zadaného rídicího souboru
  • ant Dbuild.compilerjikes
  • nastavení hodnoty vlastnosti
  • ant logfile build.log
  • uložení logu do souboru

10
Základní úlohy
  • Práce se soubory
  • ltmkdir dir"dist/lib"/gt
  • ltdelete dir"lib"/gt
  • ltdeletegt ltfileset dir"." includes"/.bak"
    /gt lt/deletegt
  • ltcopy file"myfile.txt" tofile"mycopy.txt"/gt
  • ltmove file"file.orig" todir"dist/lib"/gt

11
Základní úlohy
  • Preklad
  • ltjavac srcdir"src"
    destdir"build" classpath"xyz.jar"
    debug"on" /gt
  • ltjavac srcdir"src" destdir"build"gt
    ltclasspathgt ltpathelement path"classpath"
    /gt ltpathelement location"lib/helper.jar"/gt
    lt/classpathgt lt/javacgt

12
Základní úlohy
  • Spuštení programu
  • ltjava classname"test.Main" gt ltarg
    value"-h"/gt ltclasspathgt ltpathelement
    location"dist/test.jar"/gt ltpathelement
    path"java.class.path"/gt lt/classpathgt
    lt/javagt

13
Zdrojový program
  • package Priklady // soubor
    Priklady/Test.java
  • public class Test
  • public static void main(String args)
  • System.out.println(Ahoj!)

14
Cílový program
  • public class Priklady.Test extends
    java.lang.Object
  • public Priklady.Test()
  • Code
  • 0 aload_0
  • 1 invokespecial 1 //Method
    java/lang/Object."ltinitgt"()V
  • 4 return
  • public static void main(java.lang.String)
  • Code
  • 0 getstatic 2 //Field
    java/lang/System.outLjava/io/PrintStream
  • 3 ldc 3 //String Ahoj!
  • 5 invokevirtual 4 //Method
    java/io/PrintStream.println(Ljava/lang/String)V
  • 8 return

15
Datové typy
  • Primitivní datové typy
  • boolean False, True
  • char A, \n
  • int, long 123, 5L
  • float, double 3.14f, 6.67e-19
  • Referencní datové typy
  • String abc, ab\tcd
  • pole String , int
  • Objekty
  • Boolean, Integer, Float,
  • objektové obálky primitivních typu. Od verze 5.0
    existuje automatická konverze

16
Operátory
  • Aritmetické
  • xy, x-y, xy, x/y, xy, -x
  • Relacní
  • x y, x ! y, x lt y, x lt y, x gt y, x gt y
  • Logické
  • x y, x y, !x
  • Prirazení
  • x y
  • x y, , x, x--

17
Príkazy
-
  • Podmínený príkaz
  • if ( podmínka ) príkaz
  • if ( podmínka ) príkaz else príkaz
  • Cyklus
  • while( podmínka ) príkaz
  • do príkaz while ( podmínka )


-


-
18
Príkazy
  • for( inicializace podmínka krok ) príkaz
  • for( int i 0 i lt 10 i )
  • System.println(i i)
  • for( Item i kolekce)
  • System.println(i i.toString())
  • //Od verze JAVA 5.0
  • break, continue
  • for( int i 0 i lt 10 i )
  • if( ai x ) break

-

19
Program
  • public class VypisParametru
  • public static void main(String args)
  • for( int i 0 i lt args.length i )
  • System.out.println(i
    argsi)

20
Praktické cvicení cviceni1.zip
  • Úloha 1 - Preklad a spuštení ukázkové trídy
  • Rozbalte v pracovním adresári soubor
    priklad1.zip.
  • Prostudujte soubor Pokus.java.
  • Spustte program ant, jenž vytvorí soubor
    Pokus.class a spustí jej.
  • Úloha 2 - Vytvorení vlastního programu
  • Na základe ukázkového programu vytvorte program
    pro rešení kvadratické rovnice, který z hodnot
    promenných a, b, c typu double vypocítá hodnoty
    korenu rovnice ax2bxc0.
  • Hodnoty promenných a, b, c nastavte prímo v
    programu.
  • Pro výpocet druhé odmocniny použijte volání
    funkce Math.sqrt(x).

21
Rešení Kvadratická rovnice
  • static void kr(double a,double b,double c)
    double d b b 4 a c if( d lt 0 )
    System.out.println(Nemá reálné koreny)
    else if( d 0 ) double x - b /
    (2a) System.out.println("x" x)
    else double x1 (-b Math.sqrt(d)) /
    (2a) double x2 (-b Math.sqrt(d)) /
    (2a) System.out.println("x1" x1)
    System.out.println("x2" x2)

22
Praktické cvicení cviceni2.zip
  • Úloha 1 Prostudování práce s parametry
    príkazového rádku
  • Rozbalte v pracovním adresári soubor
    priklad2.zip.
  • Prostudujte a vyzkoušejte zpusob práce s
    parametry príkazové rádky, vcetne chybové vstupu
    (Priklad1.java)
  • Úloha 2 Serazení obsahu pole
  • Vytvorte program, který vytiskne serazené pole
    celocíselných hodnot zadaných jako parametry.
    (Priklad2.java)
  • Úloha 3 Práce se standardním vstupem
  • Prostudujte práci se standardním vstupem
  • Upravte program pro výpocet kvadratické rovnice,
    aby nacítal data ze vstupu.

23
Dotazy
24
Trídy a objekty
T
C
E
O
25
Co mají spolecného?
  • Vlastnosti (stav)
  • souradnice stredu x, y
  • barva
  • obsah, obvod
  • Operace (chování)
  • presunutí na jinou pozici
  • n-násobné zvetšení a zmenšení
  • vykreslení na obrazovku
  • Vztahy
  • sousedí, prekrývají se, ...

26
V cem se liší?
  • Druh obrazce
  • ctverec, trojúhelník, elipsa
  • Specifické vlastnosti
  • délka strany ctverce
  • velikosti poloos elipsy
  • Hodnoty vlastností
  • konkrétní souradnice, barva, ...
  • Zpusob provedení operací
  • vykreslení na obrazovku

27
Grafická reprezentace trídy
Jméno trídy
Zlomek
Vlastnosti
citateljmenovatel
Zlomek pricti(Zlomek jinýZlomek) Zlomek
násob(Zlomek jinýZlomek) void normalizuj()
Operace
28
Objekt instance trídy
Zlomek
citateljmenovatel
z1 Zlomek
citatel 2 jmenovatel 3
Zlomek pricti(Zlomek jinýZlomek) Zlomek
násob(Zlomek jinýZlomek) void normalizuj()
z3 Zlomek
z2 Zlomek
citatel 1 jmenovatel 2
citatel -6 jmenovatel 4
29
Trídy v jazyce Java
  • class Zlomek
  • // instancní promenné
  • int citatel
  • int jmenovatel
  • // metody
  • Zlomek nasob(Zlomek jiny) citatel
    jiny.citatel jmenovatel jiny.jmenovatel

30
Vytvorení instance trídy
  • public static void main(String args)
  • Zlomek z new Zlomek()
  • // nastavení instancních promenných
  • z.citatel 2
  • z.jmenovatel 3// volání metody
  • z.nasob(z) // z z

reference
31
Jak se instance zruší?
  • Pascal, C, C je treba volat speciální
    operaci, která uvolní pametPascal Dispose(ptr)
    C free(ptr)C delete ptr
  • Java, .NET automatická správa pameti (garbage
    collector)
  • pamet se uvolní automaticky, pokud na ni
    neexistuje žádný odkaz

32
Inicializace objektu
  • Zajištení definovaného stavu objektu po jeho
    vytvorení
  • všechny promenné objektu se nastaví na nulu
  • je-li uvedena inicializace, provede se nastavení

class Test int x // poc. hodnota je 0
int y 10 // poc. hodnota je 10 int m()
int z // POZOR! zde to neplatí!
return z 1 // chyba neinicializovaná
// promenná z
33
Konstruktor
  • Zajištení inicializace objektu po vytvorení

public class Zlomek Zlomek(int citatel, int
jmenovatel) this.citatel citatel this.jme
novatel jmenovatel Zlomek z1 new
Zlomek(3, 4) // ¾ Zlomek z2 z1.pricti(new
Zlomek(1,2))
není typ výsledku!
odkaz na aktuální objekt
34
Príklad
  • public class Citac
  • int hodnota 0
  • Citac(int pocatek) hodnota pocatek
  • void krok() hodnota
  • public static void main(String args)
  • Citac c new Citac(10)
  • c.krok()
  • System.out.println(c.hodnota) // 11

35
Jak si hlídat svá data?
  • public class Citac
  • // verejné metody
  • public void nastavHodnotu(int nova)
  • hodnota nova
  • public int vratHodnotu()
  • return hodnota
  • public void krok() hodnota
  • // soukromá promenná
  • private int hodnota 0
  • ...

36
Jak si hlídat svá data?
  • public class Test
  • public static void main(String args)
  • Citac c new Citac()
  • // c.hodnota 10 -- není prípustné
  • c.nastavHodnotu(10)
  • c.krok()
  • System.out.println(c.vratHodnotu())

37
Statické cleny trídy
  • Instancní promenné a metody
  • jsou vázané vždy na nejaký objektobj.promenná,
    obj.metoda()
  • Promenné a metody trídy
  • spolecné pro všechny instanceTrída.promenná,
    Trída.metoda()
  • oznacují se klícovým slovem staticstatic int
    pocetstatic void main(String args)

38
Príklad
  • public class Test
  • private static int pocet 0
  • // vrátí pocet vytvorených instancí trídy
  • public static int pocetInstanci() return
    pocet
  • public Test() pocet
  • ...

39
Príklad - pokracování
  • ...
  • public static void main(String args)
  • System.out.println(Pocet instanci
  • Test.pocetInstanci())
  • Test t2 new Test()
  • System.out.println(Pocet instanci
  • Test.pocetInstanci())

40
Dedicnost
Obrazec
int xint y
presun(x1, y1)
Elipsa
Ctverec
int a int b
int a
41
Dedicnost
  • class Obrazec int x, y void presun(int x,
    int y) this.x x this.y y class
    Ctverec extends Obrazec int a

42
Dedicnost
  • Je-li neco ctverec, pak je to i obrazec
  • Je-li neco obrazec, nemusí to být ctverec

Ctverec c new Ctverec()c.presun(10, 20) //
dedí metodu presun()Obrazec o c // lze
priradit
Obrazec o new Ctverec()// o.a 5 //
neprípustné // Ctverec c o // neprípustné
43
Dedicnost
  • Není-li uvedena bázová trída, použije se
    java.lang.Object
  • String toString()
  • prevod objektu na textovou reprezentaci
  • boolean equals(Object obj)
  • porovnání s jiným objektem
  • int hashcode()
  • císelný kód objektu
  • Object clone()
  • vytvorení kopie objektu

44
Zapouzdrení prvku trídy
  • Soukromé promenné/metody private
  • prístupné pouze z vlastních metod
  • Chránené promenné/metody protected
  • prístupné i z metod zdedených tríd
  • Verejné promenné/metody public
  • prístupné i z metod jiných objektu

45
Konstruktory a dedicnost
  • Konstruktor musí nejprve zavolat zdedený
    konstruktor zajištení správné inicializace

class Obrazec public Obrazec(int x, int y)
this.x x this.y y protected
int x, yclass Ctverec extends Obrazec
public Ctverec(int x, int y, int a)
super(x, y) this.a a protected int
a
46
Konstruktory a dedicnost
  • Není-li zdedený konstruktor zavolán, zajistí se
    volání implicitního konstruktoru

class Citac public Citac() hodnota 10
protected int hodnotapublic class
CitacSKrokem extends Citac public
CitacSKrokem(int krok) // super() -- zavolá
se automaticky this.krok krok
protected int krok public void
volitelnyKrok() nastavHodnotu(vratHodnotu()kro
k)
47
Príklad
  • class Test public static void main(String
    args)
  • CitacSKrokem lepsiCitac new CitacSKrokem(5)
  • lepsiCitac.volitelnyKrok()
  • System.out.println(lepsiCitac.vratHodnotu())
  • lepsiCitac.krok()
  • System.out.println(lepsiCitac.vratHodnotu())

48
Konstruktory a dedicnost
  • Neexistuje-li žádný konstruktor, vytvorí se
    prázdný implicitní konstruktor

class Citac // public Citac() --
vytvorí se protected int pocet
  • Jak zajistit, aby nebylo možné vytvorit instanci
    trídy voláním operátoru new?

class Citac private Citac() ...
49
Evidence osob
  • public class Osoba public String login
    public String jmeno public String prijmeni

Problémy?
Osoba os new Osoba() System.out.println(os) o
s.login bon007
50
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)

51
2. problém - zobrazení
  • System.out.println(os)
  • Osoba_at_2ae3645f
  • class Osoba public String toString()
    return jmeno " " prijmeni
    System.out.println("os " os)
  • os Johnny Walker

Kdo je to?
52
3. problém - zapouzdrení
  • public class Osoba private String
    login
  • public String getLogin() return
    login
  • public void setLogin(String login) //
    tady by mela být kontrola
  • this.login login

53
4. problém - identita
  • Osoba o1 new Osoba(007,James,Bond)
  • Osoba o2 new Osoba(007,James,Bond)
  • Platí o1 o2 ?
  • public boolean equals(Object obj)
  • if( obj instanceof Osoba )
  • return login.equals(((Osoba)obj).login)
  • return false

Ne! Ruzné objekty
54
Príklad - Dedicnost
  • 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

55
Praktické cvicení cviceni3.zip
  • Úloha 1 Práce s trídami a objekty
  • Rozbalte v pracovním adresári soubor
    cviceni3.zip.
  • Prostudujte a vyzkoušejte zpusob práce s trídou
    Zlomek (Priklad1.java)
  • Vytvorte trídu Complex, která bude reprezentovat
    komplexní císlo s operacemi scítání, odcítání a
    násobení
  • Upravte rešení kvadratické rovnice tak, aby
    pracovalo s typem Complex

56
Príklad - Obrazce
Obrazec
obvod()obsah()
Kruh
Obdélník
r
a, b
Ctverec
57
Definice trídy Obrazec
  • class Obrazec
  • double obvod()
  • return 0.0
  • double obsah()
  • return 0.0

Jak vypadá Obrazec? Je to ABSTRAKCE!
58
Abstraktní trídy
  • abstract class Obrazec public abstract
    double obvod() public abstract double
    obsah()
  • 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

new Obrazec()
59
Abstraktní trídy
  • class Obdelnik extends Obrazec
    Obdelnik(double a, double b) this.a a
    this.b b double obvod() return
    2(ab) double obsah() return ab
  • class Ctverec extends Obdelnik
  • Ctverec(double a) super(a, a)

60
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

61
Rozdíly
  • Abstraktní trída
  • muže obsahovat instancní promenné
  • muže obsahovat konkrétní metody
  • lze rozširovat pouze jednu trídu
  • Rozhraní
  • nesmí obsahovat promenné
  • všechny metody jsou public abstract
  • lze implementovat více rozhraní

62
Pozdní vazba
  • static boolean vetsi(Obrazec o1, Obrazec o2)
    return o1.plocha() gt o2.plocha()
  • Která metoda plocha() se volá?
  • Vcasná vazba
  • výber volané metody v dobe prekladu
  • podle typu reference, pres kterou metodu voláme
  • Pozdní vazba
  • výber volané metody v dobe behu
  • podle typu objektu, na který reference ukazuje

63
Príklad použití pozdní vazby
  • void print(Object obj) print
    obj.toString()
  • class Object public String toString()
    Osoba_at_24f32eclass Osoba extends Object
    public String toString() Johnny Walker

64
Pretežování operací
  • Public class Citac int hodnota 0 void
    krok() n void krok(int d) hodnota
    d

pretížená operace
1 1 2.5 3.14 abcd efgh
pretížený operátor
65
Praktické cvicení cviceni3.zip
  • Úloha 3 Rozšírení schopností trídy Complex
  • Upravte trídu Complex tak aby implementovala zde
    uvedené pretížené metody

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)
66
Prostory jmen motivace
  • spolupráce více programátoru na jednom projektu
  • class MojeTrida ???
  • možnost distribuce knihoven tríd
  • použití implementací z ruzných zdroju v jedné
    aplikaci
  • new Seznam() ???

67
Prostory jmen
  • Jak zajistit jednoznacnost názvu?
  • konvence pro pojmenování
  • class MB_Trida
  • centrální pridelování
  • nerealizovatelné
  • využití existujících jednoznacných názvu
  • jméno domény organizace
  • cs.vsb.cz, sun.com, ...

68
Jména balíku tríd (packages)
java.lang . String . substring()
jméno metody
jméno balíku
jméno trídy
cz.vsb.cs.katis . Student . getLogin()
jméno balíku
jméno trídy
jméno metody
69
Vyhledávání balíku
  • umístení preložených tríd
  • soubory .class
  • archivy .jar (odpovídá formátu .zip)
  • nastavení cest pro vyhledávání
  • set CLASSPATH.c/java/libc/java/lib/mylib.jar
  • java classpath ./classes vyuka.java.Priklad1
  • struktura adresáre odpovídá jménu balíku
  • ./classes/vyuka/java/Priklad1.class

70
Definice príslušnosti k balíku
  • package cz.vsb.cs.katis
  • public class Student
  • String login public String getLogin()
    return login
  • ...

71
Príklad
  • package mujbalicek
  • public class Citac
  • ...

72
Prístup k prvkum balíku
  1. Plne kvalifikované jméno
  2. Príkaz import dovoz jedné trídy
  3. Príkaz import dovoz celého balíku
  4. Príkaz import statický import (nove JAVA 5.0)

java.util.Date new java.util.Date()
import java.util.Date Date new Date()
import java.util. Date new Date()
import static java.math.PI double r
cos(Math.PI theta) double r cos(PI theta)
73
Zapouzdrení prvku v balíku
  • Trídy a rozhraní oznacené public
  • prístupné ze všech balíku
  • v souboru .java muže být pouze jeden prvek
    oznacený public jméno se musí shodovat se jménem
    zdrojového souboru
  • Trídy a rozhraní bez oznacení public
  • prístupné pouze ze stejného balíku
  • v souboru .java jich muže být libovolný pocet

74
Zapouzdrení prvku ve tríde
  • private
  • dostupné pouze v rámci tela trídy
  • protected
  • dostupné v rámci stejného balíku trídám, které
    z aktuální trídy dedí
  • public
  • dostupné z libovolné trídy libovolného balíku
  • bez oznacení
  • dostupné z libovolné trídy téhož balíku

75
Kolize ve jménech
  • Odkaz musí být jednoznacný
  • Pozn. Co když chybí príkaz package?
  • implicitní balík vše funguje i bez public!

import cz.vsb.cs.util.import
java.util. Date today new
Date() java.util.Date today new
java.util.Date()
76
Standardní balíky JDK
  • java.lang
  • nepotrebuje príkaz import, doveze se automaticky
  • základní trídy (Object, Class, String, System,
    Math, Integer, Thread, ...), rozhraní
    (Comparable, ...) a výjimky (Exception, ...)

System.exit(1)System.out.println(
str.toLowerCase() )int val Integer.parseInt(st
r)double rnd Math.random()if(
Character.isDigit(c) )
77
Standardní balíky JDK
  • java.util
  • pomocné trídy (Currency, Calendar, Date, Random),
  • rozhraní a implementace abstraktních datových
    typu (List, Set, Map, LinkedList, TreeSet,
    TreeMap)

import java.util. System.out.println(new
Date())Arrays.sort(arr)
78
Standardní balíky JDK
  • java.io
  • práce s datovými proudy (soubory, bloky pameti,
    retezce, roury, ...)
  • java.net
  • podpora sítových aplikací (trídy URL, Socket,
    ...)
  • java.rmi
  • vzdálené volání metod (rozhraní Remote)

79
Standardní balíky JDK
  • java.applet
  • podpora appletu aplikací bežících v prohlížeci
    na strane klienta (IE, Netscape, ...)
  • java.awt
  • jednoduchá knihovna komponent grafického
    uživatelského rozhraní
  • javax.swing
  • pokrocilá knihovna komponent grafického
    uživatelského rozhraní

80
Standardní balíky JDK
  • java.sql, javax.sql
  • jednotný prístup k SQL databázím
  • javax.xml.parsers, javax.xml.transform
  • analýza XML souboru a jejich transformace
  • java.security, javax.security
  • kryptografie a bezpecnost aplikací

81
Rešení príkladu ze cvicení
  • package cviceni3public class Complex
  • private double re private double im
  • public double getRe() return re
  • public double getIm() return im
  • public double abs()
  • return Math.sqrt(re re im im)

82
Rešení príkladu ze cvicení
  • public Complex()
  • public Complex(double re)
  • this.re re
  • this.im 0.0
  • public Complex(double re, double im)
    this.re re
  • this.im im

83
Rešení príkladu ze cvicení
  • public void add(Complex c)
  • re c.re
  • im c.im
  • public static Complex add(Complex c1,
    Complex c2)
  • double re c1.re c2.re
  • double im c1.im c2.im
  • return new Complex(re, im)

84
Rešení príkladu ze cvicení
  • public String toString()
  • return im 0.0 ? Double.toString(re)
    re 0.0 ? im i re (im lt 0.0 ? ""
    ") im "i"
  • public boolean equals(Object obj) if(
    obj instanceof Complex ) Complex c
    (Complex)obj return re c.re im
    c.im return false

85
Praktické cvicení cviceni4.zip
  • Úloha 1 Práce s rozhraními
  • Rozbalte v pracovním adresári soubor
    cviceni4.zip.
  • Prostudujte jakým zpusobem je zajišteno trídení
    bulbinkovou metodou objektu typu
    Zlomek(Priklad.java)
  • Rozširte trídu Complex o implementaci rozhraní
    Porovnatelny
  • Úloha 2 Práce s rozhraními Comparable,
    Comparator
  • Prostudujte v JAVA API tyto dve rozhraní
  • Upravte trídy v balicku cviceni4 tak, aby
    používaly dané rozhraní.
Write a Comment
User Comments (0)
About PowerShow.com