Enkapsulacja
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 17 z 56.
Enkapsulacja to proces łączenia danych wewnątrz klasy w jedną całość.
Pomaga to ograniczyć bezpośredni dostęp do danych klasy, co ostatecznie pozwala zapobiegać ich przypadkowym modyfikacjom.
Zobaczmy enkapsulację w działaniu na prostym przykładzie. Utwórzmy podstawowy obiekt z publicznymi właściwościami:
const user = {
name: "John",
email: "john@example.com"
};Każdy może bezpośrednio uzyskiwać dostęp do tych właściwości i je modyfikować:
user.name = "Jane"; // Łatwe do zmodyfikowania z zewnątrz
console.log(user.email); // Łatwy dostęp z zewnątrzBardziej hermetyczne podejście wykorzystuje domknięcia, aby ukryć dane:
function createUser(name, email) {
// Te zmienne są prywatne (enkapsulowane)
let userName = name;
let userEmail = email;
// Zwróć obiekt z metodami umożliwiającymi dostęp do prywatnych danych
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");Teraz, aby wejść w interakcję z danymi:
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
// Nie można uzyskać bezpośredniego dostępu do danych
console.log(encapsulatedUser.userName); // undefinedWyzwanie
Otrzymujesz kod, który wykorzystuje enkapsulację do ochrony danych użytkownika. Twoim zadaniem jest dodanie metody getAge(), aby uzyskać dostęp do wieku.
Testy sprawdzą:
- istnienie metody
getAge() - Zwraca prawidłowy wiek
- Informacje o wieku pozostają prywatne
Oczekiwany wynik:
john_doe
25
Spróbuj swoich sił
import { createUser } from './createUser.js';
// Kod testowy — nie modyfikuj
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Powinno wypisać "john_doe"
console.log(user.getAge()); // Powinno wypisać 25
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