Aplica ii JAVA - · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@ ... - De exemplu,...

76
[email protected] Aplica ț ii JAVA Universitatea Constantin Brâncuşi” din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu Lect.dr . Adrian Runceanu

Transcript of Aplica ii JAVA - · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@ ... - De exemplu,...

Page 1: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

Aplicații JAVA

Universitatea “Constantin Brâncuşi” din Târgu-JiuFacultatea de Inginerie

Departamentul de Automatică, Energie şi Mediu

Lect.dr. Adrian Runceanu

Page 2: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Curs 4

Pachete. Interfete

11.03.2015 Curs - Aplicatii Java 2

Page 3: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Pachete. Interfete

1. Pachete de clase de obiecte

2. Moştenire multiplă. Interfeţe Java

11.03.2015 Curs - Aplicatii Java 3

Page 4: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Ce este un pachet?

• Un pachet (package) contine un numar de clase inrudite ca scop, ca domeniu sau dinpunct de vedere al mostenirii.

• Daca programele sunt mici si folosesc un numar limitat de clase, nu este necesar sa cream pachete.

• Insa daca aplicatia noastra foloseste din ce in ce mai multe clase atunci este necesar sa le organizam in pachete.

11.03.2015 Curs - Aplicatii Java 4

Page 5: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

De ce sunt folositoare pachetele?

- Pachetele permit organizarea claselor in grupuri.

- Asa cum pe hard-disc avem directoare si subdirectoare pentru a ne organiza fisierele si aplicatiile, pachetele ne permit sa organizam clasele in grupuri din care putem folosi doar ceea ce avem nevoie pentru fiecare aplicatie.

11.03.2015 Curs - Aplicatii Java 5

Page 6: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Proprietati ale pachetelor

- Pachetele reduc problemele datorate conflictelor de nume.

- Cu cat creste numarul claselor de obiecte, cu atat creste posibilitatea de a folosi un nume de clasa deja existent, ceea ce va duce la aparitia unor conflicte si erori la integrarea acestora in aplicatii.

- Pachetele permit “ascunderea claselor” si evitarea acestor conflicte.

11.03.2015 Curs - Aplicatii Java 6

Page 7: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Proprietati ale pachetelor

- Pachetele protejeaza clasele, variabilele si metodele depasind nivelul de clasa.

- Pachetele pot fi folosite la identificarea claselor.

- De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina, putem sa folosim pentru pachetul de clase respectiv un identificator unic, care sa desemneze autorul sau organizatia din care provine.

11.03.2015 Curs - Aplicatii Java 7

Page 8: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Proprietati ale pachetelor

Nota:

• Chiar daca un pachet este, in esenta, un grup de clase, acesta poate contine si alte pachete, care formeaza alt nivel ierarhic asemanator, cumva, ierarhiei de clase.

• Fiecare nivel reprezinta, de obicei, o grupare mai mica de clase si cu sarcini mai precise.

• Biblioteca de clase Java este organizata si ea dupa aceste principii.

11.03.2015 Curs - Aplicatii Java 8

Page 9: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Utilizarea pachetelor existente de clase de obiecte

• Stim ca pachetele grupeaza mai multe clase la un loc.

• Pana acum am folosit pachete din biblioteca Java in legatura cu operatiile de I/O necesare citirii de la tastatura a datelor, pentru generarea unor obiecte de tip Random, etc.

11.03.2015 Curs - Aplicatii Java 9

Page 10: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Utilizarea pachetelor existente de clase de obiecte

Ca regula, putem alege unul dintre urmatoarele trei mecanisme pentru a utiliza o clasa continuta intr-un pachet:

1. cand clasa pe care dorim sa o folosim se afla in pachetul java.lang, ea se poate referi pur si simplu prin numele ei2. cand clasa pe care dorim sa o folosim se afla in alt pachet, ea se poate referi folosindu-i numele complet, adica inclusiv pe cel al pachetului (java.util.Random)

11.03.2015 Curs - Aplicatii Java 10

Page 11: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Utilizarea pachetelor existente de clase de obiecte

3. pentru clasele din alte pachete folosite frecvent in

aplicatie, se pot importa clasele individuale sau intreg

pachetul de clase folosit; dupa ce clasa sau pachetul au fost

importate, se poate referi clasa doar prin numele sau.

Nota:

• Clasele care nu sunt declarate ca facand parte dintr-un

