Sobes.tech
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