Problema 30

abstract class Produs{

private String cod,nume;

private double pret;

private int cantitate;

public Produs(String cod, String nume, double pret, int cantitate){

this.cod=cod;

this.nume=nume;

this.pret=pret;

this.cantitate=cantitate;

}

public String getCod() {

return cod;

}

public String getNume() {

return nume;

}

public double getPret(){

return pret;

}

public void setPret(double pret){

this.pret=pret;

}

public int getCantitate() {

return cantitate;

}

public void setCantitate(int cantitate){

this.cantitate=cantitate;

}

public String toString(){

return "\nCod: "+this.cod+"\nNume: "+this.nume+"\nPret: "+this.pret+"\nCantitate: "+this.cantitate;

}

}

class ProdusCompensat extends Produs{

public ProdusCompensat(String cod, String nume, double pret, int cantitate,double coeficient) {

super(cod,nume,pret,cantitate);

setPret(pret*coeficient);

}

}

class ProdusNecompensat extends Produs{

public ProdusNecompensat(String cod, String nume, double pret, int cantitate) {

super(cod, nume, pret, cantitate);

}

}

class Client{

private Produs[] produse=new Produs[100];

private int numarProduse=0;

public void adaugareProdus(Produs p){

int gasit=0;

for(int i=0;i<numarProduse;i++){

if(produse[i].getCod().equals(p.getCod())){

produse[i].setCantitate(p.getCantitate());

gasit=1;

}

}

if(gasit==0){

if(numarProduse<produse.length){

produse[numarProduse]=p;

numarProduse++;

}

else{

Produs[] tmp=new Produs[produse.length+100];

for(int i=0;i<numarProduse;i++){

tmp[i]=produse[i];

}

produse=tmp;

produse[numarProduse]=p;

numarProduse++;

}

}

}

public String toString(){

String result="";

for(int i=0;i<numarProduse;i++){

String result2="\nProdus "+(i+1)+": ";

result=result+result2+produse[i]+"\n";

}

return result;

}

}

public class Main {

public static void main(String[] args) {

Client c1=new Client();

c1.adaugareProdus(new ProdusCompensat("123","Nurofen",4,5,0.5));

c1.adaugareProdus(new ProdusNecompensat("124","Oua",1,10));

System.out.println(c1);

}

}