anumit pachet sunt automat incluse intr-un pachet

prestabilit.

• Aceste clase pot fi referite prin numele lor, de oriunde

din cod.

11.03.2015 Curs - Aplicatii Java 11

Page 12: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Pentru a importa clasele dintr-un pachet se foloseste comanda import, asa cum am vazut in multe exemple prezentate pana acum.

• Se poate importa o clasa ca in exemplul urmator:import java.util.Vector;

• Se poate importa un intreg pachet de clase, folosind simbolul asterisc (*) in locul numelor de clasa, astfel:

import java.io.*;

Comanda import

11.03.2015 Curs - Aplicatii Java 12

Page 13: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Comanda import

Nota:• Comanda din exemplul de mai sus nu importa toate

clasele pachetului; sunt importate doar acele clase care au fost declarate public, si chiar si asa sunt importate doar acele clase care sunt referite in cod.

• De asemenea, daca pachetul respectiv are si subpachete, prin comanda import din exemplul de mai sus, nu se vor importa si subpachetele pachetului specificat in comanda import.

11.03.2015 Curs - Aplicatii Java 13

Page 14: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Pentru a importa toate clasele dintr-o ierarhie complexa de pachete va trebui sa se importe explicit fiecare nivel al ierarhiei.

• Instructiunea import trebuie plasata inaintea oricarei definitii de clasa (insa dupa definitia pachetului, daca se doreste crearea unui pachet propriu).

• Spre deosebire de directiva #include din limbajul C/C++, care include cod-sursa dintr-un alt fisier, instructiunea import indica doar locul unde poate fi gasita o clasa si nu are nici un rol in marirea dimensiunii aplicatiei proiectate.

Comanda import

11.03.2015 Curs - Aplicatii Java 14

Page 15: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Observatie:• Trebuie evitate conflictele de nume de clasa,

deoarece compilatorul va semnala o eroare. • Conflicul de nume de clasa are loc atunci cand

doua clase din pachete diferite au acelasi nume.

• In aceasta situatie, referirea la clasa dorita din aceste pachete trebuie sa se faca prin numele sau complet (inclusiv numele pachetului).

Comanda import

11.03.2015 Curs - Aplicatii Java 15

Page 16: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Variabila CLASSPATH si locul de dispunere a claselor in sistemul de fisiere

• Pentru ca programul nostru sa poata folosi o clasa, trebuie sa afle locul unde este dispusa clasa in sistemul de fisiere; altfel, va fi generata o eroare referitoare la inexistenta clasei.

11.03.2015 Curs - Aplicatii Java 16

Page 17: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Pentru gasirea claselor, Java foloseste:

• numele pachetului;

• directoarele referite de variabile de mediu CLASSPATH.

• Numele pachetelor corespund unor nume de directoare ale sistemului de fisiere.

• De exemplu, clasa java.applet.Applet se va gasi in directorul applet care face parte si el din directorul java(adica, java\applet\Applet.class).

11.03.2015 Curs - Aplicatii Java 17

Page 18: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Java cauta aceste directoare, pe rand, in cadrul cailor (path-

urilor) incluse in variabila de mediu CLASSPATH, daca aceasta

este definita.

• Daca nu este configurata nici o variabila CLASSPATH, Java

cauta in directorul prestabilit, java\lib (aflat in directorul cu

versiunea de soft SDK folosita), precum si in directorul curent.

• Java cauta, in aceste directoare, clasa referita in fisierul-sursa

folosindu-se de numele pachetului si al clasei, iar daca nu o

gaseste semnaleaza eroare de tip “class not found”.

11.03.2015 Curs - Aplicatii Java 18

Page 19: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Pentru crearea unor pachete proprii de clase de obiecte se parcurg urmatoarele etape:

1. Alegerea unui nume pentru pachet. • Numele ales pentru pachet depinde de modul in care

dorim sa folosim aceste clase. • Conventia de denumire a pachetelor, recomandata

de Sun este de a folosi numele de domeniu Internet cu elementele inversate.

• Ideea este de a ne asigura ca numele pachetuluicreat este unic.

Crearea propriilor pachete de clase de obiecte

11.03.2015 Curs - Aplicatii Java 19

Page 20: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Prin conventie, numele pachetelor incep culitera mica, pentru a le deosebi de numeleclaselor, care incep cu litera mare.

• De exemplu, in cazul denumirii complete a clasei String (adica, java.lang.String) putemvizualiza foarte usor numele pachetului de numele clasei.

