Programoz si technol gi k
This presentation is the property of its rightful owner.
Sponsored Links
1 / 171

Programozási technológiák PowerPoint PPT Presentation


  • 38 Views
  • Uploaded on
  • Presentation posted in: General

Programozási technológiák. 2007/08. 1. Az OOP főbb jellemzői. Objektum, osztály. Objektum : Információkat tárol, és kérésre feladatokat hajt végre. Logikailag összetartozó adatok és rajtuk dolgozó algoritmusok összessége: adatok metódusok

Download Presentation

Programozási technológiák

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Programoz si technol gi k

Programozsi technolgik

2007/08


1 az oop f bb jellemz i

1. Az OOP fbb jellemzi


Objektum oszt ly

Objektum, osztly

  • Objektum: Informcikat trol, s krsre feladatokat hajt vgre. Logikailag sszetartoz adatok s rajtuk dolgoz algoritmusok sszessge:

    • adatok

    • metdusok

  • Az objektumot zenetek (krelmek) ltal lehet megkrni a feladatok elvgzsre. (Ez egy metdus vgrehajtst jelenti.)

  • Osztly (class): Objektumtpus, amely alapjn pld-nyokat, azaz objektumokat hozhatunk ltre.


El ny k c lok

Elnyk, clok

  • A szoftverfejleszts sorn az egytt vltoz rszek elklnthetk

  • Projektek kztti jrahasznosthatsg nvelse


Konstruktor p ld nytag oszt lytag

Konstruktor, pldnytag, osztlytag

  • Az objektumot ltre kell hozni, s inicializlni kell. Az inicializlst vgz metdust konstruktornak nevezzk.

  • Tovbbi fogalmak:

    • pldnyvltoz,

    • pldnymetdus,

    • osztlyvltoz (kzs vltoz),

    • osztlymetdus (objektum ltrehozsa nlkl is tud dolgozni, csak az osztlyvltozkat manipullhatja)


Oop jellemz k

OOP jellemzk

  • Bezrs, az informci elrejtse: az adatokat csak interfszeken (metdusok) keresztl lehet elrni.

  • rklds: az utd osztly rkli az s adatait, metdusait, valamint tartalmazhat jakat, s fellrhat rgi metdusokat.

  • Polimorfizmus tbbalaksg: ugyanarra az zenetre (krelemre), azaz metdus hvsra, klnbz objektumok klnbzkppen reagl-hatnak.


L that s g

Lthatsg

  • Az osztly deklarlsakor megadhatjuk, hogy mely adatokat lehet az objektumon kvlrl elrni

    • Nyilvnos (public): kvlrl elrhet

    • Vdett (protected): hozzfrs csak sajt s az rks metdusok szmra

    • Privt (private): hozzfrs csak sajt met-dusok szmra


2 a java nyelv

2. A Java nyelv


Oo nyelvek

OO nyelvek

  • Simula-67

  • Smalltalk (70 eleje, XEROX)

  • Hibrid nyelvek: C++, Turbo Pascal

  • Java: 91-96, SUN MicroSystem


A java f bb jellemz i

A Java fbb jellemzi

  • C++-- kevesebb nyelvi eszkz, szigorbb, ktttebb, kevesebb hibalehetsg

  • Hordozhat kd: egy virtulis gpen (JVM, Java Virtual Machine) fut n. bjtkd. Nincsenek implementcifgg elemek.

  • Rohamos fejlds kulcsa a JVM beptse a Web bngszkbe.

  • Fejleszthet:

    • Alkalmazs (application)

    • Applet

    • Servlet

    • JSP (Java Server Pages)


Jdk java development kit

JDK (Java Development Kit)

  • Fejleszti s futtat krnyezet (java.sun.com) Rszei:

    • API (Application Programming Interface) osztly-knyvtr (a Java egyik ereje a rengeteg ksz osztly)

    • Fordt

    • rtelmez

    • Appletnz

    • Help, stb

  • jabb neve: pl. J2SE (Java 2 Platform, Standard Edition)

  • Csomag: logikailag sszetartoz osztlyok. Csomag struktra knyvtr struktra.


Programoz si technol gi k

public class Hello{ public static void main(String[] args){ System.out.println("Hello World!"); }}

  • A Hello nev osztly publikus, ms csomagokbl is ltni lehet.

  • A main metdus a program belpsi pontja.

    • Publikus

    • A static kulcssz azt jelenti, hogy ez osztlymetdus

    • void: nincs visszatrsi rtke, azaz eljrs

    • String[] args: a parancssor paramterek

  • A System egy osztly, amelyben tallhat egy out objektum, melynek a println egy metdusa.


Ki r s beolvas s

Kirs, beolvass

import extra.*;

//importlni kell azon osztlyokat, csomagokat, //amelyekre hivatkozunk

...

int egysegar, mennyiseg, ar; //4 b. egsz tpus

egysegar=Console.readInt("Egysgr: ");

mennyiseg=Console.readInt("Mennyisg: ");

ar=egysegar*mennyiseg;

System.out.println("n " + mennyiseg +

" l benzint tankolt sszesen " + ar +

"Ft rtkben");

//a System osztly a java.lang csomagban van //benne, amit nem kell importlnunk


Ki r s beolvas s1

Kirs, beolvass

  • A Console osztly metdusai (fggvnyei):

    int readInt()

    int readInt(String str)

    Hasonlan: readLong, readDouble, readChar, readLine

  • A print s println metdusoknak egyetlen param-terk lehet, de az tbbfle tpus. Ha egyszerre tbb dolgot is ki szeretnnk ratni, akkor ezeket ssze kell adnunk. A Java automatikusan szvegg konvertl.

  • Pl. print("a+b=" + a + b)

  • Pl. print("a+b=" + (a + b))


A program alkot elemei

A program alkotelemei

  • Azonostban betk, szmjegyek, a _ jel s a valuta szimblumok szerepelhetnek. Szmjeggyel nem kezddhet. Akr kezetes bett is tartalmazhat (unikd), de ezt inkbb kerljk.

  • Kulcssz

  • Literl: lland, amely bepl a program kdjba. Lehet:

    • egsz (automatikusan int tpus, lehet hexad., decimlis, oktlis),

    • vals (pl: 2.3 2. .3 6e23),

    • logikai (true, false),

    • karakter (pl. '?', '\u1ac5' ),

    • szveg (pl. "valami"),

    • null.

      Vezrl szekvencik: \n \t \" \' \\

      pl. println("Egy idzet: \"Talpra magyar!\"")


Java t pusok

Java tpusok

  • Primitv tpusok: (numerikus vagy logikai)

    • byte1 b.-128 .. 127

    • short2 b.-32768 .. 32767

    • int4 b.kb -2*109 .. 2*109

    • long8 b.kb. -1019 .. 1019

    • float4 b.

    • double8 b.

    • char2 b.

    • boolean

  • Referencia tpus: olyan mutat, mely egy objektum hivatkozst tartalmazza.

Numerikus tpusok


A char is numerikus t pus

A char is numerikus tpus

char c;

int a;

c=65;

System.out.println(c);

c='A'+1;

System.out.println(c);

a=c+1;

System.out.println(a);


Programoz si technol gi k

  • float

    • 4 bjt

    • Kb. 1.4E-45 3.4E+38

    • 6-7 jegy pontossg

  • double

    • 8 bjt

    • Kb. 5E-324 1.8E+308

    • 14-15 jegy pontossg


V ltoz deklar l s

Vltoz deklarls

  • Deklarl utasts

  • Adhat kezdrtk is (inicializls).

  • Pl:

    int a, b;

    double x, y = 2.4;


Forr sprogram szerkezete

Forrsprogram szerkezete

  • A forrsllomny (fordtsi egysg) egy vagy tbb osztlybl llhat.

  • A forrsllomny neve a main metdust tartalmaz egyetlen publikus osztly neve lesz.

  • Fordtskor tbb class kiterjeszts llo-mny keletkezhet.


Programoz si technol gi k

import java.utils.*;

import extra.*;

//Egy vagy tbb osztly deklarlsa, a sorrend mindegy

class C1{

...

}

class C2{

...

}

...

public class Prog{

...

public static void main(String[] args){

...

}

...

}


Oper torok

Opertorok

  • Unris postfix s prefix opertorok

    • [ ] tmbkpz

    • . minst

    • ( ) metdus kpz

    • ~, ! bitenknti, ill. logikai tagads00

    • new pldnyost

    • (tpus)kifejezs tpusknyszert

    • +, - eljel

    • ++, --lptet, pl. i++ vagy ++i mindkett nveli i rtkt, de az els rtke i eredeti, mg a msodik i megnvelt rtke lesz.


Programoz si technol gi k

++, --

int a = 0, b, c;

b = ++a;

a = 0;

c = a++;

c = ++b + a++;

c = a+++++b;

c = a++ + ++b;


Multiplikat v oper torok

Multiplikatv opertorok

  • *, /

  • % maradkos oszts

  • Ha az operandusok egszek, akkor az eredmny is egsz, ha legalbb az egyik operandus vals, akkor az eredmny is vals.

  • Pl.int ossz = 2 + 3;double atlag = ossz / 2;

  • Megj. A maradkkpzs vals szmokra is alkalmazhat


Programoz si technol gi k

  • Additv opertorok

    +, -

  • Relcis opertorok (az eredmny boolean tpus lesz)

    <, <=, >, >=,==, !=

  • Logikai opertorok

    • !nem

    • &, &&s(teljes, ill. rvid kirtkels)

    • |, ||vagy

    • ^kizr vagy

  • Bitenknti opertorok

    • ~komplementls

    • &, |, ^

    • <<,>>,>>>lptetsek (>>>: minden esetben 0 lp be)


