Manipulacja obiektami w klasach w OOP w JavaScript
Klasy jako parametry metod mogą przyjmować obiekty innych klas i manipulować tymi obiektami. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Załóżmy, że postanowiliśmy utworzyć klasę, która będzie manipulować zbiorem obiektów użytkowników:
class UsersCollection {
}
Będziemy przechowywać obiekty użytkowników w postaci tablicy we właściwości prywatnej:
class UsersCollection {
#users;
constructor() {
this.#users = [];
}
}
Stwórzmy metodę do dodawania nowego użytkownika do tablicy:
class UsersCollection {
#users;
constructor() {
this.#users = [];
}
add(user) {
this.#users.push(user);
}
}
A teraz stwórzmy metodę, która wypisze w konsoli imiona wszystkich użytkowników:
class UsersCollection {
#users;
constructor() {
this.#users = [];
}
add(user) {
this.#users.push(user);
}
show() {
for (let user of this.#users) {
console.log(user.getName());
}
}
}
Zobaczmy na działanie naszej klasy. Na początku stwórzmy jej obiekt:
let uc = new UsersCollection;
Teraz dodajmy do naszej kolekcji kilku użytkowników:
uc.add(new User('john'));
uc.add(new User('eric'));
uc.add(new User('kyle'));
A teraz wywołajmy metodę, która wypisze w konsoli imiona wszystkich użytkowników:
uc.show();
Stwórz klasę EmployeesCollection,
która będzie zawierać tablicę pracowników.
Stwórz w tej klasie metodę do dodawania nowego pracownika.
Stwórz w tej klasie metodę do wypisywania wszystkich pracowników.
Stwórz w tej klasie metodę do obliczania sumy wynagrodzeń wszystkich pracowników.
Stwórz w tej klasie metodę do obliczania średniego wynagrodzenia wszystkich pracowników.