• Aceasta conventie ajuta si ea la reducereaconflictelor de nume.

Crearea propriilor pachete de clase de obiecte

11.03.2015 Curs - Aplicatii Java 20

Page 21: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

2. Crearea structurii de directoare.• Se creeaza pe hard-disc o structura de directoare conforma cu

numele pachetelor. • Daca pachetul are un singur nume (cum ar fi: pachetulmeu)

este suficient sa cream un director cu acest nume.• Daca numele pachetului este compus din mai multe parti

(cum ar fi: ro.ucb.pachetulmeu), trebuie create si subdirectoarele respective.

• De exemplu, pentru pachetul ro.ucb.pachetulmeu trebuie sacream directorul ro, in cadrul acestuia subdirectorul ucb, iar in cel din urma, subdirectorul pachetulmeu.

• Clasele si fisierele sursa vor fi pastrate apoi in directorul pachetulmeu.

Crearea propriilor pachete de clase de obiecte

11.03.2015 Curs - Aplicatii Java 21

Page 22: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

3. Adaugarea unei clase intr-un pachet.• Pasul final este de a introduce clasa intr-un pachet, folosind

instructiunea package, plasata inainte de orice instructiune importfolosita.

• Se poate adauga o clasa la un pachet ca in exemplul urmator:package ro.ucb.pachetulmeu;

Nota:• Folosirea unui mediu de dezvoltare de aplicatii de tipul Eclipse

usureaza crearea pachetelor si a structurii de directoare aferente acestora.

• Mediile de acest tip permit si crearea de proiecte care inglobeaza pachetele si alte fisiere necesare aplicatiei, creand de fapt aplicatii de tip .jar.

Crearea propriilor pachete de clase de obiecte

11.03.2015 Curs - Aplicatii Java 22

Page 23: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Controlul accesului la clase se poate realiza folosind modificatorul de acces public.

• Acest acces inseamna ca respectiva clasa este vizibila si poate fi importata in afara pachetului.

• Clasele declarate publice pot fi importate de orice alte clase din afara pachetului.

Pachetele de clase si controlul accesului la clase

11.03.2015 Curs - Aplicatii Java 23

Page 24: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Atunci cand folosim instructiunea import cu simbolul * ,

se vor importa numai clasele publice din pachetul

respectiv.

• Daca nu este specificat nici un modificator pentru clasa,

atunci acesteia i se atribuie un control prestabilit al

accesului de tip package-friendly.

• Acest acces presupune ca respectiva clasa este

disponibila (vizibila) tuturor claselor din acelasi pachet,

insa nu si in afara pachetului - nici macar subpachetelor.

• Clasa nu poate fi importata sau referita prin nume.

Pachetele de clase si controlul accesului la clase

11.03.2015 Curs - Aplicatii Java 24

Page 25: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

Ne propunem sa rezolvam urmatoarea problema:

Se citesc N forme geometrice (patrate, dreptunghiuri, cercuri) de la tastatura.

Sa se afiseze formele geometrice ordonate dupa arie.

11.03.2015 Curs - Aplicatii Java 25

Page 26: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Pentru rezolvarea acestei probleme s-au definit urmatoarele clase de obiecte:

- clasa abstracta a formelor geometrice cu numele FormaGeo;

- clasele derivate din superclasa FormaGeo care caracterizeaza formele geometrice specifice: Cerc, Dreptunghi si Patrat;

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

11.03.2015 Curs - Aplicatii Java 26

Page 27: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

- doua clase ajutatoare, care pot fi folosite si de alte aplicatii si anume:

– interfata Compara care declara o metoda publica cu numele comparaCu(), asemanatoare metodei din biblioteca JavacompareTo(), folosita pentru compararea ariei a doua obiecte de tip FormaGeo;

– clasa Sort care realizeaza ordonarea formelor geometrice concrete (Cerc, Patrat si Dreptunghi) dupa arie; acesta clasa are un caracter mai general si poate fi folosita pentru ordonarea altor obiecte dupa diferite criterii.

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

11.03.2015 Curs - Aplicatii Java 27

Page 28: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

- clasa aplicatiei propriu-zise cu numele TestFormaInterfata folosita pentru citirea formelor de la tastatura si afisarea formelor geometrice ordonate dupa arie.

