Sobes.tech
Junior — Middle

Можете ли да обясните принципа на инкапсулацията и как се реализира в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

Капсулирането е принцип на обектно-ориентираното програмиране, който предполага скриване на вътрешната реализация на обекта и предоставяне на достъп до данните и методите само чрез определен интерфейс.

Това позволява:

  • Защита на данните от неправилна употреба
  • Скриване на сложността на реализацията
  • Осигуряване на контрол върху промяната на състоянието на обекта

В езицата за ООП капсулирането се реализира чрез модификатори за достъп (например private, protected, public), които определят кои полета и методи са достъпни отвън.

Пример на Go (където капсулирането се постига чрез експортирани и неекспортирани идентификатори):

type User struct {
    name string // неекспортирано поле, достъпно само в пакета
}

func (u *User) GetName() string {
    return u.name // публичен метод за достъп до името
}

func (u *User) SetName(newName string) {
    if newName != "" {
        u.name = newName
    }
}

Тук полето name е скрито от външен достъп, а взаимодействието с него става чрез методите GetName и SetName, които контролират логиката за достъп и промяна.