Untitled

mail@pastecode.io avatar
unknown
javascript
2 years ago
3.6 kB
3
Indexable
const kosztEn=1.23;

class Product{
  constructor(id,nazwa,model,cena,zuzycieEnergii){this.id=id,
    this.nazwa=nazwa,
    this.model=model,
    this.cena=cena,
    this.zuzycieEnergii=zuzycieEnergii
    //this.ilosc = 1
  }

koszt(){
  return this.cena;
}
kosztEnergii(){
  return this.zuzycieEnergii*kosztEn + "kWh";
}
 wiekProduktu(rocznik){
  return 2022-rocznik;
}
wiekProduktuLata(rocznik){
  let lata=2022-rocznik
  if(lata==1)
  return lata + " rok";
  else if(lata>1||lata<5)
  return lata + " lata";
  else{
    return lata + " lat";
  }
}
tostring() {
  return("(" + this.id + ", " + this.nazwa + ", "+ this.model 
  + ", " + this.cena + ", " + this.zuzycieEnergii +")")
  }
}

class ListaTowarow{
  
  constructor() {
    this.lista=new Array();
}
wypiszWszystkieProdukty() {
  this.lista.forEach(function(element) {
      console.log(element)
  })
}

dodajProdukt(p){
  if(this.lista.find(x=>x.id==p.id)){
  //zeby sprawdzic czy juz jest w liscie o tym indekscie
  throw 'Object already in array';
  }else{
    this.lista.push(p)
  }}

zmienProdukt(idprod,produkto){
  let n=this.lista.findIndex(x => x.id == idprod)
  this.lista[n]=produkto;
}
wypiszProdukt(idprod){
return this.lista.find(x=>x.id == idprod)
}}

class Sklep extends ListaTowarow{

constructor(){
  super(list)
}
dodajProdukt(nazwa,model,cena,zuzycieEnergii){
  let id = Math.floor(Math.random()*100)
  let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
  list.dodajProdukt(x)
}
dodajProdukt(id,nazwa,model,cena,zuzycieEnergii){
  
  let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
  list.dodajProdukt(x)
}


}


class Magazyn extends ListaTowarow {

  constructor() {
      super(list)
      this.map = new Map();
  }

  dodajProdukt(p,ile){
    if(this.lista.find(x=>x.id==p.id)){
    //zeby sprawdzic czy juz jest w liscie o tym indekscie
    throw 'Object already in array';
    }else{
      this.map.set(p.id, ile);
        p.ilosc = ile;
      this.lista.push(p)
    }}

  zabierzProdukt(idprod, ile) {
    let x = this.lista.findIndex(x=>x.id == idprod)
    let y = list[x]
    if(!this.lista.find(x=>x.id==idprod)){
      //zeby sprawdzic czy juz jest w liscie o tym indekscie
      throw 'Object not in array';
      }else{
        y.ilosc = y.ilosc-ile
        this.map.set(x, ile);
       
        
      }}
    
    /* if(iloscSztuk <= this.map.get(idProduktu)) {
         this.map.set(idProduktu, (this.map.get(idProduktu) - iloscSztuk));
          return this.lista.find(x => x.id == idProduktu );
     }*/

  }



let prod = new Product(2,"pralkobetoniarka","X77",800,10)
let prod2=new Product(4,"Tarkowiertarka","ub99",300,2)
let prod3=new Product(111,"Piekarnikolodowka","jedyny",2000,15)
let list=new ListaTowarow()

list.dodajProdukt(prod)
list.dodajProdukt(prod3)
list.dodajProdukt(prod2)
let x =list.wypiszProdukt(2)
//list.wypiszWszystkieProdukty()
console.log(x)
try {
  list.dodajProdukt(prod3)
} catch (e) {
  console.error(e);
  // expected output: "Parameter is not a number!"
}
list.zmienProdukt(2,prod3)
//list.wypiszWszystkieProdukty()
let mag = new Magazyn()
mag.dodajProdukt(prod,3)
mag.dodajProdukt(prod2,5)
mag.wypiszWszystkieProdukty()
try {
  mag.zabierzProdukt(5,2)
} catch (e) {
  console.error(e);
  //not in array
}
mag.zabierzProdukt(2,2)
mag.wypiszWszystkieProdukty()

let sklp= new Sklep()
sklp.dodajProdukt("tomek","smiglowiec",10000,100)
sklp.wypiszWszystkieProdukty()
sklp.dodajProdukt(10,"Xd","Omg",1,111)
sklp.wypiszWszystkieProdukty()