• Pentru o mai buna organizare, clasele de obiecte enumerate au fost impartite pe pachete, ceea ce inseamna ca fiecare fisier de tip .class a fost stocat intr-un director corespunzator numelui pachetului.

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

11.03.2015 Curs - Aplicatii Java 28

Page 29: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Astfel, au fost create urmatoarele pachete de clase de obiecte:- pachetul cu numele clasegenerice care continefisierele de tip .class: Sort.class si Compara.class; acest pachet a fost stocat in directorul cu numeleclasegenerice;- pachetul cu numele formegeometrice care continefisierele de tip .class: Cerc.class, Dreptunghi.class, Patrat.class si FormaGeo.class; acest pachet a foststocat in directorul cu numele formegeometrice.

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

11.03.2015 Curs - Aplicatii Java 29

Page 30: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Fisierul TestFormaInterfata.class corespunzatoraplicatiei propriu-zise nu a fost inclus in nici un pachet si a fost stocat in directorul curent de lucruaplicatiipachete.

• Pentru ca aplicatia sa functioneze, acest directortrebuie adaugat la variabila de mediu CLASSPATH.

• In directorul curent s-au creat si directoarelecorespunzatoare pachetelor descrise.

Exemplu de pachete proprii de clase create pentru aplicatia TestFormaInterfata.java

11.03.2015 Curs - Aplicatii Java 30

Page 31: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

In concluzie, structura de directoare si pachetele continute in aceste directoare arata ca in schema de mai jos:

Directorul de lucruaplicatiipachete

Directorulclasegenerice

Fisierul aplicatieiTestFormaInterfata.class

Directorulformegeometrice

Fisierele Sort.class siCompara.class

Fisierele Cerc.class, Dreptunghi.class, Patrat.classsi FormaGeo.class

11.03.2015 Curs - Aplicatii Java 31

Page 32: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Pachete. Interfete

1. Pachete de clase de obiecte

2. Moştenire multiplă. Interfeţe Java

11.03.2015 Curs - Aplicatii Java 32

Page 33: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Conceptul de mostenire este folosit in Java la organizarea claselor si a comportamentului acestora.

• Mostenirea este mecanismul fundamental pentru refolosirea codului.

• Prin mostenire o clasa noua dobandeste toateatributele si comportamentul unei clase existente(clasa originala).

• Din acest motiv, noua clasa poate fi creata prinsimpla specificare a diferentelor fata de clasaoriginala din care provine.

11.03.2015 Curs - Programare orientată pe obiecte 33

1. Conceptul de moștenire

Page 34: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Datorita relatiilor de mostenire clasele de obiectesunt organizate intr-o ierarhie bine precizata.

• In cadrul ierarhiei claselor de obiecte, operatia de definire a unei noi clase de obiecte pe baza uneiadeja existente se numeste derivare.

• Clasa originala (mai generala) se va numi superclasa a noii clase, iar noua clasa de obiectese va numi subclasa a clasei din care deriva.

11.03.2015 Curs - Programare orientată pe obiecte 34

1. Conceptul de moștenire

Page 35: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Uneori, in loc de derivare se foloseste termenul de extindere.

• Termenul vine de la faptul ca o subclasa isi extinde superclasa cu noi variabile si metode.

• De exemplu putem extinde clasa Masina:– la MasinaStraina (pentru care se plateste vama) – si MasinaAutohtona (pentru care nu se plateste vama)

etc.

11.03.2015 Curs - Programare orientată pe obiecte 35

1. Conceptul de moștenire

Page 36: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Intr-o ierarhie de clase, o clasa poate avea o singura

superclasa, insa poate avea un numar nelimitat de

subclase.

• Subclasele mostenesc toate atributele si metodele

superclasei lor, care la randul ei mosteneste toate

atributele si metodele de la superclasa ei si asa mai

departe, urcand in ierarhie.

• Rezulta ca o clasa nou creata contine toate atributele

si metodele claselor aflate deasupra sa in ierarhie, si in

plus contine propriile atribute si metode.

11.03.2015 Curs - Programare orientată pe obiecte 36

1. Conceptul de moștenire

Page 37: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Clasa A este superclasa a clasei B• Clasa B este subclasa a clasei A• Clasa B este superclasa pentru clasele C, D si E• Clasele C, D si E sunt subclase ale clasei B

Clasa A

Clasa B

Clasa DClasa C Clasa E

11.03.2015 Curs - Programare orientată pe obiecte 37

