rolisz's site

Subiect MAP

Doamna profesor Grigoreta Cojocar.

A fost scurt acest parțial. Prima oră a predat profa, pentru prima oară cu sala plină :))) Și apoi a împărțit subiectele. Au fost vreo 24 (cred). Al meu a fost biletul 14: 1. Metode generice și apelul lor 2. Di­men­si­unea unei colecții de stringuri

Atât. Fără verbe sau altceva. Ex­pli­cați­ile ulterioare au fost că la a doua trebuia să scriem testarea pentru metoda respectivă. 1 - 6 puncte, 2 - puncte.

Ce ne-a dat doamna profesoară la ultimul curs.

Examen scris:

Durata: o oră

Examen practic:

Se cere cu Observer și Spring. Se noteaza și proiectarea (or­ga­ni­zarea pe pachete și clase). Codul trebuie să fie ­com­pi­l­abil ca să se uite la el. Durata: 2h 30 min.

Exemplu scriere cod pentru diagrame clase:

map2

 public interface Multime { // interfata ii cu cerculet     public void adauga(Element e);     public boolean cauta(Element e);     public boolean sterge(Element e); }

public abstract class Element {
public boolean egalCu(Element e) { }
}

public class Nod {
private Element info;
private Nod urm;
}
public class Multime_TD implements Multime {
protected int capacitate_TD;
private Nod[] Elemente;

public void adauga(Element e){}
public boolean cauta(Element e){}
public boolean sterge(Element e){}

protected int func_hash(Element e){}
}

Exemplu1
MAP

public interface Numar {
public boolean egal(Numar n);
}

public abstract class Polinom { /\* abstract ii cu italic \*/
protected int grad;

public abstract void addMonom(int g, Numar n);

public int getGrad() { }

public abstract Numar getCoef(int g);

public Polinom aduna(Polinom a) { }

}

public class Monom {
private int g;
private Numar coef; // din relatia de asociere
}

public class Polinom_LM extends Polinom {
private Monom[] coef;

public void addMonom(int g, Numar n) {}

public Numar getCoef(int g){ }
}

Rezolvare: Pe GitHub. Cu Spring.

Scris:

  1. a) Șablonul Abstract Factory b) Șablonul In­for­ma­tion Expert

  2. Ceva diagrame cu rațe :))

    1. Care din ur­mă­toarele afirmații despre o clasele interioară nested sunt adevărate? a. Are acces la toți membrii clasei exterioare. b. Poate folosi doar vari­abilele declarate cu final în interiorul clasei unde a fost declarată. c. Se declară folosind cuvântul static d. Poate folosi doar membrii declarați folosind static din clasa exterioară.

2.

class AA {    public AA() { System.out.println("AA");  } }

public class SA extends AA {
int iTime;

public static void main(String argv[]) {
SA d = new SA();
d.fg(10);
}

public static void fg(int iTime) {
System.out.println(iTime);
}

public SA() { super(10); }
}

Ce se va afișa la rularea acestui bucăți de cod?

a. Eroare la compilare, metoda statica fg nu poate fi apelata folosind obiectul d. b. Se compileaza si afiseaza 10. c. Se compileaza si afiseaza AA 0 d. Eroare la compilare, clasa SA nu poate fi creata

3.

class BException extends RuntimeException { }`{lang="java"}

class AA {
void metodaB(int i) { }
}

public class BA extends AA {
public static void main(String argv[]) {
}
//aici
}

Care din ur­mă­toarele linii de cod se poate pune în locul co­men­tar­i­u­lui //aici ca să nu se obțină eroare?

a. void metodaB(char c) {} b. void metodaB(long i) throws BException {} c. public void metodaB(int i) throws BException {} d. int metodaB(int i) { }

Practic:

Proiectați și im­plem­n­tați un program Java având ur­mă­toarele cerințe.

O agenți de turism oferă excursii de o zi pentru persoane vârstnice catre destinații diferite. Agenția are puncte de lucru (locații) în mai multe zone din oraș de unde persoanele pot cumpăra bilete. Se folosește un sistem soft pentru gestiunea biletelor vândute către des­ti­nați­ile oferite. Angajații de la fiecare locație folosesc sistemul pentru vizual­izări sau pentru a vinde bilete.

  1. La de­schiderea aplicației, angajatul de la fiecare locație vede o listă cu toate excursiile oferite în ziua respectivă (destinație, ora plecării și numărul de locuri disponi­bile).

  2. Angajatul poate să vizual­izeze persoanele care vor pleca către o anumită destinație. Pentru vizualizare, se selectează destinația dorită și se apasă butonul de vizualizare. După apăsarea butonului sistemul afișează în altă listă (tabel) toate persoanele care au cumpărat bilete pentru destinația respectivă (numele și vârsta).

  3. Pentru a vinde un bilet, angajatul selectează destinația și introduce numele clientului și vârsta. După apăsarea butonului de vânzare, toți ceilalți angajați de la celelalte locații văd lista ac­tu­al­iza­tă a des­ti­nați­ilor și a numărului de locuri disponi­bile. Dacă pentru o anumită destinație nu mai sunt locuri disponi­bile, destinația este ștearsă din lista de la punctul 1.

Cerințe: 1. La pornirea aplicației se vor deschide ferestre pentru toate locațiile precizate ca și parametrii în linia de comandă. 2. Datele despre des­ti­nați­ile oferite și numărul de locuri disponi­bile se citesc dintr-un fișier text. 3. Datele despre biletele vândute se salvează în alt fișier text.

Mersi Mădă pentru reîm­prospătarea memoriei mele :D