Programoz si technol gi k

  • Feltteles opertorok

    (felttel) ? kifejezs1: kifejezs2pl. kamat = (fiz>200000)?10:0;

  • rtkad opertorok

    =, +=, -=, *=, /=, %=

    Az sszetett rtkads szintaktikja: vltozopertor = kifejezs a += b

    szemantikja: vltoz = (tpus) vltozopertor kifejezsa = a + b

    ahol tpus a vltoz tpusa, amelyet rknyszer-tnk a jobboldalra.


Rt kad oper torok

rtkad opertorok

  • Vigyzzunk az sszetett ill. a hagyomnyos rtkad utastsok nem minden esetben teljesen egyformk!

    int a=10;

    a+=5;

    megegyezik az a=a+5 ut.-al, mindkt oldal int

    a+=1.5;

    nem egyezik meg az a=a+1.5 ut.-al, mely szintaktikai hibs, hiszen a jobb oldal double

  • Lehetsges a tbbszrs rtkads, pl: a=b=5;


Ki rt kel s

Kirtkels

  • Egy kifejezs kirtkelsi sorrendjtmeg-hatrozzk:

    • zrjel

    • priorits

    • asszociativits (balrl jobbra vagy jobbrl balra szably)


Java utas t sok

Java utastsok

  • deklarl; pl. int a;

  • rtkad; pl. a = b * 2;

  • postfix s prefix nvel s cskkent; pl. a++;

  • metdushvs, pl. System.out.println("Hah!");

  • pldnyosts, pl. auto = new Auto("ABC123");

  • Programvezrl, pl. elgazsok, ciklusok

  • res: ;


Java utas t sok1

Java utastsok

  • Minden utastst pontosvessz zr le.

  • Blokk (vagy sszetett utasts): { ... }


T puskonverzi k

Tpuskonverzik

  • A Java ersen tpusos nyelv

  • Tpuskonverzi lehet

    • automatikus (implicit)

    • knyszertett (explicit): (tpus)kifejezstype cast

      illetve

    • szkt

    • bvt


Programoz si technol gi k

Primitv tpusok esetn egy szkebb adattpus rtke konvertlhat egy bvebb adattpus rtkbe informci-veszts nlkl.

Ez ltalban automatikus.

int i;double d;byte b;short s;

b + s//implicit bvt konverzi (int)

d = i; //implicit bvt konverzi

i = d; //szintaktikai hiba

i = (int)d; //explicit szkt konv.


Numerikus oper torok t puskonverzi i

Numerikus opertorok tpuskonverzii

  • Automatikus konverzik a kvetkez szablyok szerint:

    • Unris opertorok: ha az operandus int-nl szkebb, akkor int- konvertl, egybknt nem konvertl

    • Binris opertorok: mindkt operandust a kett kzl bvebb, de minimum int- konvertlja

      (Az egsz literl automatikusan int, a vals literl automatikusan double)


Rt kad utas t s

rtkad utasts

  • vltoz = kifejezs;

  • A kifejezs tpusnak rtkads szerint kompatbilisnek kell lenni a vltoz tpusval:

    • azonos tpusok

    • a jobb oldal szkebb, akkor implicit bvt konverzi

    • a bal oldal byte, short vagy char, a jobb oldal int, s a fordt el tudja dnteni, hogy a jobboldal belefr a baloldalba, akkor implicit szkt konverzi. pl. byte b = 100; (az egsz literl automatikusan int tpus).

    • minden ms esetben fordtsi hiba keletkezik


Met dush v s

Metdushvs

  • Osztly.metdus(paramterek)pl. y=Math.sin(x);

  • Objektum.metdus(paramterek)pl. hossz=szoveg.length();

  • Sajt osztlybl elg csak a metdus neve: metdus(paramterek)

  • Egy metdus lehet eljrs- vagy fggvnyszer.

  • Tlterhels (overloading): lehet tbb azonos nev metdus, melyek a paramterezsben s/vagy a visszatrsi rtk tpusban trhetnek el egymstl.

    Pl. float max(float a, float b) illetve int max(int a, int b)


A java lang math oszt ly

A java.lang.Math osztly

  • Java API (Application Programming Interface): rengeteg csomag, osztly

  • Nem kell importlni.

  • Konstansok: E, PI

  • Fggvnyek: abs, asin, sin, cos, atan, tan, exp, log, max, min, pow, sqrt, toDegrees, toRadians, random, round


Java api dokumentum r szlet

Java API dokumentum rszlet


Programoz si technol gi k

  • min

  • public static int min(inta, intb)

    • Returns the smaller of two int values. That is, the result the argument closer to the value of Integer.MIN_VALUE. If the arguments have the same value, the result is that same value.

    • Parameters:

      • a - an argument.

      • b - another argument.

    • Returns:

      • the smaller of a and b.

    • See Also:

      • Long.MIN_VALUE


Szelekci k if utas t s

Szelekcik - if utasts

if(a>b) c=a;else

c=b;

if(felttel)utasts1;elseutasts2;

  • felttel: logikai kifejezs

  • az else g elhagyhat

  • a felttel utn nincs pontosvessz

  • az utasts esetn viszont van pontosvessz

  • minden felttel zrjelben

  • egy gban tbb utasts: blokk {...}

  • egymsba gyazs


Szelekci k switch utas t s

Szelekcik - switch utasts

switch(kifejezs){ case rtk1: utastsok; break; case rtk2: utastsok; break; ... default: utastsok;}

  • akkor alkalmazhat, ha egy kifejezs jl meghatrozott, klnll rtkeire szeretnnk bizonyos utastsokat vgrehajtani

  • kifejezs: byte, short, int vagy char

  • a break hatsra a switch blokk vgre kerl a vezrls, e nlkl a kvetkez case gra kerlne a vezrls

  • egy case kulcsszhoz csak egy rtk tartozhat


Szelekci k switch utas t s1

Szelekcik - switch utasts

switch(pont){

case 1:

case 2:

case 3:System.out.println("Elgtelen");

System.out.println("Kszljn tovbb!");

break;

case 4:System.out.println("Elgsges");

break;

case 5:System.out.println("Kzepes");

break;

case 6:System.out.println("J");

break;

default:System.out.println("Jeles");

}


Iter ci k while utas t s

Itercik - while utasts

while(felttel)utasts;

  • Amg a felttel igaz, jbl vgrehajtja az utastst, ha hamis, akkor a ciklust kvet utastsra lp.

  • Tbb utasts esetn: blokk { ... }

    Plda: Bankba tesszk a pnznket kamatozni, s addig tartjuk bent, amg milliomosok nem lesznk. A program szmolja ki, hogy hny vet kell vrnunk.


Iter ci k while utas t s1

Itercik - while utasts

import extra.*;

public class Milliomos1{

public static void main(String[]args){

final double KAMAT=8.5; //konstans

int ev=0;

int penz=Console.readInt("sszeg: ");

while(penz<1000000){

penz*=1+KAMAT/100; //Ft-ra kerekt

ev++;

}

System.out.println(ev+

" ev mulva leszunk milliomosok!");

}

}


Iter ci k do while utas t s

Itercik - do...while utasts

doutasts;while(felttel)

  • Amg a felttel igaz, jbl vgrehajtja az utastst, ha hamis, akkor a ciklust kvet utastsra lp.

  • Tbb utasts esetn: blokk { ... }

    Plda: Bankba tesszk a pnznket kamatozni, s addig tartjuk bent, amg milliomosok nem lesznk. A program szmolja ki, hogy hny vet kell vrnunk.


Iter ci k do while utas t s1

Itercik - do...while utasts

import extra.*;

public class Milliomos2{

public static void main(String[]args){

final double KAMAT=8.5; //konstans

int ev=0;

int penz=Console.readInt("sszeg: ");

do{

penz*=1+KAMAT/100; //Ft-ra kerekt

ev++;

}while(penz<1000000);

System.out.println(ev+ " ev mulva leszunk milliomosok!");

}

}


Iter ci k for utas t s

Itercik - for utasts

for(inicializls; felttel; lptets)utasts;

  • inicializls: egy vagy tbb utasts vesszvel elvlasztva, mely(ek) egyszer hajtdik vgre a ciklusmagba val els belps eltt. Pl. ciklusvltoz deklarlsa, inicializlsa. A ciklusvltoz tpusa tetszleges.

  • felttel: amg igaz, jbl vgrehajtja az utastst, ha hamis, akkor a ciklust kvet utastsra lp.

  • lptets: egy vagy tbb utasts vesszvel elvlasztva, mely(ek) a ciklusmag minden egyes lefutsa utn automatikusan vgrehajtdik. ltalban a ciklusvltozt szoks itt nvelni vagy cskkenteni.


Iter ci k for utas t s1

Itercik - for utasts

A while ciklus egy specilis esetnek tekinthet:

for(inicializls; felttel; lptets)utasts;

inicializls;while(felttel){utasts;lptets}


Iter ci k for utas t s p ld k

Itercik - for utastspldk

for(int i=1; i<=10; i++) System.out.print("*");

for(int i=1; i<=10; i++){ for(int j=1; j<=10; j++) System.out.print("*"); System.out.println();}


Programoz si technol gi k

for(char c='A'; c<='Z'; c++) System.out.print(c+" ");

//(c+' ') esetn a kdokat rja ki

for(char n='A',k='a'; n<='Z'; n++,k++) System.out.print(n+" "+k+" ");

for(double d=500000; d<=1000000; d*=1.1) System.out.println(d);


Kiugr s a ciklusb l

Kiugrs a ciklusbl

  • Breakutasts: az aktulis utastsblokk-bl (pl. ciklusbl) val azonnali kiugrst eredmnyezi.

  • Continue utasts: hatsra a vezrls az utastsblokk (ciklus) vgre kerl.


Met dusok r sa