Page 38: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• In varful ierarhiei de clase Java se afla clasa Object, iartoate clasele de obiecte, care se creaza, sunt derivate din aceasta unica superclasa.

• Object reprezinta clasa initiala, sa-i spunem clasa de obiecte generice, care defineste atributele sicomportamentul (metodele) mostenite de toate claseledin biblioteca de clase Java.

• In varful ierarhiei se definesc concepte (clase) abstracte, foarte generale.

• Aceste concepte generale devin din ce in ce maiconcrete, mai particularizate, o data cu “coborarea” spre subclasele de pe nivelele de mai jos in ierarhie.

11.03.2015 Curs - Programare orientată pe obiecte 38

1. Conceptul de moștenire

Page 39: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Cand clasa nou creata defineste un comportamentcomplet nou si nu este o subclasa a unei alte clase, atunci ea mosteneste direct clasa Object.

• Astfel, noua clasa se integreaza corect in ierarhia claselor Java.

• De asemenea, daca se defineste o clasa care nu specifica o superclasa, Java presupune ca noua clasa mosteneste direct clasa Object.

• Clasele definite in exemplele de pana acum au mostenit direct clasa Object.

11.03.2015 Curs - Programare orientată pe obiecte 39

1. Conceptul de moștenire

Page 40: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• De exemplu, se poate construi o ierarhie Omcare deriva direct din clasa generica Object si are doua clase derivate: – clasa barbatilor (Barbat) – si clasa femeilor (Femeie)

• Daca la nivelul clasei de obiecte Om am definit forma bipeda a acestuia si capacitateade a vorbi si de a intelege, toate acestecaracteristici vor fi mostenite si de claselederivate din clasa Om, si anume clasabarbatilor si cea a femeilor.

11.03.2015 Curs - Programare orientată pe obiecte 40

1. Conceptul de moștenire

Page 41: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Fiecare din aceste clase de obiecte derivate isi vor defini propriile lor proprietati si operatii pentru a descrie diferenta dintre ele si clasa originala.

Obiect (Object)

Om

Barbat Femeie

11.03.2015 Curs - Programare orientată pe obiecte 41

1. Conceptul de moștenire

Page 42: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

2.Caracteristicile unei ierarhii de clase

• Organizarea unei aplicatii informatice intr-o ierarhie de clase presupune o planificare atenta.

• De alegerea claselor si de proiectarea arborelui acestor clase depinde eficienta si flexibilitatea aplicatiei.

11.03.2015 Curs - Programare orientată pe obiecte 42

Page 43: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

Principalele caracteristici ale unei ierarhie de clase sunt:

- atributele si metodele comune mai multor clase pot fi

definite in superclase, care permit folosirea repetata a

acestora pentru toate clasele aflate pe nivelele mai

joase din ierarhie

- modificarile efectuate in superclasa se reflecta automat

in toate subclasele ei, subclasele acestora si asa mai

departe; nu trebuie modificat si recompilat nimic in

clasele aflate pe nivelurile inferioare, deoarece acestea

primesc noile informatii prin mostenire

11.03.2015 Curs - Programare orientată pe obiecte 43

2.Caracteristicile unei ierarhii de clase

Page 44: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

- clasa derivata poate sa adauge noi atribute si metode

si poate modifica semnificatia metodelor mostenite

(prin polimorfism);

- superclasa nu este afectata in nici un fel de

modificarile aduse in clasele derivate;

- o clasa derivata este compatibila ca tip cu superclasa,

ceea ce inseamna ca o variabila referinta de tipul

superclasei poate referi un obiect al clasei derivate,

dar nu si invers; clasele derivate dintr-o superclasa

nu sunt compatibile ca tip.

11.03.2015 Curs - Programare orientată pe obiecte 44

2.Caracteristicile unei ierarhii de clase

Page 45: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

3. Moştenirea simplă şi multiplă

• Forma de mostenire folosita in Java este denumita moştenire simplă (single inheritance), deoarece fiecare clasa de obiecte Java nou creata poate fi derivata dintr-o singura superclasa (poate avea o singura superclasa).

11.03.2015 Curs - Programare orientată pe obiecte 45

Page 46: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Moştenirea multiplă inseamna ca o clasa nou creata poate fi derivata din doua sau mai multe superclase, mostenind variabilele si metodele combinate din toate aceste superclase.

• Mostenirea multipla (multiple inferitance) ofera mijloace de creare a unor clase care cuprind aproape orice comportament imaginabil.

