This is an old revision of the document!


Laboratorul 06.

  • Responsabil: Mihai Nan
  • Data publicării: 30.10.2017
  • Data ultimei modificări: 30.10.2017

Problema 1

Să se implementeze ierarhia de clase descrisă prin diagrama de mai jos:

Clasa abstractă Shape conține trei metode abstracte: getArea, getPerimeter și metoda toString care este implementată în fiecare clasă și este particularizată, pentru a face distincția între obiecte.

Pentru validarea acestei cerințe, puteți folosi clasa Test01 pusă la dispoziție în arhiva laboratorului.

Problema 2

Pornind de la ierarhia definită anterior, definiți o referință la un obiect de tip Rectangle. Verificați dacă puteți instanția un astfel de obiect folosind unul din constructorii clasei Shape și unul din cei existenți în clasa Square. Declarați și instanțiați un obiect de tip Square, apoi incercați să îi faceți cast la un obiect de tip: Rectangle, Shape și Circle. Eliminați erorile apărute, folosind instanceof pentru a determina dacă este validă operația pe care incercați să o realizați.

Determinați tipurile conversiilor, din blocul de cod de mai jos, indicând dacă sunt sau nu posibile.

//Conversie 1
Circle c1 = new Circle();
Square sq = (Square) c1;
//Conversie 2
Rectangle r = new Rectangle(5.0, 5.0);
sq = (Square) r;
//Conversie 3
sq = new Square(7.0);
r = sq;

Upcasting & Downcasting

Problema 3

Pornind de la interfața propusă, creați o clasă Student care implementează interfața și conține ca membri privați numele studentului și un vector cu elemente de tip Double, reprezentând mediile acestuia. Dacă există doi studenți care au același nume, primul este cel cu media mai mare.

Scrieți o metodă main care construiește un vector (obiect din clasa Vector) cu elemente de tip Student, îl ordonează, conform criteriului anterior, folosind Collectios.sort, și apoi îl afișează!

interface Persoana extends Comparable {
    public double calculMedieGenerala();
    public String getNume();
    public void setNume(String nume);
    public void addMedie(double medie);
}

Problema 4

Să se definească o clasă filtru pentru selecția de fișiere după o listă de extensii (tipuri de fișiere) și după o listă de nume. Clasa implementează una din interfețele FileFilter sau FilenameFilter conține un vector cu tipurile de fișiere acceptate și un vector cu cuvintele care ar trebui să între în alcătuirea numelor fișierelor selectate.

Pentru testare, se poate folosi clasa Test05 pusă la dispoziție în arhiva laboratorului. Extensiile acceptate se citesc din fișierul extension.in, iar cuvintele din fișierul words.in, folosind obiecte de tipul RandomAccessFile.

poo/laboratoare/06.1509397695.txt.gz · Last modified: 2017/10/30 23:08 by mihai.nan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0