Problema 31
import java.util.*;
class SistemSoftware{
private ArrayList<Fisier>fisiere=new ArrayList<Fisier>();
public void add(Fisier fisier){
fisiere.add(fisier);
}
public int getNumarFisiere(){
return fisiere.size();
}
public int getNumarClase(){
int result=0;
for(int i=0;i<fisiere.size();i++)
result=result+fisiere.get(i).getNumarClase();
return result;
}
private HashSet<String> getAutoriDistincti(){
ArrayList<String>autori=new ArrayList<>();
for(int i=0;i<fisiere.size();i++)
autori.add(fisiere.get(i).getAutor());
HashSet<String>tmp=new HashSet<String>(autori);
return tmp;
}
public int getNumarAutoriDistincti(){
return getAutoriDistincti().size();
}
public String toString(){
String result="Sistem software:\nNumar fisiere: "+getNumarFisiere()+"\n";
HashSet<String>tmp=getAutoriDistincti();
Iterator<String>it=tmp.iterator();
while(it.hasNext()){
String aux=it.next();
result=result+"Nume autor: "+aux+"\n\tFisiere scrise:\n";
for(int i=0;i<fisiere.size();i++)
if(aux.equals(fisiere.get(i).getAutor()))
result=result+fisiere.get(i).getNumeFisier()+"\n";
}
return result;
}
}
class Fisier{
private LinkedList<Clasa>clase=new LinkedList<Clasa>();
private String numeFisier, autor;
public Fisier(String numeFisier, String autor){
this.numeFisier=numeFisier;
this.autor=autor;
}
public void add(Clasa clasa){
clase.add(clasa);
}
public int getNumarBuguri(){
int result=0;
for(int i=0;i<clase.size();i++)
result=result+clase.get(i).getNumarBuguri();
return result;
}
public int getNumarClase(){
return clase.size();
}
public String getAutor(){
return this.autor;
}
public String getNumeFisier(){
return this.numeFisier;
}
}
class Clasa{
private int numarLiniiCod;
private String numeClasa;
private LinkedList<Bug>bugs=new LinkedList<Bug>();
public Clasa(int numarLiniiCod, String numeClasa){
this.numarLiniiCod=numarLiniiCod;
this.numeClasa=numeClasa;
}
public void add(Bug bug){
bugs.add(bug);
}
public int getNumarLiniiCod() {
return numarLiniiCod;
}
public int getNumarBuguri(){
return bugs.size();
}
}
class Bug{
private String referinta;
public Bug(String referinta){
this.referinta=referinta;
}
protected String getReferinta(){
return this.referinta;
}
}
class NullBug extends Bug{
public NullBug(String referinta){
super(referinta);
}
public String toString(){
return "NullBug: "+super.getReferinta()+"\n";
}
}
class CastBug extends Bug{
private String tipInitial, tipDestinatie;
public CastBug(String referinta, String tipInitial, String tipDestinatie){
super(referinta);
this.tipInitial=tipInitial;
this.tipDestinatie=tipDestinatie;
}
public String toString(){
return "CastBug: "+super.getReferinta()+" "+tipInitial+" "+tipDestinatie+"\n";
}
}
public class Main {
public static void main(String[] args) {
Bug bug1=new CastBug("Referinta1","Initial1","Destinatie1");
Bug bug2=new NullBug("Referinta2");
Clasa clasa1=new Clasa(20,"Numeclasa1");
Clasa clasa2=new Clasa(25,"NumeClasa2");
clasa1.add(bug1);
clasa2.add(bug2);
Fisier fisier1=new Fisier("NumeFisier1","Autor1");
Fisier fisier2=new Fisier("NumeFisier2","Autor1");
Fisier fisier3=new Fisier("NumeFisier3","Autor2");
fisier1.add(clasa1);
fisier1.add(clasa2);
fisier2.add(clasa1);
fisier2.add(clasa2);
SistemSoftware sistem1=new SistemSoftware();
sistem1.add(fisier1);
sistem1.add(fisier2);
sistem1.add(fisier3);
System.out.println("Numar clase:"+sistem1.getNumarClase()+"\n"+sistem1.toString());
}
}