Sunteți pe pagina 1din 17

Rezolvare model subiecte examen

 Subiectul 1
 Subiectul 2
 Subiectul 3

2020
Subiectul 1

1. Sa se realizeze o aplicatie care defineste tipurile: Localitate, Comuna, Municipiu, folosind


relatia de mostenire. Sa se defineasca:
- (1 p) atributele necesare (Nume, NrLocuitori, Judet, Suprafata, daca este sau nu resedinta
de judet, NrSate din subordine)
- (1 p) constructorii
- (0,5 p) metodele toString si densitatePopulatie (NrLocuitori/Suprafata)
- (0,5 p) reprezentati printr-o diagrama UML de clase, cele 3 concepte, relatiile dintre ele,
atributele si metodele acestora.

Programul de test
- (0,5 p) completeaza o colectie de localitati cu 4 comune si 2 municipii
- (0,5 p) afiseaza polimorfic colectia de localitati si densitatea populatiei fiecarei localitati.
- (0,5 p) afiseaza doar municipiile din colectie prin testarea tipului acestora.
- (0,5 p) scade cu 50% populatia tuturor comunelor. Dupa scadere se vor afisa toate
localitatile.
Subiectul 1 (continuare)
Subiectul 1 (continuare)

Clasa Localitate
package modelex;
public class Localitate {
private String nume;
private String judet;
private int nrLoc;
private double suprafata;

public Localitate (String n, String j, int nl, double s){


nume=n; judet=j; nrLoc=nl; suprafata=s;}

@Override
public String toString(){
return String.format("%s judet %s, %d locuitori, suprafata %.2f kmp, densitate %.2f loc/kmp",
nume,judet,nrLoc,suprafata,densitate());
}

public void setNrLoc(int n){nrLoc=n;}


public int getNrLoc() {return nrLoc;}

private double densitate(){


return nrLoc/suprafata;
}
}
Subiectul 1 (continuare)

Testam Clasa Localitate

package modelex;
public class ModelEx {
public static void main(String[] args) {
Localitate l= new Localitate("Medgidia","Constanta",30000, 70);
System.out.println(l);
l.setNrLoc(l.getNrLoc()/2);
System.out.println(l);
}
}

run:
Medgidia judet Constanta, 30000 locuitori, suprafata 70.00 kmp, densitate 428.57 loc/kmp
Medgidia judet Constanta, 15000 locuitori, suprafata 70.00 kmp, densitate 214.29 loc/kmp
Subiectul 1 (continuare)

Clasa Comuna
package modelex;
public class Comuna extends Localitate {
private int nrSate;

public Comuna(String n, String j, int nl, double s,int ns){


super(n,j,nl,s);
nrSate=ns;
}
@Override
public String toString(){
return String.format("Comuna %s, nr sate %d", super.toString(), nrSate);
}
}
Subiectul 1 (continuare)

Testam Clasa Comuna

package modelex;
public class ModelEx {
public static void main(String[] args) {
Comuna c= new Comuna("Mihai Viteazu","Constanta",3000, 100, 4);
System.out.println(c);
}
}

run:
Comuna Mihai Viteazu judet Constanta, 3000 locuitori, suprafata 100.00 kmp, densitate 30.00 loc/kmp, nr sate 4
Subiectul 1 (continuare)

Clasa Municipiu
package modelex;
public class Municipiu extends Localitate {
private boolean esteResedinta;
public Municipiu(String n, String j, int nl, double s,boolean er){
super(n,j,nl,s);
esteResedinta=er;
}
@Override
public String toString(){
String t="este resedinta judet";
if (!esteResedinta) t="nu " + t;
return String.format("Municipiu %s, %s", super.toString(), t);
}
}
Subiectul 1 (continuare)

Testam Clasa Municipiu

package modelex;
public class ModelEx {
public static void main(String[] args) {
Municipiu m= new Municipiu("Medgidia","Constanta",40000, 1000, false);
System.out.println(m);
}
}

run:
Municipiu Medgidia judet Constanta, 40000 locuitori, suprafata 1000.00 kmp, densitate 40.00 loc/kmp, nu este resedinta judet
Subiectul 1 (continuare)

Programul de test
package modelex;
public class ModelEx {
public static void main(String[] args) {
Localitate[] colectie= { new Comuna("Oltina","Constanta",2500,70,3),
new Comuna("Murfatlar","Constanta",2000,50,2),
new Comuna("Cristian","Brasov",400,60,4),
new Comuna("Vladesti","Salaj",5000,80,5),
new Municipiu("Tulcea","Tulcea",25000,780,true),
new Municipiu("Cernavoda","Constanta",25000,780,false)};
System.out.println("Toate localitatile");
for (Localitate l:colectie) System.out.println(l);
System.out.println("Doar municipiile");
for (Localitate l:colectie)
if(l instanceof Municipiu) System.out.println(l);
System.out.println("Reduc populatia comunelor");
for (Localitate l:colectie)
if(l instanceof Comuna) l.setNrLoc(l.getNrLoc()/2);
System.out.println("Toate localitatile");
for (Localitate l:colectie) System.out.println(l);
}
}
Subiectul 1 (continuare)