Metdusok rsa

  • A metdus fej szintaktikja:[mdostk] visszatrsitpusmetdusneve( [paramterlista] )

  • Nhny plda:

    • public static int min(int a, int b)

    • public void vonalhuz()

    • public void vonalhuz(int hossz)

    • long fakt(byte n)//csomag szint lthatsg

  • Mdostk lehetnek:

    • public, private, protected: lthatsg

    • static: osztlymetdus

    • stb.


F ggv ny elj r s

Fggvny, eljrs

  • A metdusoknak kt fajtjt klnbztetjk meg:

    • Eljrsszer metdus: visszatrsi rtknek tpusa void, azaz res tpus, nem tr vissza rtkkel

    • Fggvnyszer metdus: visszatrsi rtk-nek tpusa valamilyen voidtl klnbz tpus, azaz igazi rtkkel tr vissza

  • A fggvny eljrsknt is hvhat.


Met dusok jellemz i

Metdusok jellemzi

  • Tlterhels (overloading): lehet kt egyforma nev, de klnbz paramterezs metdus. pl. vonalhuz() ill. vonalhuz(int hossz) vagy min(int a, int b) ill. min(double a, double b)

  • Paramtertads: rtk szerinti. Az aktulis paramter tpusnak rtkads szerint kompatbilisnek kell lennie a formlis paramterrel.

  • Visszatrs a metdusbl: fggvny esetn return utn ktelezen meg kell adnunk egy rtket.


Met dusok jellemz i1

Metdusok jellemzi

  • Az osztly metdusainak deklarlsi sor-rendje tetszleges. A main-t elsnek vagy utolsnak clszer megadni.

  • A metdusok nem gyazhatak egymsba.

  • Lehet rekurzv metdusokat is definilni.

  • A metdusban mint egybknt is brmely blokkban definilhatunk loklis vltozt.


Programoz si technol gi k

public class Metodusok{

static void vonalhuz(int hossz){

for (int i=1; i<=hossz; i++)

System.out.print("-");

System.out.println();

}

static void vonalhuz(){

vonalhuz(50);

}

static int abs(int n){

if (n>=0)

return n;

else

return -n;

}


Programoz si technol gi k

static int jegySzam(int n){

int jszam=0;

do{

n/=10;

jszam++;

}while(n!=0);

return jszam;

}

public static void main(String[] args){

int a=-10;

int b=12345678;

vonalhuz();

System.out.println(a+" abszolut erteke: "+abs(a));

vonalhuz(40);

System.out.println(b+" jegyeinek szama: "+jegySzam(b));

vonalhuz();

}

}


Oszt ly k sz t se

Osztly ksztse


Oo program

OO program

Egy objektumorientlt program egymssal kommunikl objektumok sszessge, melyben minden objektumnak megvan a feladatkre

zenet3

vezrl objektum

objektum3

fut

zenet1

zenet2

objektum1

objektum2

zenet1


P lda ember oszt ly s p ld nyai

zsfi

Ember

pozci(x,y)irnySzg

megy(tv)

elmegy(x,y)

fordul(szg)

andor

kati

Plda - Ember osztly s pldnyai


Az oop fontosabb defin ci inak sszefoglal sa

Az OOP fontosabb definciinak sszefoglalsa

  • Pldnydeklarci (pldnytag):

    • A pldnyonknt (objektumonknt) helyet foglal vltozk a pldnyvltozk (pldnyadatok).

    • Azon metdusokat, melyek pldnyadatokon dolgoznak, pldnymetdusoknak nevezzk.

  • Osztlydeklarci (osztlytag) (static)

    • Az osztlyvltoz az osztly sajt vltozja, az egyes pldnyokban nem szerepel, valamilyen kzs adatot trol.

    • Az osztlymetdus az osztly sajt metdusa, amely csak osztlyvltozkon dolgozik.


L that s g1

Lthatsg

  • Privt (private): csak az osztly sajt metdusai fr-hetnek hozz.

  • Nyilvnos (public): minden, az objektummal kapcsolat-ban ll kliens elri, hasznlhatja.

  • Egy osztly adatai ltalban privt adatok.

  • Egy fordtsi egysg (java fjl) tbb osztlyt is tartalmaz-hat, de kzlk csak egy lehet nyilvnos (public). Ha valamelyik osztlyban szerepel a main metdus, akkor az nyilvnos kell hogy legyen.


Programoz si technol gi k

  • Egy osztlyban ugyanazon a nven dekla-rlhat metdus s vltoz, st a metdu-sok tlterhelhetek.

  • A deklarls sorrendje ltalban:

    • vltozk

    • konstruktorok

    • metdusok

    • main metdus, ha van.


Programoz si technol gi k

  • A loklis vltozk eltakarjk az ugyanolyan nev osztly-, illetve pldnyvltozkat.

  • Ha az osztly deklarcijra szeretnnk hivat-kozni, akkor osztlyvltoz esetn az osztly nevvel, pldnyvltoz esetn pedig a this referencival kell azt minstennk.

  • Vltozk alaprtelmezs szerinti kezdeti rtkei: osztlyvltoz vagy pldnyvltoz esetn 0, loklis vltoz esetn hatrozatlan.


Konstruktorok

