Upload
nguyennhi
View
224
Download
0
Embed Size (px)
Citation preview
JAVA PROGRAMOZÁS1.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda
1.ELŐADÁS
Java bevezetés, nyelvi alapelemek2014-2015 tavasz
Előadás tematika2
1.Előadás:
Bevezetés a Java nyelvbe: Java történet, Java nyelv tulajdonságai, Szintaxis,
Programozói környezet, Egyszerű példák
A Java nyelv alapelemei: változók, konstansok, metódusok, osztályok,
objektumok, tömbök, vezérlési szerkezetek, operátorok.
Csomagok használata és importálása.
2. Előadás: Objektumorientált programozás Javá-ban:
Az osztályok részletes ismertetése. Példányváltozók, metódusok, metódusok
hívása, metódus nevek túlterhelése objektumok használata, hozzáférési
kategóriák. Statikus tagok: osztályváltozók, osztálymetódusok.
Konstruktorok, túlterhelés, láthatóság, getter-setter metódusok.
Objektumorientált programozás Javá-ban:
3. Előadás:
Objektumorientált programozás Javá-ban:
Konstruktorok, inicializáló blokkok, destruktor jellegű metódusok. Egységbe
zárás, öröklődés, polimorfizmus, absztrakt osztályok és metódusok.
Interfészek. Interfészek közötti öröklődés, interfészek implementálása.
Rendező interface-ek: Comparator, Comparable; Interface készítés; equals() és
hashCode() felüldefiniálása.
4. Előadás: Kivételkezelés Javá-ban
5. Előadás:Grafikus kezelői felület létrehozása (Java AWT) és esemény kezelés
Az AWT csomag, Layout manager, AWT komponensek, Appletek készítése
6. Előadás:Grafikus kezelői felület létrehozása (Java Swing)
SWING csomag, SWING komponensek
7. Előadás:
Java Input/Output:
Csatornák, leképzés fizikai adatszerkezetre, szűrők, véletlen elérésű file-ok,
kapcsolat a file rendszerrel, kivételek kezelése. Sorosítás.
8. Előadás: Hálózati alkalmazások készítése
A java.net package, ServerSocket, Socket, és DatagramSocket osztályok
9. Előadás: Szálak. Szálak jellemzői, létrehozása, vezérlése. Szinkronizálás.
10. Előadás: Java Kollekciók és generikus típusok
11. Előadás: Projektek védése
Labor tematika3
� Nagyjából követi az előadás tematikát. Kitűzött feladatok közös illetve egyéni megoldása. Házi feladatok bemutatása
� Fejlesztési eszközök:JDK 8 (Java Platform, Standard Edition) � JDK 8 (Java Platform, Standard Edition) (http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html)
� IDE szerkesztő: NetBeans� https://netbeans.org/� http://www.oracle.com/technetwork/articles/javase/index-
jsp-138363.html
Labor tematika – Fejlesztési eszközök4
� Egyéb fejlesztési eszközök:
� Eclipse� https://eclipse.org/home/index.php
� IntelliJ IDEAIntelliJ IDEA� https://www.jetbrains.com/idea/
� UML eszközök:� Visual Paradigm (Integrálható Netbeans-be, Eclipse-be)
� ArgoUML
� OpenAmeos
Könyvészet és dokumentáció5
� Könyvtári könyvek� Angster Erzsébet, Objektumorientált
tervezés és programozás. Java I-II.(Bazele programării orientate pe
obiecte), Ed. 4 Kör Bt., Budapesta, obiecte), Ed. 4 Kör Bt., Budapesta, 2002.
� Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.
Könyvészet és dokumentáció6
� Könyvtári könyvek� Antal Margit: Objektumorientált
programozás, Scientia Kiadó, 2007
� Más jegyzet:
� http://nagygusztav.hu/sites/default/files/csatol/java_programozas_1.3.pdf
Könyvészet és dokumentáció7
� Hasznos linkek
� http://docs.oracle.com/javase/7/docs/
� http://docs.oracle.com/javase/tutorial/
� http://www.tutorialspoint.com/java/� http://www.tutorialspoint.com/java/
� http://www.learnjavaonline.org/
� http://www.javatpoint.com/
Könyvészet és dokumentáció8
� Előadások, labor feladatok, egyéb dokumentációk megtálalhatok az alábbi linken:
http://www.emte.siculorum.ro/~pallaszlo/oktatas_hu.html (Java programozás)
Vizsgakövetelmények9
� Felmérési mód: kollokvium
� Zárthelyi: 60% (11. hét (Labor))� Gyakorlat + Elmélet
� Projekt: 30% (védés - 11. hét (Előadás))
� Házi feladat: 10% (2 hetes határidő)
� Mind a zárthelyi és projekt átmenő (5-ös) kell legyen a sikeres vizsgához
� Labor óra: max 3 hiányzás engedélyezett
� Részletes követelmények
Tartalom:
Java történet
1.Előadás10
1. Java történet
2. Java nyelv tulajdonságai
3. Programozói környezet
4. Java nyelv alapelemei: változók, konstansok, vezérlési szerkezetek, operátorok, metódusok, osztályok, objektumok, tömbök, csomagok használata
Programozási nyelvek rangsor 2014
� TIOBE � IEEE Spectrum
11
Java nyelv bevezető
� a SUN Microsystems által kifejlesztett általános célú, objektumorientált programozási nyelv
� A fejlesztések a ‘90-es évek elején kezdődtek és folytatódtak egészen napjainkig
2009-ben az Oracle felvásárolta a SUN céget� 2009-ben az Oracle felvásárolta a SUN céget
� 2011-ben, Java 1.7-es verzió az Oracle gondozásában
� 2014-ben, 1.8-as verzió
� Szlogen: „write once, run anywhere”
Java nyelv jellemzői
� Egyszerű
� Szintaxisa hasonlít a C, C++ nyelvekre, de számoselemet egyszerűsítettek. Automatikus memória kezelés
� Objektumorientált� Objektumorientált
� Elosztott
� Támogatja a HTTP, FTP protokollokat
� Robusztus, biztonságos
� Nincsenek pointerek
Java nyelv jellemzői
� Architektúra semleges, hordozható
� Bájtkódot használ, amit a virtuális gép futtat
� Interpretált
� Just-In-Time (JIT) compiler� Just-In-Time (JIT) compiler
� Többszálú
� Párhuzamosításra lehet használni, ami hasznos lehet főleg több processzoros gépek esetén
Java nyelv jellemzői
� A Java forráskód .java kiterjesztésű
� A forráskód .class kiterjesztésű fájlokba fordítódik
� A .class fájl bájtkódot tartalmaz (nem natív kód)
� A bájtkódot a Java Virtuális Gép (Java Virtual� A bájtkódot a Java Virtuális Gép (Java VirtualMachine) hajtja végre
Java nyelv jellemzői
� A Java VM (JVM) tetszőleges operációs rendszerre telepíthető, ezért ugyanaz a bájtkód (.class) mindegyik operációs rendszeren fut
Java kronológia
� 1991: James Gosling, Oak (tölgyfa) nyelv� 1996: JDK 1.0, fordító, virtuális gép, javac, appletek� 1997: JDK 1.1� 1988: J2SE 1.2, esemény kezelés, JIT� 2000: J2SE 1.3, J2EE, J2ME, JDBC, stb.� 2000: J2SE 1.3, J2EE, J2ME, JDBC, stb.� 2002: J2SE 1.4� 2004: J2SE 5.0, generikus osztályok � 2006: Java SE 6� 2011: Java SE 7� 2014: Java SE 8
Java szabványok
� Java Standard Edition (J2SE)
� Kliens alkalmazások, appletek készítése
� Java Enterprise Edition (J2EE)� Szerver oldali alkalmazások készítése (Java Servlets, Java
Server Pages)Server Pages)
� Java Micro Edition (J2ME)� Mobil alkalmazások készítése
Java keretrendszer – Java SE 819
� Java nyelv
� Eszközök, Java API
� javac, java, javadoc, jar, JConsole, stb.
� Felhasználói felületek� Felhasználói felületek
� JavaFX, AWT, Swing
� Integration libraries
� JDBC
� Java Virtuális gép
Java keretrendszer – Java SE 820
Java keretrendszer – Java SE 821
� Java platform leegyszerűsítve:
� Java VM
� Java API (Application Programming Interface): � Sok használatra kész szoftverkomponenst tartalmaz: Sok használatra kész szoftverkomponenst tartalmaz:
csomagokba szervezett osztályokat es interfészeket
Java környezet22
� Java programok futtatása
� Elegendő a JRE (Java Runtime Environment)
� Java programok fejlesztése
� Java Development Kit (JDK)� Java Development Kit (JDK)� Tartalmazza a JRE-t és egyéb eszközöket:
� javac: Java fordító
� java: futtatóprogram
� javadoc: dokumentáció generáló
� jar: JAR fájlok kezelésére szolgál
� IDE: pld. NetBeans
Forrásprogram(.java) szerkezete23
Csomagok importálása
App a fordítási egység egyetlenpublikus osztálya
Main metódus: a program belépési pontja
Forrásprogram24
� Egy forrásfájl neve a fájlban implementált osztály nevével egyezik meg
� Ha a megvalósított osztály valamilyen csomagban (package) van, akkor a fájl a package nevével (package) van, akkor a fájl a package nevével azonos alkönyvtárba kell elhelyezni
Fordítás, futtatás parancssorból25
� Fordításhoz használható a javac parancs
� Példa: javac eloadasok\E1\Hello.java
Futtatás a paranccsal történik� Futtatás a java paranccsal történik
� Példa: java eloadasok.E1.Hello
� A Path környezeti változó beállítása szükséges
� Példa: set PATH=%PATH%;c:\ProgramFiles\Java\jdk1.8.0_31\bin\
Példa – Hello World!, NetBeans-ben26
Példa – Hello World!, NetBeans-ben27
Szerkesztés
Futtatás, kimenet:
A Java nyelv alapelemei28
Azonosítók29
� A Java az Unicode karakterkészletet használja
� Betűvel kezdődik – betűvel vagy számmal folytatódik
� Case-sensitive, azaz különböznek a kis- és � Case-sensitive, azaz különböznek a kis- és nagybetűk
� Az azonosítók hossza nincs korlátozva
� A nyelv kulcsszavai nem lehetnek azonosítók
Megjegyzések30
� Javában a megjegyzés (comment) két típusú lehet:
� Egysoros megjegyzés:
// Ez egy egysoros megjegyzes
� Többsoros megjegyzés:� Többsoros megjegyzés:
/*
…
*/
� Dokumentációs megjegyzés:
/** … */
Literálok31
� Literál: egy állandó, amely beépül a program kódjába
� Egész literál: � Decimális: +125, -12
� Oktális: 021, 077
� Hexadecimális: 0xa1, 0xff� Hexadecimális: 0xa1, 0xff
� Valós literál� Tizedes: 3.14
� Lebegőpontos: -3.4e12
� Karakter literál: ‘a’, ‘X’, ‘\u0041’, ‘\t’
� Szöveg literál: “almafa”
Kivételes karakterek32
Egyszerű típusok (primitív)33
� boolean: logikai típus (true, false)
� char: 16 bites Unicode karakter
� byte: 8 bites egész szám (-128 - +127)
� short: 16 bit, (-32 768 - +32 767)� short: 16 bit, (-32 768 - +32 767)
� int: 32 bit (-2 147 483 648 - +2 147 483 647)
� long: 64 bit (-9 223 372 036 854 775 808 - +...)
� float: 32 bites lebegőpontos szám (-3,40292347E+38 -+3,40292347E+38)
� double: 64 bit (-1,79769313486231570E+308 - +...)
Változók34
� Változó: egy névvel azonosított memóriaterület
� Egy változónak mindig van azonosítója, adott méretű memóriahelye, típusa és aktuális értéke
� Javában minden változót deklarálni kell� Javában minden változót deklarálni kell
� Két típusú változó: egyszerű (primitív), referencia (lásd később)
� Deklarálás, inicializálás:
típus változo1 [=kifejezes1], változo2;
� Példa:
double x = 4.5, y;
Konstansok35
� Konstans:
� Egy változónak a „befagyasztása”, azaz nem engedjük megváltoztatni
� Nem összetévesztendő a literállal
� Kódolási konvenció: nagybetűvel írjuk
� Példa:
final int EVSZAM=2015;
Operátorok36
� Java kifejezés: operandusokból és operátorokból (műveletekből) áll.
� Operátor:
� Unáris: egyetlen operandusa van� Unáris: egyetlen operandusa van� Prefix: operandus előtt szerepel (++i)
� Postfix: operandus után szerepel (i--)
� Bináris: két operandusa van
Operátorok37
� Unáris postfix és prefix operátorok:
[ ] tömbképző (lásd később)
.(pont) minősítő operátor
(param) metódus képző(param) metódus képző
~, ! Bitenkénti operátorok
new példányosító operátor (lásd később)
(típus) kifejezés típuskényszerítő
+(plusz), -(minusz) előjel operátorok
++, -- léptető operátorok
Operátorok
� Aritmetikai operátorok:
+ összeadás
- kivonás
* szorzás
� Relációs operátorok:
> nagyobb
>= nagyobb vagy egyenlő
< kisebb
38
* szorzás
/ valós osztás
% maradékképzés
< kisebb
<= kisebb vagy egyenlő
= = egyenlő
! = nem egyenlő
Operátorok
� Logikai operátorok:
&& logikai és
|| logikai vagy
! logikai nem
� Feltételes kiértékelés:
(feltétel) ? kif1 : kif2
� Példa:int y = 70;
39
! logikai nem
& bitenkénti és
| bitenkénti vagy
^ bitenkénti nem
~ bitenkénti tagadás (negáció)
int y = 70;
int x = (y>50)?100:0;
Operátorok40
� Értékadó operátorok:
� = alapértékadó operátor, érték rendelése változóhoz
� Rövidített értékadó operátorok: +=, -=, *=, /=, %=, stb.
� Példa:
Kifejezések kiértékelési sorrendje41
� A kifejezések kiértékelési sorrendjét meghatározza:
� Zárójelezés
� Operandusok prioritása
� Azonos prioritás eseten balrol-jobbra szabály, kivétel az � Azonos prioritás eseten balrol-jobbra szabály, kivétel az értékadás, amely jobbrol-balra értékelődik ki.
Operátorok precedenciája42
Utasítások43
� Blokk utasítás: {…}
� Mindaz, amit abban a blokkban adunk meg, pontosan arra a blokkra érvényes
� Egy blokk utasításokból áll� Egy blokk utasításokból áll
� Minden utasítást pontosvessző zár le
Utasítások fajtái44
� Deklaráló utasítás (Memóriahelyek foglalása):int letszam;
� Értékadó utasítás (Memóriahelyek foglalása):int letszam;
� Postfix és prefix növelő és csökkentő utasítások :� Postfix és prefix növelő és csökkentő utasítások :letszam++; --letszam;
� Metódushívás: System.out.println("Hello");
� Példányosítás (Új objektum létrehozása):aDatum = new Datum(2000,11,05);
� Programvezérlő utasítás: if (i==0) ...
� Üres utasítás: ; (csak egy pontosvessző)
Típuskonverziók45
� Java erősen típusos nyelv: a fordító a típus kompatibilitásának az ellenőrzését minden esetben elvégzi
� Két szempont:Automatikus (implicit) vagy kényszerített (explicit) � Automatikus (implicit) vagy kényszerített (explicit) konverzió
� Szűkítő vagy bővítő konverzió
� Példa:
double d; int i = 5;
d = i; // int konvertálása doubel-re implicit módon. Bővités
Típuskonverziók46
� Példa:
d = 79.4;
i = (int)d; // double konvertálása int-re explicit módon. Szűkités ->79explicit módon. Szűkités ->79
i = d; //szintaktikai hiba
� A szűkítő konverzió információvesztéssel jár
Egyágú szelekció - if
� Példa
47
Kétágú szelekció - if..else48
if (feltétel)
utasítás1;
else
utasítás2;
if (feltétel) {
utasítás;
...
}utasítás2; }
else {
utasítás;
...
}
Többágú szelekció - else if és switch49
if (feltétel1)
utasítás1;
else if (feltétel2)
utasítás2;
switch (kifejezés) {
case érték1:
utasítások;
break;
case érték2:utasítás2;
...
else
utasításN;
case érték2:
utasítások;
break;
...
default:
utasítások;
}
Többágú szelekció - else if és switch50
Iterációk – for51
for (inicializálás; feltétel; léptetés) {
utasítás1;
utasítás2;
...
utasításN;
}
Iterációk – for
� Parancsori paraméterek kiíratása:
Iterációk – while, do while53
while (feltétel) {
utasítás1;
utasítás2;
...
do {
utasítás1;
utasítás2;
... ...
utasításN;
}
...
utasításN;
} while (feltétel);
Iterációk – while, do while - Példa54
Kiugrás ciklusból
� Break: az aktuális utasításblokkból (pl. ciklusból) való azonnali kiugrást eredményezi
� Continue: hatására a vezérlés az utasításblokk (ciklus) végére kerül(ciklus) végére kerül
� Példa:
Metódusok
� Eljárás:
� Utasítások egyszerű végrehajtása
� Visszatérítési típusa: void (semleges)
� Függvény:� Függvény:
� Van visszatérítési értéke
� Eljárásként is hívható
� Statikus metódusból kizárólag az osztály statikus elemeire hivatkozhatunk
Metódusok
� Szintaxis:
<módosítók>]<visszatérési típus><metódus neve>
([<formális paraméterlista>])[<throws ...>]
{
<metódusblokk><metódusblokk>
}
� Megjegyzések:� Javában csak érték szerinti paraméterátadás van, azaz a
paraméter helyén szereplő értékről másolat készül. A metódus ezt a másolatot látja, használja
� Fordítási hiba, ha függvényben van return nélküli ág; lokális változó nincs inicializálva
Metódusok - Példa
Metódusok - Példa
Metódusok - Példa
Java osztályok rendszerezése61
� Java API: kb. 2000 osztály
� A java.lang csomag legfontosabb osztályai:
Az Object osztály62
� Minden osztály közös őse
� Bármely osztályból létrehozott példány “az egy” objektum
� A Java minden objektumára jellemző metódusokat � A Java minden objektumára jellemző metódusokat tartalmaz. Például:
� boolean equals(Object obj)
� String toString()
� Class getClass()
Primitív típus vs. Referencia63
� Primitív:
� 8 primitív típus: boolean, char, byte, short, int, long, float, double
� A változó azonosítójával közvetlenül hivatkozunk a változó memóriahelyére
� A deklaráló utasítás végrehajtása: memória foglalás
� A programozó nem definiálhat primitív típust
Primitív típus példa64
� Közvetlen (direkt) címzés:
Referencia típus65
� Objektumra mutat
� A változó azonosítójával az objektum
memóriahelyére közvetve hivatkozunk egy
referencián (hivatkozáson) keresztül
� A hivatkozás rejtve marad (automatikus indirekció)
� NULL referencia: nem mutat semmire, nem hivatkozik
objektumra
Referencia típus példa66
Ember ember = new Ember("Erika",1953);
ember objektum címe
Objektum létrehozása67
� Létrehozás a new operátorral:
new <OsztályAzonosító>(<aktuális
paraméterlista>)
� PéldányosításPéldányosítás
� Memóriafoglalás
� Konstruktorhívás: beállítja az objektum kezdeti állapotát
� adatok
� kapcsolatok
� Visszaadja az új objektum referenciáját
Objektum deklarálása68
� Deklarálás:
<OsztályAzonosító> objektum;
� Az objektum egy referencia típusú változó
� Memóriafoglalás: csak a referencia részére� Memóriafoglalás: csak a referencia részére
� Az objektum létrehozása a programozó feladata
<OsztályAzonosító> objektum;
objektum=new <OsztályAzonosító>(<aktuálisparaméterlista>);
<OsztályAzonosító> objektum =
new <OsztályAzonosító>(<aktuális paraméterlista>);
Objektum értékadás69
Objektumok egyenlőségvizsgálata70
� Objektumok állapotát nem lehet a (==, !=)
operátorokkal összehasonlítani (referencia hasonlíás)
� Objektumok egyenlőségét az equals metódussal szokás
megállapítanimegállapítani
� Példa:
� Kimenet:
Objektumok egyenlőségvizsgálata71
� Objektumok állapotát nem lehet a (==, !=)
operátorokkal összehasonlítani
� Objektumok egyenlőségét az equals metódussal szokás
megállapítanimegállapítani
� Példa:
� Kimenet:
Objektum élete, automatikus szemétgyűjtés
72
� Automatikus szemétgyűjtés (garbage collection):
� A rendszer bizonyos időnként automatikusan felszabadítja a hibatkozás nélküli objektumok memóriahelyét
� Példa:
ember1 = new String("Gábor");
ember1 = new String("Anikó");
A String osztály73
� Szöveg tárolására szolgál
� Értéke egész élete során állandó marad
� Unikód karakterek sorozata, a karakterek sorszámozottak (0 a legelső sorszám)sorszámozottak (0 a legelső sorszám)
� Létrehozás:String szoveg=new String(”Kész!");
String szoveg=”Kész!";
� Konstruktorok:
� String()
� String(value: String), String(buffer: StringBuffer)
A String osztály74
� Hossz, index� length(): int
� charAt(index: int): char
� Manipulált karakterláncok� toLowerCase(): String
� toUpperCase(): String
� trim(): String
� replace(oldChar: char, newChar: char): String
� substring(beginIndex: int, endIndex: int): String
� Konkatenálás� concat(str: String): String
A StringBuffer osztály75
� Manipulálható szöveg
� Konstruktorok� StringBuffer()
� StringBuffer(length: int)
� StringBuffer(str: String)
� Kapacitás, hossz, index� capacity(): int
� length(): int
� ensureCapacity(minimumCapacity: int)
� setLength(newLength: int)
� charAt(index: int): char
A StringBuffer osztály - Példa76
Objektum átadása paraméterként77
� Az aktuális paraméter értékadás szerint kompatibilis kell legyen a formális paraméterrel
� Nem az objektum másolódik át, hanem csak a referenciareferencia
� Az átmásolt referenciával éppúgy meg tudjuk változtatni az objektumot
Objektum átadása paraméterként78
Primitív típusok csomagolása79
� Célok:� Primitív típusú változók objektumként kezelése
� Primitív típusokkal kapcsolatos információk lekérdezése
� Minden primitív típushoz tartozik egy csomagoló � Minden primitív típushoz tartozik egy csomagoló osztály (wrapper class): Character, Boolean, Byte, Short, Integer, Long, Float, Double.
� A csomagoló osztályok példányai változtathatatlanok
� Konstruktorok:<Type> (<type> value)
Például:Character cObj = new Character('A');
Primitív típusok csomagolása80
� Konstruktorok:<Type> (String s)
Például:Boolean bObj = new Boolean("True");
� Példánymetódusok:� Példánymetódusok:� String toString()
Például:Double dObj = new Double(6099.8);String s = dObj.toString(); //s=="6099.8”
� <type> <type>Value()
Például:Integer iObj = new Integer(30);int i = iObj.intValue(); // i==30double d = iObj.doubleValue(); // d==30.0
Primitív típusok csomagolása81
� Numerikus csomagoló osztályok� static final <type> MIN_VALUE =
<a típusnak megfelelı érték>;
� static final <type> MAX_VALUE =
<a típusnak megfelelı érték>;<a típusnak megfelelı érték>;
Például:System.out.println(Byte.MIN_VALUE);
� static <type> parse<Type>(String s)
Például:int i = Integer.parseInt("50"); // i==50
Java csomagok82
� Az osztályok, interfészek csoportosítását a Java nyelvi szinten támogatja, a csomag (package)
segítségével
� A csomagok hierarchikus rendszert alkotnak� A csomagok hierarchikus rendszert alkotnak
� A csomagnevekben az egyes szinteket pont választja el.� Példa: java.io, java.math, stb.
� A hierarchiaszintek száma tetszőleges lehet
Java csomagok83
� A Java megengedi, hogy két külön csomagban legyen két azonos nevű osztály
� minősített nevek (qualified name): az azonos nevű osztályok megkülönböztetésére szolgálnakosztályok megkülönböztetésére szolgálnak
� A minősített nevek az osztályt tartalmazó csomag teljes nevéből, és az osztály egyszerű nevéből állnak
Csomagok deklarációja84
� Egy osztályt a package kulcsszó segítségével helyezhetünk el egy csomagban
� Egy forráskódban csak egy package deklaráció lehet, a forráskód legelejénlehet, a forráskód legelején
� Ha nincs package deklaráció, az adott osztály, vagy interfész a névtelen csomagba kerül
� Példa:
� A definiált osztály minősített neve csomag.A lesz
Csomagok leképzése fájlrendszerre85
� A fordítási egységek fájlok .java kiterjesztéssel
� A csomag, alcsomag nevek könyvtárak, alkönyvtárak
� Példa:package cs1.cs2.cs3;package cs1.cs2.cs3;
� Mindig a package root alól adjuk ki a fordításhoz/futtatáshoz szükséges parancsokat
� Példa:� Fordítás
� Futtatás
Osztályok elérése86
� Egy osztályra a definíciójával megegyező csomagban az egyszerű nevével hivatkozhatunk
� Példa:
Osztályok elérése87
� Egy osztályra a definíciójától eltérő csomagban többféleképpen hivatkozhatunk:
� Minősített nevek használata (kényelmetlen)
Osztályok elérése88
� Import deklarációk� import csomag.osztalynev;
� import csomag.*; (minden publikus osztályt importálunk)
� Az import java.lang.*; minden fordítási egységben � Az import java.lang.*; minden fordítási egységben automatikusan megtörténik
Könyvészet89
� Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II. (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt., Budapesta, 2002.
� Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.2011.