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);
}
}