Konstruktorok

  • Feladata az objektum new opertorral val ltrehozsakor annak inicializlsa.

  • Auto auto = new Auto("GHJ123);

  • A konstruktor specilis metdus, a kvetkez szablyok rvnyesek r:

    • Neve ktelezen megegyezik az osztly nevvel.

    • Csak a new opertorral hvhat.

    • Tlterhelhet.

    • Nincs visszatrsi rtke, s nem is void.

  • Ha az osztlyban nem adunk meg explicit mdon konstruktort, akkor az osztlynak lesz egy alaprtelmezs szerinti (default), paramter nlkli konstruktora.

  • Ha az osztlyban ltezik egy explicit konstruktor, akkor nem lesz implicit, alaprtelmezs szerinti konstruktora.


P lda rakt rprogam

Plda - Raktrprogam

  • Adott egy zldsgraktr, melyben pillanatnyilag egyetlen rut, paradicsomot raktrozunk. A raktrba gyakran te-sznk be, illetve vesznk ki onnan paradicsomot. A para-dicsom pillanatnyi egysgra 300 Ft, de ez vltozhat. Ksztsnk olyan programot, mely segtsgvel rgzteni tudjuk a megfelel adatokat, s brmikor jelentst tudunk adni a paradicsom aktulis mennyisgrl, egysgrrl s rtkrl!

  • Vgezzk el a kvetkez akcikat: Tegynk a raktrba 125 kg paradicsomot, aztn vegynk ki 25 kg-ot, majd szlltsuk le a paradicsom egysgrt 210 Ft-ra! Mindhrom akci utn rjuk ki, mennyi paradicsom van raktron s milyen rtkben!


Programoz si technol gi k

Osztlydiagram

Aru

-nev: String

-egysegar: double

-menny: double

RaktarProgram

+Aru(aNev:String,aEgysegar:double)

+getNev(): String

+getEgysegar(): double

+setEgysegar(aEgysegar:double)

+getMenny(): double

+getAr(): double

+hozzatesz(aMenny:double)

+elvesz(aMenny:double)

+toString(): String

-aru

+RaktarProgram()

+akciok()

+main(args)


Programoz si technol gi k

Osztlydiagram

Aru

-nev: String

-egysegar: double

-menny: double

RaktarProgram

+Aru(aNev:String,aEgysegar:double)

+getNev(): String

+getEgysegar(): double

+setEgysegar(aEgysegar:double)

+getMenny(): double

+getAr(): double

+hozzatesz(aMenny:double)

+elvesz(aMenny:double)

+toString(): String

-aru

+RaktarProgram()

+akciok()

+main(args)


Programoz si technol gi k

class Aru {

private String nev;

private double egysegar;

private double menny;

public Aru(String aNev, double aEgysegar) {

nev = aNev;

egysegar = aEgysegar;

menny = 0;

}

public String getNev() {

return nev;

}

Pldnyvltozk

Konstruktor

Osztlydiagram


Programoz si technol gi k

public double getEgysegar() {

return egysegar;

}

public void setEgysegar(double aEgysegar) {

if (aEgysegar >= 0)

egysegar = aEgysegar;

}

public double getMenny() {

return menny;

}

public double getAr() {

return menny*egysegar;

}

Osztlydiagram


Programoz si technol gi k

public void hozzatesz(double aMenny) {

if (aMenny>0)

menny += aMenny;

}

public void elvesz(double aMenny) {

if (aMenny>0 && aMenny<=menny)

menny -= aMenny;

}

public String toString() {

return nev+"\tEgysegar: "+egysegar+

"\tMenny: "+menny+"\tAr: "+getAr();

}

}

Osztlydiagram


Programoz si technol gi k

public class RaktarProgram {

private Aru aru;

public RaktarProgram() {

aru = new Aru("Paradicsom",300);

}

public void akciok() {

aru.hozzatesz(125);

System.out.println(aru);

aru.elvesz(25);

System.out.println(aru);

aru.setEgysegar(210);

System.out.println(aru);

}

public static void main(String[] args) {

RaktarProgram program = new RaktarProgram();

program.akciok();

}

}

Kapcsolat

Objektum ltrehozsasajt osztlybl

Osztlydiagram


Programoz si technol gi k

Egyttmkdsi diagram

3: Aru(aNev,aEgysegar)

5: hozzatesz(aMenny)

6: elvesz(aMenny)

7: setEgysegar(aEgysegar)

1: main(args)

2: RaktarProgram()

4: akciok()

RaktarProgram

program:

RaktarProgram

aru:Aru


Programoz si technol gi k

Plda Bankprogam

Ksztsnk egy banki programot, mely az gyfelek szmlit kezeli.

Osztlydiagram

Szamla

-utolsoSzamlaSzam: int

-szamlaSzam: int

-tulajdonos: String

-egyenleg: int

Bank

-szamla1

-szamla2

+Bank()

+ugyfelKiszolgalas

(szamla:Szamla)

+menu()

+main(args)

+Szamla(tulajdonos:String,egyenleg:int)

+Szamla(tulajdonos:String)

+getTulajdonos(): String

+setTulajdonos(Tulajdonos:String)

+befizet(osszeg:int)

+kivesz(osszeg:int): int

+toString(): String


Programoz si technol gi k

import extra.*;

class Szamla{

private static int utolsoSzamlaSzam=0;

private int szamlaSzam;

private String tulajdonos;

private int egyenleg;

public Szamla(String tulajdonos, int egyenleg){

szamlaSzam=++utolsoSzamlaSzam;

this.tulajdonos=tulajdonos;

this.egyenleg=egyenleg;

}

public Szamla(String tulajdonos){

this(tulajdonos,0);

}

public String getTulajdonos(){

return tulajdonos;

}


Programoz si technol gi k

public void setTulajdonos(String tulajdonos){

this.tulajdonos=tulajdonos;

}

public void befizet(int osszeg){

if(osszeg>=0)

egyenleg+=osszeg;

}

public int kivesz(int osszeg){

if(osszeg>=0 && osszeg<=egyenleg)

egyenleg-=osszeg;

return egyenleg;

}

public String toString() {

return "Szamlaszam: "+szamlaSzam+" Tulajd.: "+tulajdonos+

" Egyenleg: "+egyenleg;

}

}//Szmla osztly vge


Programoz si technol gi k

public class Bank {

private Szamla szamla1, szamla2;

public Bank() {

szamla1 = new Szamla("Kiss Istvan", 1000000);

szamla2 = new Szamla("Nagy Peter");

}

public void ugyfelKiszolgalas(Szamla szamla) {

char valasz;

do{

valasz=Character.toUpperCase(Console.readChar("B(efizet)/K(ivesz)"));

}while(valasz!='B' && valasz!='K');

if (valasz == 'B')

szamla.befizet(Console.readInt("Mennyit fizet be? "));

else{

int egyenleg = szamla.kivesz(Console.readInt("Mennyit vesz ki? "));

System.out.println("Maradek egyenleg "+egyenleg+" Ft");

}

}


Programoz si technol gi k

public void menu() {

char valasz;

do{

System.out.println("\n\n"+szamla1);

System.out.println(szamla2);

System.out.println("\n1: 1. ugyfel kiszolgalasa");

System.out.println("2: 2. ugyfel kiszolgalasa");

System.out.print ("V: Vege ");

valasz = Character.toUpperCase(Console.readChar());

switch (valasz) {

case '1': ugyfelKiszolgalas(szamla1); break;

case '2': ugyfelKiszolgalas(szamla2); break;

}

}while (valasz!='V');

}

public static void main(String[] args) {

Bank otp = new Bank();

otp.menu();

}

}//Bank osztly vge


Inicializ l k

Inicializlk

= 2000;

class Tanulo {

static int alapTandij;

double atlag;

int tandij;

static {

alapTandij = 2000;

}

{atlag = Console.readDouble("Atlag: ");

tandij = alapTandij + (int)Math.round(3000*(5-atlag));

}

//

}

= Console.readDouble("Atlag: ");


Az inicializ l s sorrendje

Az inicializls sorrendje

  • Osztlyadatok (osztly betltsekor)

    • alaprtelmezs szerinti rtkek

    • osztlyinicializl kifejezsek

    • osztlyinicializl blokkok

  • Objektum adatai (objektum szletsekor)

    • alaprtelmezs szerinti rtkek

    • pldnyinicializl kifejezsek

    • pldnyinicializl blokkok

    • konstruktor(ok)


Az object oszt ly

Az Object osztly

  • Minden osztly kzs se

  • A Java minden objektumra jellemz metdusokat tartalmaz. Pldul:

    • boolean equals(Object obj)

    • String toString()

    • Class getClass()


Objektumok egyenl s gvizsg lata

falsetrue

Objektumok egyenlsgvizsglata

String s1 = new String("Hello"), s2 = new String( "Hello");

System.out.println(s1==s2);

System.out.println(s1.equals(s2));


Karakterl nc

Karakterlnc

  • A String osztly objektum olyan szveg trolsra szolgl, amelynek rtkt nem akarjuk megvltoztatni.

  • A StringBuffer osztlyt akkor hasznljuk, ha a szvegen szeretnnk vltoztatni.

  • A StringBuilderosztlyt a JDK 5.0-tl vezettk be, ami gyorsabb, mint a StringBuffer, de csak egy szlon hasznlhat biztonsgosan.


Objektum l trehoz sa a new oper torral

Objektum ltrehozsa a new opertorral

Auto auto; //csak referencia

auto = new Auto("GHJ123);

//a konstruktor hvsval ltrejn az objektum, //az auto referencia erre mutat

vagy

Auto auto = new Auto("GHJ123);

Osztlyazonost objektum = new Osztlyazonost(paramterlista);


String objektum l trehoz sa

String objektum ltrehozsa

String szoveg; //csak referencia

szoveg = new String(Ez a tartalma);

csak String esetn ez egyszersthet:

szoveg=Ez a tartalma;


A string oszt ly met dusai

A String osztly metdusai

Az eredeti objektumot nem vltoztatjk, fggvnyek, sokszor j String objektumot hoznak ltre.

Nhny metdus:

char charAt(int index)

tetszleges index karaktert adja vissza, az indexels 0-val kezddik

int compareTo(String str)

sszehasonltja, rtke 0, ha egyenl; , ha kisebb; +, ha nagyobb, mint a paramter


Programoz si technol gi k

boolean equals(Object anObject)

igaz, ha az objektum String tpus, s karakterei ugyanazok

int indexOf(String str) //hasonlan lastIndexOf

az adott sztring els elfordulsnak pozcija lesz az rtke, ha nincs benne, akkor rtk 1

int indexOf(String str, int fromIndex)

az adott sztring els elfordulsnak pozcija lesz az rtke, a keresst a msodik paramterben megadott sorszm karak-tertl kezdi, ha nincs benne, akkor az rtk 1

int length()

hosszt adja vissza


Programoz si technol gi k

String replace(char oldChar, char newChar)

kicserli a megadott karaktereket, s visszaadja az j sztringet (maga a sztring objektum nem vltozik meg)

String substring(int beginIndex)

a paramterben megadott pozcitl a szveg vgig kimsol

String substring(int beginIndex, int endIndex)

a kezd pozcitl a vgpozciig kimsol, endIndex nem tartozik bele a rszlncba, gy a visszaadott sztring hossza endIndex- beginIndex

String toLowerCase()

kisbetsre alaktottan adja vissza

String toUpperCase()

nagybetsre alaktottan adja vissza


Programoz si technol gi k

String trim()

levgja a fehr szkzket (space, tab, sorvgejel) az elejrl s vgrl, s visszaadja

Stb.

Ezek pldnymetdusok, hvsuk:

objektumnv.metdusnv([paramterlista])

pl: int hossz = szoveg.length();

Sztringet bekrni a billentyzetrl az extra csomagbeli Console osztly readLine() metdusval lehet.

pl: String nev = Console.readLine("A neved: ");


Programoz si technol gi k

1. plda

String s = Console.readLine();

for(int i=s.length()-1; i>=0; i--)

System.out.print(s.charAt(i));

System.out.println();

System.out.println(s.toUpperCase());

System.out.println(s.toLowerCase());

if(s.length()>=9)

System.out.println(s.substring(0,9));

if(s.length()>=3)

System.out.println(s.substring(s.length()-3));

System.out.println(s.replace(' ','-'));


Programoz si technol gi k

2. plda

String s=Console.readLine();

String elso=s;

while(!s.equals("*")){

if(s.compareTo(elso)<0)

elso=s;

s=Console.readLine();

}

System.out.println(elso);


Stringbuffer oszt ly

StringBuffer osztly

Manipullhat szveg

  • Konstruktorok

    • StringBuffer()

    • StringBuffer(int length)

    • StringBuffer(String str)

  • Kapacits, hossz, index

    • capacity():int

    • length():int

    • ensureCapacity(int minimumCapacity)

    • setLength(int newLength)

    • charAt(intindex): char


Stringbuffer oszt ly folyt

StringBuffer osztly (folyt.)

  • Bvts

    • append (<Type> value): StringBuffer

    • append (<type> value): StringBuffer

    • insert (int offset, <Type> value): StringBuffer

    • insert (int offset, <type> value): StringBuffer

  • Trls

    • deleteCharAt(int index): StringBuffer

    • delete(int start, int end): StringBuffer


Stringbuffer oszt ly folyt1

StringBuffer osztly (folyt.)

  • Egyb

    • setCharAt(intindex, charch)

    • replace(int start, int end, String str): StringBuffer

    • reverse(): StringBuffer

    • substring(int start): String

    • substring(int start, int end): String

    • toString(): String


Programoz si technol gi k

:StringBuffer

:StringBuffer

:StringBuffer

"Machu"

"Machu Picchu"

"Ez is Machu Picchu"

StringBuffer hegy1 = new StringBuffer("Machu");//1

StringBuffer hegy2 = hegy1.append(" Picchu");//2

hegy2.insert(0,"Ez is ");//3

//2

//1

hegy1

hegy1

hegy2

//3

hegy1

hegy2


Programoz si technol gi k

  • Feladat Csere

  • Olvassunk be egy szveget, majd cserljk ki az sszes & jelet az and szra!

import extra.*;

public class Csere {

public static void main(String[] args) {

// kvetkez din

}

}


Programoz si technol gi k

StringBuffer szoveg =

new StringBuffer(Console.readLine("Szoveg: "));//1

int poz = szoveg.toString().indexOf('&');//2

while (poz!=-1) {

szoveg.replace(poz,poz+1,"and");//3

poz = szoveg.toString().indexOf('&');//4

}

System.out.println(szoveg);//5


Objektum tad sa param terk nt

Objektum tadsa paramterknt

  • Feladat Objektum paramter

  • rjunk egy olyan eljrst, amely a paramterknt megkapott szveget szthzza, vagyis minden karaktere utn beszr egy szkzt!

import extra.*;

public class ObjektumParameter {

//kvetkez din

}


Programoz si technol gi k

static void szethuz(StringBuffer str) {

for (int i=str.length()-1; i>0; i--)

str.insert(i,' ');

str = null;// csak demonstrcis cl utasts

}

public static void main(String[] args) {

StringBuffer sb = new StringBuffer("Peace");

szethuz(sb);

System.out.println("*"+sb+"*");// "*P e a c e*"

}

rtkads szerintikompatibilits!

Csak a referencia msoldik t!


Programoz si technol gi k

:StringBuffer

:StringBuffer

"Peace"

"P e a c e"

A metdusba val belpskor:

A metdusbl val kilps eltt:

null

str

str

sb

sb

A metdus csak a mutatott objektumot

vltoztathatja meg, a referencit nem!


T mb k

Tmbk

  • A tmb referencia tpus vltoz, melyet deklarl-nunk kell. Az elemtpus lehet akr primitv, akr referencia (osztly tpus vagy tmb tpus).

  • Deklarls:

    • elemtpus [] tmbazonost;

      vagy

    • elemtpustmbazonost [];

  • pl:int [] a; //inkbb ez ajnlott int b[];


Programoz si technol gi k

  • Az gy deklarlt vltoz kpes egy, a megadott elemtpus tmbre mutatni. Mg csak a referencinak (memriacmnek) foglaltunk helyet, a tmbt kln ltre kell hoznunk.

  • Ltrehozs (futs kzben):

    • new elemtpus [mret]

    • pl: a = new int[10];

      b = new int[20];

  • Termszetesen trtnhet rgtn a deklarlskor is a ltrehozs:

    • String[] sTomb = new String[50];


Programoz si technol gi k

Minden tmbnek van egy length konstansa.

Indexels: 0 .. length-1

int[] iArray=new int[10];

for(int i=0; i<iArray.length; i++)

iArray[i]=Console.readInt(i+1+". szam: ");

System.out.println("Az elemek visszafele:");

for(int i=iArray.length-1; i>=0; i--)

System.out.print(iArray[i]+" ");

for(int i=0; i<10; i++)


T mb inicializ l sa

Tmb inicializlsa

  • Inicializl blokk: deklarlskor a tmb elemeinek kezdeti rtkek adhatk, pl:

    • int[] iArray={2, 4, 6, 8, 10};

    • char[] szamjegyek={'0','1','2','3','4','5','6','7','8','9'}

  • Ekkor nem kell a tmbt a new opertorral ltrehozni, a {} blokk kpz opertor megteszi ezt helyettnk.

  • A tmb mrete pontosan akkora lesz, amennyi a felsorolt rtkek szma.


Rt kad s t mb k k z tt

rtkads tmbk kztt

  • A t2 tmb rtkads szerint kompatibilis a t1 tmbbel (azaz t1=t2 megengedett), ha

    • primitv elemtpus esetn t1 s t2 elemtpusa azonos;

    • referencia elemtpus esetn t2 elemtpusa t1 elem-tpusval azonos, vagy annak leszrmazottja.

  • rtkadskor a tmb referencija kap rtket, nem pedig az elemei (a tmb nem msoldik, hanem trdik a mutatja), gy klnbz hosz-szsg tmbk is rtkl adhatk egymsnak.


K tdimenzi s t mb

Ktdimenzis tmb

  • Deklarls: elemtpus [][] tmbazonost;

  • Teljes ktdimenzis tmb ltrehozsa:

    • new elemtpus [mret0] [mret1]

    • Pl: int[][] matrix

  • Lpsenknti (soronknti) ltrehozs. A sorok klnbz mretek lehetnek, pl:

    • double[][] atlagok = new double[4][];

    • atlagok[0] = new double[20];

    • atlagok[1] = new double[18];

    • atlagok[2] = new double[25];

    • atlagok[3] = new double[22];

  • Analg a helyzet a tbbdimenzis tmbk esetn.

= new int[3][4];


T mb param ter

Tmb paramter

  • Formlis paramterknt egy tmbreferencit kell deklarlnunk, amely fogadja az aktulis tmb referencijt.

  • Az aktulis tmbnek rtkads szerint kompatbi-lisnek kell lennie a formlis tmbbel.

  • Plda: rjunk osztlyt, amelynek adata egy int tmb. Az objektum ltrehozsakor a konstruktor paramterben adhassuk meg a tmb hosszt. Tartalmazzon egy bekr, kiir s egy osszeg nev metdust!


Programoz si technol gi k

import extra.*;

class Tomb{

private int[]t;

public Tomb(int hossz){

t = new int[hossz];

}

public void beker(){

for(int i=0; i<t.length; i++)

t[i] = Console.readInt(i+1+". szam: ");

}

public void kiir(){

for(int i=0;i<t.length;i++)

System.out.print(t[i]+" ");

System.out.println();

}

public int osszeg(){

int s=0;

for(int i=0;i<t.length;i++) s+=t[i];

return s;

}

}//Tomb


Programoz si technol gi k

public class Tombok{

public static void main(String[] args){

Tomb t1=new Tomb(5);

Tomb t2=new Tomb(7);

System.out.println("Adja meg az 1. tomb elemeit (5):");

t1.beker();

System.out.println("Adja meg a 2. tomb elemeit (7):");

t2.beker();

System.out.println("Az elso tomb:");

t1.kiir();

System.out.println("Az elemek osszege: "+ t1.osszeg());

System.out.println("A masodik tomb:");

t2.kiir();

}

}


R kl d s

rklds


Programoz si technol gi k

  • rklds (inheritance) ms nven kiterjeszts (extension): Egy mr meglv osztly tovbbfejlesztse.

    • jabb tulajdonsgokat s metdusokat adhatunk hozz

    • Meglv metdusait trhatjuk

  • Cl:

    • Specializci: egy objektum lershoz egyedi jellemzket adunk hozz.

    • ltalnosts: tbb objektum lersbl kiemeljk a kzs jellemzket.

  • Java: class Auto extends Jarmu{ ...}


Szab lyok

Szablyok

  • Egy osztlybl tbb osztly is szrmaztathat

  • Egy osztlyhierarchia mlysge elvileg tetszleges lehet

  • Az rkls tranzitv

  • Jvban:

    • Egy osztlynak csak egy kzvetlen se lehet (nincs tbbszrs rkls)

    • Minden osztlynak se az object


Mintafeladat

Mintafeladat

  • Klnbz hengereket szeretnnk nyilvntartani:

    • Csupn mrtani testek, sugaruk s magassguk van

    • Tmr hengerek, slyuk is van

    • Csvek


Programoz si technol gi k

Henger

-sugar, magassag:double

Cso

+Henger(sugar, magassag:double)

+getSugar():double

+getMagassag():double

+terfogat():double

+toString():String

-falVastagsag:double

+Cso(sugar, magassag, fajsuly,

falVastagsag:double)

+getFalVastagsag():double

+terfogat():double

+toString():String

TomorHenger

-fajsuly:double

+TomorHenger(sugar, magassag,

fajsuly:double)

+getFajsuly():double

+suly():double

+toString():String


Megjegyz sek a p ldaprogramhoz

Megjegyzsek a pldaprogramhoz

  • Az Object osztly getClass() metdusa egy Class osztly objektumot ad vissza, melynek getName() metdust hasznltuk (Henger: 22. sor)

  • this: az objektum referencijasuper: az objektum referencija, de kzvetlen sosztly tpus

  • A hengerek tmb elemei Henger osztly referencik, melyek azonosthatnak leszrmaztatott osztly objektumokat is.Henger h; TomorHenger th;h=th; //jth=h; //tpushibath=(TomorHenger)h //tpusknyszerts

  • A lista s az tlagtrfogat mveleteknl az objektumok valdi tpusa hatrozza meg, hogy melyik toString(), ill terfogat() metdus fog vgrehajtdni: polimorfizmus (ld. 6. dia)


Programoz si technol gi k

  • instanceof opertor:<objektum> instanceof <osztly>Eredmnye egy boolean tpus rtk, mely true, ha az objektum osztlya a megadott osztly vagy annak leszrmazottja.

  • Statikus tpus: amit a referencia deklarlskor kapDinamikus tpus: amilyen osztly objektumot valjban azonosthengerek[3]=new Cso(2,10,2,1);hengerek[3] statikus tpusa Henger, dinamikus tpusa Cso.

  • Egy utdosztly akkor is rkli az sosztly adatait, ha nem ltja azokat (mert private elrhetsgek)


Met dusok fel l r sa

Metdusok fellrsa

  • Akkor van sz fellrsrl, ha a metdusok szignatri megegyeznek (egybknt tlterhels)

  • Csak pldnymetdust lehet fellrni

  • Nem lehet fellrni, ha final

  • Dinamikus kts (futs alatti kts, ksi kts):Az osztlyhierarchia brmely pontjrl is hvunk meg egy pldnymetdust, minden esetben a megszltott objektum osztlyban (vagy ha ott nincs, akkor a legkzelebbi sben) deklarlt metdus fog vgrehajtdni.A pontos cmet a rendszer futskor hatrozza meg.(Pl. TomorHenger, ill. Cso osztly objektumok esetn a suly metdus meghvsakor ms-ms terfogat metdus hajtdik vgre.)


Konstruktorok1

Konstruktorok

  • Nem rkldik, nem lehet fellrni

  • Osztlyon bell az egyik konstruktorbl a msik gy hvhat:this(paramterek)

  • Egy konstruktorbl a kzvetlen s konstruktor gy hvhat:super(paramterek)

  • Minden konstruktornak tartalmaznia kell pontosan egy this() vagy super() hvst legels utastsknt. Ha egyik sem szerepel, akkor a fordt betesz egy alaprtelmezett paramter nlkli super() hvst. Ekkor viszont lennie kell a kzvetlen sosztlyban paramter nlkli konstruktor.

  • Elv: minden konstruktor a sajt osztlya adatait inicializlja


Absztrakt met dus absztrakt oszt ly

Absztrakt metdus, absztrakt osztly

  • Az osztly egyes metdusait nem implementljuk, csak a fejlct adjuk meg.

  • Az ilyen osztly absztrakt, a nyitva hagyott, absztrakt metdusokat tartalmaz

  • rktsi clokat szolgl, nem pldnyosthat

  • Absztrakt metdust tartalmaz osztly csak absztrakt lehet


Programoz si technol gi k

Idom

{abstract}

-fajsuly:double=0.8

+terfogat():double

+suly():double

Gomb

Hasab

-sugar:double

-a,b,magassag:double

+Gomb(sugar:double)

+terfogat():double

+toString():String

+Hasab(a,b,magassag:double)

+terfogat():double

+toString():String


Interf sz

Interfsz

  • Az interfsz olyan viselkedseket definil, amelyet az osztlyhierarchia tetszleges osztlyval megvalsthatunk.

  • Az interfsz (interface) metdusfejeket definil abbl a clbl, hogy valamely osztly azt a ksbbiekben implementlja, megvalstsa.

  • Definilhat konstansokat (public static final)

  • Az objektum elrsnek, hasznlatnak egy lehetsges mdjt hatrozza meg.

  • Egy interfszbl nem lehet pldnyt ltrehozni

  • Az interfszek rkthetk

  • Egy konkrt osztly megvalstja az interfszt, ha az sszes metdust megvalstja (UML szaggatott nyl, java kulcssz: implements)

  • Konvenci: az implements zradk az extends zradkot kveti, ha mindkett van.


Programoz si technol gi k

  • Egy osztly tbb interfszt is implementlhat

  • Az rtkads kompatibilits hasonl, mint az rklds esetn

  • Mivel az interfsz a megvalsts nlkli, vagyis absztrakt metdusok listja, alig klnbzik az absztrakt osztlytl. A klnbsgek:

    • Az interfsz egyetlen metdust sem implementlhat, az absztrakt osztly igen.

    • Az osztly megvalsthat tbb interfszt, de csak egy sosztlya lehet.

    • Az interfsz nem rsze az osztlyhierarchinak. Egymstl "fggetlen" osztlyok is megvalsthatjk ugyanazt az interfszt.

  • Amikor egy osztly megvalst egy interfszt, akkor alapveten alr egy szerzdst. Az osztlynak implementlni kell az interfszben s szlinterfszeiben deklarlt sszes metdust, vagy az osztlyt absztraktknt kell deklarlni.


Programoz si technol gi k

  • Az interfszek hasznosak a kvetkez esetekben:

    • Hasonlsgok megfogalmazsa anlkl, hogy mesterklt osztlyhierarchit ptennk fel(For instance, a human and a parrot can both whistle, however it would not make sense to represent Humans and Parrots as subclasses of a Whistler class, rather they would most likely be subclasses of an Animal class (likely with intermediate classes), but would both implement the Whistler interface.)

    • Olyan metdusok definilsa, amelyeket tbb osztlyban meg kell valstani

    • Tbbszrs rklds modellezse


Programoz si technol gi k

public interface Predator {

public boolean chasePrey(Prey p);

public void eatPrey(Prey p);

}

public class Cat implements Predator {

public boolean chasePrey(Prey p) {

// programming to chase prey p

}

public void eatPrey (Prey p) {

// programming to eat prey p

}

}


Programoz si technol gi k

  • Another use of interfaces is being able to use an object without knowing its type of class, but rather only that it implements a certain interface. (For example, a sorting algorithm may expect an object of type Comparable. Thus, it knows that the object's type can somehow be sorted, but it is irrelevant what the type of the object is.)


Comparable interf sz

Comparable interfsz

A String hasonlthat

interfsz

Comparable

Object

+compareTo(Object obj): int

String

+compareTo(Object obj): int

...


Programoz si technol gi k

class Henger implements Comparable<Henger>{

private double sugar, magassag;

...

public int compareTo(Henger obj){

if(terfogat()<obj.terfogat())

return -1;

if (terfogat()>obj.terfogat())

return 1;

return 0;

}

}


Programoz si technol gi k

import java.util.*;

public class HengerProgram {

public static void main(String[] args) {

Henger[] hengerek=new Henger[4];

...

//Max trfogat

int max=0;

for(int i=0;i<hengerek.length;i++)

if(hengerek[i].compareTo(hengerek[max])>0) max=i;

System.out.println("A legnagyobb trfogat: " +hengerek[max].terfogat());

//Rendezs

Arrays.sort(hengerek);

//Lista

System.out.println("\nRendezve:");

for(int i=0;i<hengerek.length;i++)

System.out.println(hengerek[i]);

}

}


A kollekci keretrendszer java collections framework jcf

A kollekci keretrendszer Java Collections Framework (JCF)

  • A kollekcik (kontnerek) olyan objektumok, melyek clja egy vagy tbb tpusba tartoz objektumok memriban trtn sszefoglal jelleg trolsa, manipullsa s lekrdezse.

  • A kollekci keretrendszer egy egysges architektra, ami a kollekcik megvalstsra, kezelsre szolgl.

  • Elemei:

    • Interfszek: absztrakt adattpusok, amelyek a kollekcikat reprezentljk. Lehetv teszik a kollekcik implementci fggetlen kezelst.

    • Implementcik: a kollekci interfszek konkrt implementcii.

    • algoritmusok: azok a metdusok, amelyek hasznos mveleteket valstanak meg, mint pldul keress, rendezs klnbz kollekcikon.

  • C++ Standard Template Library (STL)


A kollekci keretrendszer haszn lat nak el nyei

A kollekci keretrendszer hasznlatnak elnyei

  • Cskkenti a fejlesztsi idt

  • Nveli a program sebessgt s minsgt

  • Megknnytik az API-k hasznlatt, tervezst

  • Elsegti a szoftver jrafelhasznlhatsgt


Interf szek

Interfszek


Programoz si technol gi k

  • A kollekci interfszek (generic, ltalnos) tpus paramterekkel dolgoznak. Pldul:

    • public interface Collection<E> ...

  • Az <E>szintaxis azt jelenti, hogy az interfsz ltalnos (generikus) tpussal mkdik.

  • Amikor deklarlunk egy Collection-t, meg tudjuk hatrozni (ajnlott), hogy milyen tpus objektumot tartalmaz a kollekci.

  • A tpus paramter a fordtprogram szmra lehetv teszi, hogy csak az adott tpus objektumot engedje belerakni a kollekciba, gy cskkenti a futsidej hibk szmt.

  • Ha megrtettk az interfszek hasznlatt, akkor a nagy rszt megtudtuk annak, amit a JCF-rl tudni rdemes.


Programoz si technol gi k

  • Collection: akkor rdemes ezt vlasztani, ha a lehet legnagyobb rugalmassgra van szksg.

  • Set: matematikai halmaz modellezse

  • List: sorszmozott kollekci, hozzfrs az elemekhez index segtsgvel

  • Queue: vrakozsi sor ltrehozsra

  • Map: az egyedi kulcsokat rtkekk kpezi le.

  • SortedSet

  • SortedMap


Ltal nos c l implement ci k

ltalnos cl implementcik


A collection interf sz

A Collection interfsz

Hasznlhat pldul klnbz kollekcik kztti konverzira (mint kzs nevez)

All collection implementations have a constructor that takes a Collection argument.

Suppose, for example, that you have a Collection<String> c, which may be a List, a Set, or another kind of Collection.

This idiom creates a new ArrayList (an implementation of the List interface), initially containing all the elements in c.

List<String> list = new ArrayList<String>(c);


Programoz si technol gi k

public interface Collection<E> extends Iterable<E> {

// Basic operations

int size();

boolean isEmpty();

boolean contains(Object element);

boolean add(E element); //optional

boolean remove(Object element); //optional

Iterator<E> iterator();

// Bulk operations

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c); //optional

boolean removeAll(Collection<?> c); //optional

boolean retainAll(Collection<?> c); //optional

void clear(); //optional

// Array operations

Object[] toArray();

<T> T[] toArray(T[] a);

}


Programoz si technol gi k

import java.util.*;

public class HengerProgram {

public static void main(String[] args) {

Collection<Henger> hengerek= new ArrayList<Henger>();

hengerek.add(new Henger(2,10));

hengerek.add(new Henger(3,6));

hengerek.add(new TomorHenger(2,10,2));

hengerek.add(new Cso(2,10,2,1));

System.out.println(hengerek.size());

hengerek.clear();

System.out.println(hengerek.size());

}

}


Programoz si technol gi k

import java.util.*;

public class CollectionAddDemo {

public static void main(String[] args) {

Collection<Integer> szamok=new HashSet<Integer>();

int n=0;

do{

if(szamok.add(Math.round((float)Math.random()*89)+1))

n++;

}while(n<5);

System.out.println(szamok);

}

}


Programoz si technol gi k

import java.util.*;

class Diak{

private String nev; private int pont;

public Diak(String nev, int pont){ this.nev=nev; this.pont=pont;

}

public int getPont(){ return pont; }

public boolean equals(Object obj){

return nev.equals(((Diak)obj).nev);

}

public String toString(){ return nev+": "+pont; }

}

public class Diakok{

public static void main(String[]args){

Collection<Diak> diakok=new ArrayList<Diak>();

diakok.add(new Diak("Kovcs Istvn",10));

diakok.add(new Diak("Kiss Pter",2));

diakok.add(new Diak("Nagy Pl",10));

Diak diak=new Diak("Kiss Pter",0);

System.out.println(diakok.contains(diak));

}

}


A kollekci k bej r sa

A kollekcik bejrsa

1. A for-each ciklussal

for (Object o : collection) System.out.println(o);

for(Henger henger:hengerek)

System.out.println(henger.terfogat());

2. Itertorral

Az itertor egy olyan objektum, ami megengedi, hogy bejrjuk a kollekcit, s eltvoltsuk az elemeket a kollekcibl, ha akarjuk.

Egy kollekci bejrshoz az iterator metdusnak a meghvsval krhetnk egy Iterator objektumot.


Programoz si technol gi k

Az Iterator interfsz:

public interface Iterator<E> { boolean hasNext(); E next(); void remove(); }

A hasNextmetdus visszatrsi rtke true, ha az itercinak van mg be nem jrt eleme.

A removemetdus eltvoltja a kollekcibl az utols elemet, amit a nexthvsra kaptunk.

Az Iterator.removeaz egyetlen biztonsgos t, hogy mdostsuk a kollekcit az iterci folyamn.

Itertor hasznlata clszer a for-each ciklus helyett a kvetkez esetekben:

  • Trlni szeretnnk a bejrs kzben.

  • Prhuzamosan tbb kollekcit szeretnnk bejrni


Programoz si technol gi k

for (Iterator<Henger> it=hengerek.iterator(); it.hasNext(); ) System.out.println(it.next());

for (Iterator<Henger> it=hengerek.iterator(); it.hasNext(); ) if (it.next().terfogat()<100) it.remove();


Collection interface bulk operations

Collection Interface Bulk Operations

Az egsz kollekcival hajtanak vgre mveleteket.

  • containsAll megmondja, hogy a kollekci tartalmazza-e a paramterben megadott kollekci sszes elemt

  • addAll hozzadja a kollekcihoz a paramterben megadott kollekci sszes elemt

  • removeAll eltvoltja a kollekcibl a paramterben megadott kollekci sszes elemt

  • retainAll eltvoltja a kollekcibl azokat az elemeket, amelyek a paramterben megadott kollekciban nincsenek benne

  • clear eltvoltja a kollekci sszes elemt

    Pl:

    c.removeAll(Collections.singleton(e));

    c.removeAll(Collections.singleton(null));

    Collections.singleton(e): egy halmazzal tr vissza, mely csak a megadott elemet tartalmazza.


A set interf sz

A Set interfsz

  • Set egy specilis Collection, amely nem tartalmaz ismtld elemeket.

  • A Setcsak a Collection-tl rklt metdusokat tartalmazza, azzal a megszortssal kiegsztve, hogy nem engedi meg az elemek ismtldst.

public interface Set<E> extends Collection<E> { // Basic operations int size(); boolean isEmpty();

...

}


Programoz si technol gi k

  • A Java platform hrom ltalnos cl Set implementcit tartalmaz: a HashSet, TreeSet, s LinkedHashSet.

  • HashSet esetn az elemeket egy hash tblban (hasttblban) trolja, ez a legjobb vlaszts, ha a bejrs sorrendje nem fontos.

  • A TreeSet az elemeket egy fban trolja az rtkk szerint rendezetten. Lnyegesen lassabb, mint a HashSet.

  • A LinkedHashSettvzi a lncolt listt a hash tblval. Beszrs szerinti rendezettsg.


Programoz si technol gi k

import java.util.*;

public class SetDemo {

public static void main(String[] args) {

Collection<Integer> szamok=new ArrayList<Integer>();

for(int i=0;i<50;i++)

szamok.add(Math.round((float)Math.random()*99)+1);

for(Integer iobj:szamok)

System.out.print(iobj+" ");

System.out.println();

Set<Integer> szamokh=new HashSet<Integer>(szamok);

for(Integer iobj:szamokh)

System.out.print(iobj+" ");

System.out.println();

}

}


Programoz si technol gi k

import java.util.*;

public class FindDups {

public static void main(String[] args) {

String[] words={"i", "came", "i", "saw", "i", "left"};

Set<String> h = new HashSet<String>();

for (String s : words)

if (!h.add(s))

System.out.println("Duplicate detected: " + s);

System.out.println(h.size() + " distinct words: " + h);

}

}

String w="i came i saw i left";

String s;

Set<String> h = new HashSet<String>();

for(StringTokenizer st=new StringTokenizer(w);st.hasMoreTokens();)

if (!h.add(s=st.nextToken()))

System.out.println("Duplicate detected: " + s);

System.out.println(h.size() + " distinct words: " + h);

Note that the code always refers to the Collection by its interface type (Set) rather than

by its implementation type (HashSet). This is a strongly recommended programming

practice because it gives you the flexibility to change implementations merely by

changing the constructor.


Set interface bulk operations

Set Interface Bulk Operations

  • Egyszeren megvalsthatk az algebrbl ismert halmazmveletek.

  • s1.containsAll(s2) Igaz logikai rtkkel tr vissza, ha s2 rszhalmaza s1-nek

  • s1.addAll(s2) Az s1-be s1s s2unija kerl.

  • s1.removeAll(s2) Az s1-be s1s s2klnbsg kerl.

  • s1.retainAll(s2) Az s1-be s1s s2metszete kerl.

  • clear eltvoltja a kollekci sszes elemt

  • Feladatok:

    1. Mdostsuk a FindDups programot gy, hogy azt akarjuk tudni, hogy mely szavak fordulnak el egyszer a listban, s mely szavak fordulnak el tbbszr, de nem akarunk dupln kirt szavakat ltni. Ezt gy tudjuk elrni, hogy kt halmazt hozunk ltre: az egyik minden elemet tartalmaz, a msik csak a duplikltakat.

    2. Hozzunk ltre kt Integer objektumokat tartalmaz halmazt a FindDups programban ltott mdon tmbkkel inicializlva. lltsuk el a kt halmaz unijt, metszett, klnbsgt.


A list interf sz

A List interfsz

  • Sorszmozott kollekci

  • A Collection osztlytl rklt mveletek mellett jabbakat is tartalmaz:

    • Pozci szerinti elrs: Az elemek a listban betlttt helyk alapjn is elrhetk.

    • Keress: A megadott elemet kikeresi a listbl, s visszaadja a pozcijt.

    • Bejrs: Kibvti az Iterator lehetsgeit

    • Rszlista: Lehetv tesz rszlista mveleteket.

  • A Java platform kt ltalnos cl List implementcit tartalmaz: a ArrayList (mely ltalban hatkonyabb), s a LinkedList (mely bizonyos esetekben hatkonyabb), valamint hozzigaztotta a rgebbi Vector osztlyt az j interfszhez.


Programoz si technol gi k

public interface List<E> extends Collection<E> {

// Positional access

E get(int index);

E set(int index, E element); //optional

boolean add(E element); //optional

void add(int index, E element); //optional

E remove(int index); //optional

boolean addAll(int index, Collection<? extends E> c); //optional

// Search

int indexOf(Object o);

int lastIndexOf(Object o);

// Iteration

ListIterator<E> listIterator();

ListIterator<E> listIterator(int index);

// Range-view

List<E> subList(int from, int to);

}


Programoz si technol gi k

  • A Collection-tl rklt metdusokat az elvrsainknak megfelelen hasznlhatjuk.

    • removemetdus mindig az els elfordul elemet trli a listbl.

    • Az adds addAll metdusnl az elem a lista vgre kerl. Pldul a list1vgre msolja a list2elemeit:list1.addAll(list2);

  • A listaelemek sszehasonltsa azok equals metdusa alapjn trtnik

  • A pozci szerinti elrs s keress metdusainak mkdse rtelemszer


Iter tor funkci k kiterjeszt se

Itertor funkcik kiterjesztse

public interface ListIterator<E> extends Iterator<E> {

boolean hasNext();

E next();

boolean hasPrevious();

E previous();

int nextIndex();

int previousIndex();

void remove(); //optional

void set(E e); //optional

void add(E e); //optional

}

Pl:

for (ListIterator<Type> it = list.listIterator(list.size()); it.hasPrevious(); ) {

Type t = it.previous();

...

}


Range view

Range-view

  • A subList(int fromIndex, int toIndex)rszlista metdus visszaadja a lista egy szelett

  • A visszaadott lista kapcsolatban marad az eredeti listval. gy brmilyen mdosts trtnik a rszlistn, az hatssal lesz az eredetire is, st ez fordtva is igaz.

  • Pl: A lista egy rszt trljklist.subList(fromIndex, toIndex).clear();


Lista algoritmusok

Lista algoritmusok

  • A Collectionsosztly nagyon hatkonyan hasznlhat algoritmusokat nyjt listk kezelsre.

  • A kvetkez lista csak felsorolja a fontosabbakat:

    • sort: Rendezi a listt.

    • shuffle: Vletlenszeren felcserl elemeket a listban. (Permutl.)

    • reverse: Megfordtja az elemek sorrendjt a listban.

    • rotate: Egy adott tvolsggal rotlja az elemeket.

    • swap: Felcserl kt meghatrozott pozciban lev elemet.

    • replaceAll: Az sszes elfordul elemet kicserli egy msikra.

    • fill: Fellrja az sszes elemet egy meghatrozott rtkkel.

    • copy: tmsolja a forrslistt egy cllistba.

    • binarySearch: Egy elemet keres a binris keressi algoritmust hasznlva.

    • indexOfSubList: Visszatr az els olyan indexszel, amelynl kezdd rszlista egyenl a msik listval.

    • lastIndexOfSubList: Visszatr az utols olyan indexszel, amelynl kezdd rszlista egyenl a msik listval.


Feladat

Feladat

Mdostsa a korbban ltott raktrprogramot gy, hogy az egy listban trolja az egyes rufajtk adatait. Vgezze el a kvetkez mveleteket:

  • rufajta felvtele

  • Listzs

  • Elads

  • Vtel

  • rmdosts


A map interf sz

A Map interfsz

  • Kulcs-rtk prokat tartalmaz

  • Az egyedi kulcs alapjn megkereshetjk a kulcshoz tartoz rtket (sokkal knyelmesebb, mintha ssze kellene lltanunk egy keresobjektumot)

  • A Java platform hrom ltalnos cl Map implementcit tartalmaz: HashMap, TreeMap s LinkedHashMap (melyek hasonl trolsi elvek s mkdsek, mint a Set implementcik), valamint hozzigaztotta a rgebbi Hashtable osztlyt az j interfszhez.


Programoz si technol gi k

public interface Map<K,V> {

// Basic operations

V put(K key, V value);

V get(Object key);

V remove(Object key);

boolean containsKey(Object key);

boolean containsValue(Object value);

int size();

boolean isEmpty();

// Bulk operations

void putAll(Map<? extends K, ? extends V> m);

void clear();

// Collection Views

public Set<K> keySet();

public Collection<V> values();

public Set<Map.Entry<K,V>> entrySet();

// Interface for entrySet elements

public interface Entry {

K getKey();

V getValue();

V setValue(V value);

}

}


Programoz si technol gi k

import java.util.*;

public class Freq {

public static void main(String[] args) {

String[] words={"i","came","i","saw","i","left"};

Map<String, Integer> m=new HashMap<String, Integer>();

for (String w: words) {

Integer freq=m.get(w);

m.put(w, (freq==null)?1:freq+1);

}

System.out.println(m.size() + " distinct words:");

System.out.println(m);

}

}


Programoz si technol gi k

  • A Collection view metdusokkal hromfle nzett kapjuk a Map-nek

    • keySet: kulcsok halmaza (Set)

    • values: rtkek kollekcija (Collection)

    • entrySet: kulcs-rtk prok halmaza (Set). A Map interfsz tartalmaz egy kis begyazott interfszt Map.Entry ezen halmaz elemei tpusnak meghatrozsra.

  • Csak a kollekci nzetekkel lehet itercit vgezni a Map-en.

  • Hasznlhatk remove, removeAll, retainAll, clear kollekci mveletek

for (KeyType key : m.keySet())

System.out.println(key);

//With an iterator:

//Filter a map based on some property of its keys.

for (Iterator<Type> it = m.keySet().iterator(); it.hasNext(); )

if (it.next().isBogus())

it.remove();

//Following is the idiom for iterating over key-value pairs.

for (Map.Entry<KeyType, ValType> e : m.entrySet())

System.out.println(e.getKey() + ": " + e.getValue());


Tov bbi p ld k a kollekci n zetek haszn lat ra

Tovbbi pldk a kollekci nzetek hasznlatra

//1.

if (m1.entrySet().containsAll(m2.entrySet())) {

...

}

//2.

if (m1.keySet().equals(m2.keySet())) {

...

}

//3.

Set<KeyType>commonKeys = new HashSet<KeyType>(m1.keySet());

commonKeys.retainAll(m2.keySet());

//4.

m1.entrySet().removeAll(m2.entrySet());

//5.

m1.keySet().removeAll(m2.keySet());


Programoz si technol gi k

//6.

Set<Employee>individuals=new HashSet<Employee>(managers.keySet());

individuals.removeAll(managers.values());

//7. Suppose you want to fire all the employees who report

directly to some manager, Simon.

Employee simon = ... ;

managers.values().removeAll(Collections.singleton(simon));

//8. Once you've done this, you may have a bunch of employees

whose managers no longer work for the company (if any of Simon's

direct-reports were themselves managers). The following code

will tell you which employees have managers who no longer works

for the company.

Map<Employee,Employee> m=new HashMap<Employee,Employee>(managers);

m.values().removeAll(managers.keySet());

Set<Employee> slackers = m.keySet();


Rendez s

Rendezs

  • Collections.sort(l);Alaprtelmezett rendezs, a lista elemeinek osztlya implementlja Comparable interfszt, azaz tartalmaz egy compareTo metdust.

    • Korltok:

      • Csak egyfle rendezettsg

      • Be van getve az objektumba, nem lehet vltoztatni rajta

      • Lehet, hogy nem is implementlta a Comparable interfszt

  • Rendezs egy Comparator objektummalpublic interface Comparator<T> { int compare(T o1, T o2); }

    • Nvtelen osztly ltrehozsval


Programoz si technol gi k

import java.util.*;

public class DiakokList3{

public static void main(String[]args){

final Comparator<Diak> PONTSZERINT=new Comparator<Diak>(){

public int compare(Diak d1, Diak d2){

return d1.getPont()-d2.getPont();

}

};

List<Diak> diakok=new ArrayList<Diak>();

diakok.add(new Diak("Kovcs Istvn",10));

...

//Termszetes rendezettsg szerinti lista

Collections.sort(diakok);

for(Diak a:diakok)

System.out.println(a);

//Lista comparator szerinti rendezettsggel

Collections.sort(diakok, PONTSZERINT);

for(Diak a:diakok)

System.out.println(a);

}

}


A sortedset interf sz

A SortedSet interfsz

public interface SortedSet<E> extends Set<E> {

// Range-view

SortedSet<E> subSet(E fromElement, E toElement);

SortedSet<E> headSet(E toElement);

SortedSet<E> tailSet(E fromElement);

// Endpoints

E first();

E last();

// Comparator access

Comparator<? super E> comparator();

}

  • Rendezettsg:

    • Az elemek termszetes rendezettsge szerint

    • A ltrehozsakor megadott Comparator alapjn

  • ltalnos implementci: TreeSet


Programoz si technol gi k

import java.util.*;

public class SortedSetDemo{

public static void main(String[]args){

int[]a={21,25,23,28,22,26,12};

SortedSet<Integer> s1=new TreeSet<Integer>();

for(Integer i: a) s1.add(i);

System.out.println(s1);

System.out.println(s1.headSet(25));

Comparator<Integer> reverse=new Comparator<Integer>(){

public int compare(Integer i1, Integer i2){

return i2-i1;

}

};

SortedSet<Integer> s2=new TreeSet<Integer>(reverse);

s2.addAll(s1);

System.out.println(s2);

}

}


Programoz si technol gi k

int count = dictionary.subSet("doorbell", "pickle").size();

dictionary.subSet("f", "g").clear();

for (char ch = 'a'; ch <= 'z'; ch++) {

String from = String.valueOf(ch);

String to = String.valueOf(ch);

System.out.println(from + ": " +

dictionary.subSet(from, to).size());

}


A sortedmap interf sz

A SortedMap interfsz

public interface SortedMap<K, V> extends Map<K, V>{

Comparator<? super K> comparator();

SortedMap<K, V> subMap(K fromKey, K toKey);

SortedMap<K, V> headMap(K toKey);

SortedMap<K, V> tailMap(K fromKey);

K firstKey();

K lastKey();

}

  • Rendezettsg:

    • Az kulcsok termszetes rendezettsge szerint

    • A ltrehozsakor megadott Comparator alapjn

  • ltalnos implementci: TreeSet


Summary of interfaces

Summary of Interfaces

The core collection interfaces are the foundation of the Java Collections Framework. The Java Collections Framework hierarchy consists of two distinct interface trees:

  • The first tree starts with the Collection interface, which provides for the basic functionality used by all collections, such as add and remove methods.

    Its subinterfaces Set, List, and Queue provide for more specialized collections.

    • The Set interface does not allow duplicate elements. This can be useful for storing collections such as a deck of cards or student records. The Set interface has a subinterface, SortedSet, that provides for ordering of elements in the set.

    • The List interface provides for an ordered collection, for situations in which you need precise control over where each element is inserted. You can retrieve elements from a List by their exact position.

    • The Queue interface enables additional insertion, extraction, and inspection operations. Elements in a Queue are typically ordered in on a FIFO basis.

  • The second tree starts with the Map interface, which maps keys and values similar to a Hashtable.

    Map's subinterface, SortedMap, maintains its key-value pairs in ascending order or in an order specified by a Comparator.

    These interfaces allow collections to be manipulated independently of the details of their representation.


Ltal nos c l implement ci k1

ltalnos cl implementcik

  • Az ltalnos cl implementcik mind biztostjk az sszes opcionlis mveletet, amit az interfszek tartalmaznak.


Programoz si technol gi k

  • ltalnos szably, hogy programrskor az interfszeken, s nem az implementcikon kell gondolkodni.

  • Legtbb esetben az implementci megvlasztsa csak a teljestmnyt befolysolja.

  • Az elnyben rszestett programozi stlus az, ha egy interfsz tpus vltozhoz vlasztunk egy implementcit.

  • gy a program nem fgg majd egy adott implementci esetn az ahhoz hozzadott j metdusoktl, ezltal a programoz brmikor szabadon vltoztathatja az implementcit, mikor jobb teljestmnyt szeretne elrni, vagy a mkdsi rszleteket szeretn mdostani.


Programoz si technol gi k

  • The Java Collections Framework provides several general-purpose implementations of the core interfaces:

    • For the Set interface, HashSet is the most commonly used implementation.

    • For the List interface, ArrayList is the most commonly used implementation.

    • For the Map interface, HashMap is the most commonly used implementation.

    • For the Queue interface, LinkedList is the most commonly used implementation.


  • Login