Programul de test
run:
Toate localitatile
Comuna Oltina judet Constanta, 2500 locuitori, suprafata 70.00 kmp, densitate 35.71 loc/kmp, nr sate 3
Comuna Murfatlar judet Constanta, 2000 locuitori, suprafata 50.00 kmp, densitate 40.00 loc/kmp, nr sate 2
Comuna Cristian judet Brasov, 400 locuitori, suprafata 60.00 kmp, densitate 6.67 loc/kmp, nr sate 4
Comuna Vladesti judet Salaj, 5000 locuitori, suprafata 80.00 kmp, densitate 62.50 loc/kmp, nr sate 5
Municipiu Tulcea judet Tulcea, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, este resedinta judet
Municipiu Cernavoda judet Constanta, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, nu este resedinta judet
Doar municipiile
Municipiu Tulcea judet Tulcea, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, este resedinta judet
Municipiu Cernavoda judet Constanta, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, nu este resedinta judet
Reduc populatia comunelor
Toate localitatile
Comuna Oltina judet Constanta, 1250 locuitori, suprafata 70.00 kmp, densitate 17.86 loc/kmp, nr sate 3
Comuna Murfatlar judet Constanta, 1000 locuitori, suprafata 50.00 kmp, densitate 20.00 loc/kmp, nr sate 2
Comuna Cristian judet Brasov, 200 locuitori, suprafata 60.00 kmp, densitate 3.33 loc/kmp, nr sate 4
Comuna Vladesti judet Salaj, 2500 locuitori, suprafata 80.00 kmp, densitate 31.25 loc/kmp, nr sate 5
Municipiu Tulcea judet Tulcea, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, este resedinta judet
Municipiu Cernavoda judet Constanta, 25000 locuitori, suprafata 780.00 kmp, densitate 32.05 loc/kmp, nu este resedinta judet
Subiectul 2

2. Sa se realizeze o aplicatie care defineste clasa Microbuz ce contine:


- (1 p) atributele (nr, traseu, tarif), constructorul, metoda toString pentru afisarea unui microbuz;
- (1 p) testarea se va realiza prin instantierea unei colectii de 4 obiecte de tip microbuz si afisarea
lor in fereastra de executie cu metoda toString;

Clasa Microbuz
package modelex;
public class Microbuz {
private int nr;
private String traseu;
private double tarif;

public Microbuz(int n, String tr,double ta){


nr=n; traseu=tr; tarif=ta;
}

@Override
public String toString(){
return String.format("Microbuz nr: %d, traseu: %s, tarif: %.2f lei",nr, traseu,tarif);
}
}
Subiectul 2 (continuare)

Clasa de test

package modelex;
public class ModelEx {
public static void main(String[] args) {
Microbuz[] colectie = {new Microbuz(305,"Km4-5 - Mamaia", 3),
new Microbuz(310,"Gara - Tomis Nord", 2),
new Microbuz(304,"CET - Tomis Nord", 3),
new Microbuz(301,"Km 4-5 Bd.Mamaia", 3)};
for (Microbuz m:colectie)
System.out.println(m);
}
}

run:
Microbuz nr: 305, traseu: Km4-5 - Mamaia, tarif: 3.00 lei
Microbuz nr: 310, traseu: Gara - Tomis Nord, tarif: 2.00 lei
Microbuz nr: 304, traseu: CET - Tomis Nord, tarif: 3.00 lei
Microbuz nr: 301, traseu: Km 4-5 Bd.Mamaia, tarif: 3.00 lei
Subiectul 3

3. Sa se realizeze o aplicatie grafica ce incarca o colectie de microbuze.

package modelex;
import java.awt.*;
import java.awt.event.*;
public class Fereastra extends Frame implements ActionListener {
private Microbuz[] colectie = new Microbuz[50];
private int n=0;

private Label lNr = new Label("Nr");


private TextField txtNr = new TextField(20);

private Label lTraseu = new Label("Traseu");


private TextField txtTraseu = new TextField(20);

private Label lTarif = new Label("Tarif");


private TextField txtTarif = new TextField(20);
Subiectul 3 (continuare)

private Button save = new Button("Save");


private Button exit = new Button(" Exit ");

public Fereastra( String title ) {


super( title );
setLayout(new FlowLayout());
add(lNr);
add(txtNr);
add(lTraseu);
add(txtTraseu);
add(lTarif);
add(txtTarif);
add(save);
add(exit);
save.addActionListener( this );
exit.addActionListener( this );
}
Subiectul 3 (continuare)

public void actionPerformed( ActionEvent e) {


Microbuz m;
int nr;
double t;
if (e.getSource() == exit ) System.exit(0);
if (e.getSource() == save) {
nr=Integer.parseInt(txtNr.getText());
t=Double.parseDouble(txtTarif.getText());
m = new Microbuz(nr,txtTraseu.getText(),t);
colectie[n++]=m;
this.setTitle(n + " microbuze");
txtNr.setText(null); txtTraseu.setText(null); txtTarif.setText(null);
System.out.println(m);
}
}
}
Subiectul 3 (continuare)

Clasa de test

package modelex;
public class ModelEx {
public static void main(String[] args) {
Fereastra f = new Fereastra("L12-1");
f.pack();
f.setBounds(300,200,200,280);
f.setVisible(true);
}
}

S-ar putea să vă placă și