Metody modyfikujące stan
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 15 z 56.
Metody w klasach JavaScript mogą modyfikować stan (właściwości) obiektu. To jedna z kluczowych cech programowania obiektowego.
Stwórzmy prostą klasę BankAccount:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
}Teraz utwórzmy instancję i zmodyfikujmy jej stan:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Wyświetla: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Wyświetla: 150W tym przykładzie metoda deposit() modyfikuje stan wewnętrzny (właściwość balance) instancji BankAccount.
Możemy dodać więcej metod modyfikujących stan:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
}
}
transfer(amount, toAccount) {
if (amount <= this.balance) {
this.balance -= amount;
toAccount.balance += amount;
}
}
}Teraz możemy manipulować naszym kontem bankowym na wiele sposobów.
Wyzwanie
Otrzymujesz klasę Thermostat. Twoim zadaniem jest dodać metody, które modyfikują stan temperatury:
increaseTemp()- zwiększa temperaturę o 1 stopieńdecreaseTemp()- zmniejsza temperaturę o 1 stopień
Spróbuj swoich sił
import { Thermostat } from './thermostat.js';
// Kod testowy - nie modyfikuj
const livingRoom = new Thermostat("Living Room", 20);
livingRoom.increaseTemp();
livingRoom.increaseTemp();
console.log(livingRoom.currentTemp); // Powinno wyświetlić 22
livingRoom.decreaseTemp();
console.log(livingRoom.currentTemp); // Powinno wyświetlić 21
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Obiekty i słowo kluczowe this
Szybka powtórka: obiektyDodawanie metod do obiektówZrozumienie słowa kluczowego thisFunkcje konstruktoraSłowo kluczowe newWyzwanie podsumowujące7Dziedziczenie i słowo kluczowe extends
DziedziczenieRelacja „jest rodzajem”Słowo kluczowe extendsMetoda super()Dziedziczenie właściwości i metodWyzwanie podsumowujące10Polimorfizm
Czym jest polimorfizm?Nadpisywanie odziedziczonych metodUżywanie superWyzwanie podsumowujące13Kompozycja a dziedziczenie
Relacja „ma” a relacja „jest”Ograniczenia głębokiego dziedziczeniaTworzenie obiektów2Organizowanie kodu
Czym są moduły?Eksportowanie za pomocą exportImportowanie za pomocą importEksporty domyślne a nazwane5Enkapsulacja i dostęp
EnkapsulacjaPubliczne i prywatne pola klasyMetody prywatneWyzwanie podsumowujące8Organizowanie kodu OOP
Organizowanie klas w moduły11Projekt: Renderer kształtów
Konfiguracja: klasa Shape i eksportDziedziczenie klasy CircleNadpisywanie i metoda obliczania polaStatyczny licznik kształtów14System zarządzania biblioteką
Projektowanie bibliotekiKlasa Book z kompozycjąWalidacja autora książki9Metody i właściwości statyczne
Poziom klasy a poziom instancjiWłaściwości statyczneStatyczne metody pomocniczeWyzwanie podsumowującePoćwicz samodzielnie: Kompilator JavaScript online