Junior
Na czym polega koncepcja enkapsulacji w programowaniu?
sobes.tech AI
Odpowiedź od AI
Sens kapsułkowania w programowaniu polega na łączeniu danych i metod do pracy z nimi w jedną całość (obiekt) oraz ukrywaniu wewnętrznej implementacji przed światem zewnętrznym. Pozwala to na kontrolę dostępu do danych, ich ochronę przed nieprawidłowymi zmianami oraz upraszcza utrzymanie kodu, czyniąc go bardziej modułowym i elastycznym.
Główne zalety kapsułkowania:
- Ukrywanie danych: Wewnętrzny stan obiektu jest dostępny tylko przez określone metody (getter i setter).
- Kontrola dostępu: Można stosować logikę walidacji podczas zmiany danych.
- Zmniejszenie powiązań: Zmiany w wewnętrznej implementacji jednego obiektu nie wymagają zmian w innych obiektach, które go używają, o ile interfejs pozostaje niezmieniony.
- Poprawa utrzymania: Kod staje się bardziej zrozumiały i łatwiejszy do modyfikacji.
Przykład w JavaScript:
class User {
constructor(name, age) {
this._name = name; // Prywatna właściwość (konwencja, nie obowiązkowa w JS do prywatnych pól)
this._age = age;
}
getName() { // Getter dla name
return this._name;
}
getAge() { // Getter dla age
return this._age;
}
setAge(newAge) { // Setter dla age z walidacją
if (newAge > 0) {
this._age = newAge;
} else {
console.error("Wiek musi być większy od zera.");
}
}
}
const user = new User("Ivan", 30);
console.log(user.getName()); // Dostęp przez getter: Ivan
user.setAge(31); // Zmiana przez setter z walidacją
console.log(user.getAge()); // Dostęp przez getter: 31
user.setAge(-5); // Błąd przy próbie nieprawidłowej zmiany