Objektien manipulointi luokissa OOP:ssa JavaScriptissä
Luokat voivat menetelmien parametreina vastaanottaa muiden luokkien olioita ja manipuloida näitä olioita. Katsotaanpa esimerkkiä. Olkoon meillä seuraava luokka:
javascriptclass User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Oletetaan, että päätimme tehdä luokan, joka manipuloi kokoelmaa käyttäjäolioita:
javascriptclass UsersCollection {
}
Tallennamme käyttäjäoliot taulukkomuodossa yksityisessä ominaisuudessa:
javascriptclass UsersCollection {
#users;
constructor() {
this.#users = [];
}
}
Tehdään menetelmä uuden käyttäjän lisäämiseksi taulukkoon:
javascriptclass UsersCollection {
#users;
constructor() {
this.#users = [];
}
add(user) {
this.#users.push(user);
}
}
Ja nyt tehdään menetelmä, joka tulostaa kaikkien käyttäjien nimet konsoliin:
javascriptclass UsersCollection {
#users;
constructor() {
this.#users = [];
}
add(user) {
this.#users.push(user);
}
show() {
for (let user of this.#users) {
console.log(user.getName());
}
}
}
Katsotaanpa luokkamme toimintaa. Aluksi luomme sen olion:
javascriptlet uc = new UsersCollection;
Nyt lisätään kokoelmaamme useita käyttäjiä:
javascriptuc.add(new User('john'));
uc.add(new User('eric'));
uc.add(new User('kyle'));
Ja nyt kutsukaamme menetelmää, joka tulostaa konsoliin kaikkien käyttäjien nimet:
javascriptuc.show();
Tee luokka EmployeesCollection,
joka sisältää taulukon työntekijöistä.
Tee tähän luokkaan menetelmä uuden työntekijän lisäämiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden tulostamiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden kokonaispalkan laskemiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden keskipalkan laskemiseksi.