• Acest lucru complica semnificativ definitia clasei si a codului necesar acesteia.

11.03.2015 Curs - Programare orientată pe obiecte 46

3. Moştenirea simplă şi multiplă

Page 47: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Moştenirea simplă poate fi restrictivă, mai ales atunci cand exista un comportament similar, care trebuie duplicat pe diferite “ramuri” ale ierarhiei de clase (nu pe aceeasi ramura a ierarhiei).

• De exemplu: – omul poate fi privit ca un mamifer care naste pui vii – sau poate fi privit ca un obiect spatio-temporal care are

propria lui forma si pozitie in functie de timp.

• Aceasta inseamna ca trebuie sa dam definitii de metode despre ce inseamna faptul ca un obiect poate fi privit ca un mamifer sau ca un obiect spatio-temporal.

11.03.2015 Curs - Programare orientată pe obiecte 47

3. Moştenirea simplă şi multiplă

Page 48: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Dar, aceste definitii de metode sunt comune nu numai clasei de obiecte Om dar si altor clase de obiecte derivate sau nu din clasa Om, superclase sau nu ale clasei Om.

• Putem sa gasim o multime de clase de obiecte ale caror instante pot fi privite ca obiecte spatio-temporale dar care sa nu aiba mare lucu in comun cu omul (de exemplu clasa Minge).

11.03.2015 Curs - Programare orientată pe obiecte 48

3. Moştenirea simplă şi multiplă

Page 49: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]

• Pentru rezolvarea problemei moştenirii multiple, Java foloseste interfeţele.

• Declaratiile de metode si atribute comune mai multor clase de obiecte care nu sunt mostenite de la superclasele lor poarta denumirea de interfaţă.

11.03.2015 Curs - Programare orientată pe obiecte 49

3. Moştenirea simplă şi multiplă

Page 50: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Mostenire multipla

• In cazul mostenirii multiple o clasa este derivata din doua sau mai multe superclase.

• De exemplu, pot exista intr-o ierarhie clase precum Student si Angajat.

• Din aceste doua clase ar putea fi derivata o clasa cu numele AngajatStudent care sa contina atribute si metode combinate din clasele Student si Angajat.

11.03.2015 Curs - Aplicatii Java 50

Page 51: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Mostenirea multipla poate conduce insa la dificultati de proiectare.

• De exemplu, cele doua superclase din care deriveaza subclasa ar putea contine metode care au aceeasi semnatura, dar implementari diferite sau ar putea avea atribute cu acelasi nume.

• Dificultatea rezolvarii unor astfel de probleme a facut ca Java sa nu permita mostenirea multipla.

Mostenire multipla

11.03.2015 Curs - Aplicatii Java 51

Page 52: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Interfete Java

• Alternativa oferita de Java pentru mostenirea multipla este folosirea interfetelor.

• O interfata Java este o colectie de comportamente abstracte, care pot fi combinate in orice clasa pentru a introduce in acea clasa comportamente care nu pot fi mostenite de la superclasa.

• Tehnic, interfata Java este cea mai abstracta clasa posibila.

• Ea consta doar din metode publice abstracte si din atribute statice si finale.11.03.2015 Curs - Aplicatii Java 52

Page 53: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Interfete Java

• O clasa implementeaza o anumita interfatadaca furnizeaza definitii pentru toate metodele abstracte din cadrul interfetei.

• O clasa care implementeaza o interfata se comporta ca si cand ar fi extins o clasa abstracta specificata de acea interfata.

11.03.2015 Curs - Aplicatii Java 53

Page 54: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Crearea si folosirea interfetelor Java

Sintaxa de definire a unei interfete este urmatoarea:

[<modificatori>] interface <nume_interfata> [extends <nume_interfata1> [, <nume_interfata2>] [,nume_interfata3>], …]]

{<corpul interfetei>

}

11.03.2015 Curs - Aplicatii Java 54

Page 55: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

unde:• <modificatori> - sunt specificati prin cuvintele-cheie public si

abstract; o interfata publica poate fi accesata si de alte pachete decat cel care a definit-o; fiecare interfata este in mod implicit abstracta deci cuvantul-cheie abstract poate lipsi;

• <nume_interfata> - specifica numele interfetei; este de preferat ca numele interfetei sa respecte aceeasi conventie de numire ca si cea de numire a claselor;

