Untitled
unknown
javascript
3 years ago
4.1 kB
11
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{
dodajProduktbezid(nazwa,model,cena,zuzycieEnergii){
let id = 0
for(let i =0;i<this.lista.length;i++){
if(this.lista[i].id>id)
id=this.lista[i].id
}
id=id+1
let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
this.lista.push(x)
}
dodajProduktzid(id,nazwa,model,cena,zuzycieEnergii){
let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
this.lista.push(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 = this.lista[x];
if(!this.lista.some(x=>x.id==idprod)){
//zeby sprawdzic czy juz jest w liscie o tym indekscie
throw 'Object not in array';
}else{
y.ilosc -= ile;
if(y.ilosc<=0)
y.ilosc=0
this.map.set(x, y.ilosc);
}}
}
class Zamowienia {
constructor(){
this.zamowienia=[]
}
dodajProdukt(id,magaz){
if(magaz.lista.some(prod=>prod.id==id)){this.zamowienia.push({ProductID:id,magazyn:magaz,ilosc:magaz.ilosc})
}else{
console.log("cant find product with such id")
}
}
zrealizujZamowienie(c){
for(let i=0;i<this.zamowienia.length;i++){
let x = this.zamowienia[i]
this.zamowienia[i].ilosc-=c
}
}
}
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)
console.log(x)
try {
list.dodajProdukt(prod3)
} catch (e) {
console.error(e);
}
list.zmienProdukt(2,prod3)
let mag = new Magazyn()
mag.dodajProdukt(prod,3)
mag.dodajProdukt(prod2,5)
mag.wypiszWszystkieProdukty()
try {
mag.zabierzProdukt(2,5);
} catch (e) {
console.error(e);
//not in array
}
mag.zabierzProdukt(2,2)
mag.wypiszWszystkieProdukty()
let sklp= new Sklep()
sklp.dodajProduktbezid("tomek","smiglowiec",10000,100)
sklp.dodajProduktzid(10,"Xd","Omg",1,111)
sklp.wypiszWszystkieProdukty()
let zam = new Zamowienia()
zam.dodajProdukt(4,mag)
zam.dodajProdukt(2,mag)
zam.dodajProdukt(5,mag)
console.log(zam)
zam.zrealizujZamowienie(2)
console.log(zam)Editor is loading...