• <nume_interfata1>, <nume_interfata2>, ... - specifica numele superinterfetelor din care poate deriva interfata;

• <corpul_clasei> - contine declaratii de variabile si declaratii de metode (numai antetul acestora).

• Variabilele interfetei sunt implicit statice si finale si deci trebuie specificate valori initiale pentru acestea.

• Metodele sunt declarate in interfata numai cu antetul lor, faracorp. Ele sunt implicit abstracte.

11.03.2015 Curs - Aplicatii Java 55

Page 56: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Interfete Java

Observatii:

1. Interfetele nu se pot instantia, adica nu se poate crea o instanta a unei interfete; deci, o interfata nu are o metoda constructor.

2. Nu pot exista implementari diferite pentruaceeasi metoda declarata in doua interfete.

11.03.2015 Curs - Aplicatii Java 56

Page 57: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Interfetele trebuie sa posede o protectie de pachetsau publica.

• Interfetele care nu contin modificatorul public nu-si vor converti automat metodele la accesul public si abstract si nici constantele la accesul public.

• O interfata nepublica are metode si constante nepublice, acestea neputand fi folosite decat in clasele sau interfetele din acelasi pachet.

• Interfetele, ca si clasele, pot apartine unui pachet daca se foloseste instructiunea package in prima linie din fisierul-sursa.

• De asemenea, interfetele pot importa interfete sau clase din alte pachete.

11.03.2015 Curs - Aplicatii Java 57

Page 58: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Un exemplu de interfata este Compara:

/* INTERFATA folosita de mai multe clase pentru comparatii

* --------------------Metode publice---------------

* int comparaCu --> Compara doua obiecte de tip Compara

* metoda trebuie definita in clasa care o implementeaza

*/

package clasegenerice;

public interface Compara

{

int comparaCu(Compara rhs);

}

11.03.2015 Curs - Aplicatii Java 58

Interfete Java

Page 59: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Interfata Compara declara o metoda pe care orice clasa

derivata din ea (in declaratia clasei se foloseste cuvantul-

cheie implements) trebuie sa o implementeze.

• Metoda comparaCu () se va comporta similar cu metoda

compareTo() din clasa String.

• Metoda este implicit publica si abstracta si deci nu

trebuie sa folosim modificatorii de acces public si de

metoda abstract.

Interfete Java

11.03.2015 Curs - Aplicatii Java 59

Page 60: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Implementarea unei interfete

O clasa implementeaza o interfata in doi pasi:

1. declara interfata, folosind cuvantul-cheie implements in antetul sau

2. defineste implementari pentru toate metodele din interfata.

11.03.2015 Curs - Aplicatii Java 60

Page 61: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

• Pentru a exemplifica implementarea unei interfete ne vom referi la clasa FormaGeo descrisa anterior.

• Aceasta clasa implementeaza interfata Compara si, deci, trebuie sa definim si metoda comparaCu() din interfata Compara.

• Implementarea metodei in clasa FormaGeo trebuie sa fie identica cu declaratia din interfata si, din acest motiv, metoda comparaCu() are ca parametru un obiect de tip Compara si nu un obiect de tip FormaGeo.

• Codul clasei este ilustrat in continuare (FormaGeo.java):

11.03.2015 Curs - Aplicatii Java 61

Page 62: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

/* Superclasa abstracta pentru forme */package formegeometrice; import clasegenerice.*;public abstract class FormaGeo implements Compara{

private String nume;abstract public double arie();public FormaGeo(String numeForma) {

nume = numeForma;}

Implementarea unei interfete

11.03.2015 Curs - Aplicatii Java 62

Page 63: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

public int comparaCu(Compara rhs) {if (arie() < ((FormaGeo) rhs).arie()) return -1;else

if (arie() == ((FormaGeo) rhs).arie()) return 0;else return 1;

} final public String toString() {

return nume + ", avand aria " + arie();}

}

Implementarea unei interfete

11.03.2015 Curs - Aplicatii Java 63

Page 64: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Nota:

1. O clasa care implementeaza o interfata poate sa extinda si o alta clasa. In acest caz in declaratia clasei se foloseste mai intai cuvantul-cheie extends urmat de numele clasei din care deriveaza si apoi cuvantul-cheie implements urmat de numele interfetei pe care o implementeaza.

2. Retinem ca definirea metodelor declarate intr-o interfata trebuie obligatoriu sa fie facuta in fiecare clasa in parte, care implementeaza interfata respectiva.

Implementarea unei interfete

11.03.2015 Curs - Aplicatii Java 64

Page 65: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Nota:

3. Metodele interfetei definite in clasa care o implementeaza sunt mostenite de toate subclasele clasei respective. Aceste metode pot fi redefinite (suprascrise) in subclase.

4. Daca o clasa extinde o superclasa care implementeaza o interfata, atunci si clasa respectiva mosteneste interfata.

Implementarea unei interfete

11.03.2015 Curs - Aplicatii Java 65

Page 66: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Implementarea unor interfete multiple

• O clasa poate sa implementeze mai mult decat o singura interfata.

• O clasa poate implementa mai multe interfete in doi pasi:1. declara toate interfetele pe care le

implementeaza, folosind cuvantul-cheie implements in antetul sau urmat de numele tuturor interfetelor separate prin virgula;

2. defineste implementari pentru toate metodele din toate interfetele pe care le implementeaza.

• Folosirea unor interfete multiple poate crea totusi complicatii.

11.03.2015 Curs - Aplicatii Java 66

Page 67: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Derivarea interfetelor

• Ca si in cazul claselor, interfetele pot fi organizate intr-o ierarhie.

• Atunci cand o interfata mosteneste o alta interfata, subinterfata primeste toate metodele si constantele definite in superinterfata.

• Pentru a deriva (extinde) o interfata se foloseste tot cuvantul-cheie extends, la fel ca in cazul definitiilor de clasa:

public interface <nume_interfata> extends<nume_superinterfata> {

…..}11.03.2015 Curs - Aplicatii Java 67

Page 68: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Nota:

• In cazul interfetelor nu exista o radacina comuna a arborelui de derivare asa cum exista pentru arborele de clasa, clasa Object.

• Interfetele pot exista independent sau pot mosteni o alta interfata.

• Ierarhia de interfete este cu mostenire multipla. • O singura interfata poate mosteni oricate clase are

nevoie.

Derivarea interfetelor

11.03.2015 Curs - Aplicatii Java 68

Page 69: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Exemplu de implementare a unei structuri de tip stiva*

*Cristian_Frasinaru-Curs_practic_de_Java

11.03.2015 Curs - Aplicatii Java 69

Page 70: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Dorim sa implementam un nou tip de date numit Stack, care sa modeleze notiunea de stiva de obiecte.

Obiectele de tip stiva, indiferent de implementarea lor, vor contine metodele:

push - adauga un nou element in stıva pop - elimina elementul din varful stivei peek - returneaza varful stivei empty - testeaza daca stiva este vida toString - returneaza continutul stivei sub forma unui

sir de caractere.

Exemplu de interfata Java

11.03.2015 Curs - Aplicatii Java 70

Page 71: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Din punctul de vedere al structurii interne, o stiva poate fi implementata folosind:

un vector sau o lista inlantuitaambele solutii avand avantaje si dezavantaje. Prima solutie este mai simplu de inteles, in timp ce a

doua este mai eficienta din punctul de vedere al folosirii memoriei.

Deoarece nu dorim sa legam tipul de date Stack de o anumita implementare structurala, il vom defini prin intermediul unei interfete.

Implementarea unei stive

11.03.2015 Curs - Aplicatii Java 71

Page 72: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Interfata Stack

Implementarea unei stive

11.03.2015 Curs - Aplicatii Java 72

Page 73: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Modalitatea de implementare a stivei folosind o lista inlantuita:

Implementarea unei stive

11.03.2015 Curs - Aplicatii Java 73

Page 74: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Exemplu demonstrativ care foloseste tipul de date nou creat implementarea stivei folosind o lista simplu inlantuita

Implementarea unei stive

11.03.2015 Curs - Aplicatii Java 74

Page 75: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Observati folosirea interfetei Stack ca un tip de date, ce aduce flexibilitate sporita in manevrarea claselor ce implementeaza tipul respectiv.

Metoda afiseaza() accepta ca argument orice obiect al unei clase ce implementeaza Stack.

Implementarea unei stive

11.03.2015 Curs - Aplicatii Java 75

Page 76: Aplica ii JAVA -  · PDF file11.03.2015 Curs - Aplicatii Java 6. copyright@  ... - De exemplu, daca implementam un set de clase pentru a realiza o anumita sarcina,

[email protected]@www.adrian.runceanu.ro

Întrebări?

11.03.2015 Curs - Aplicatii Java 76