Рубрики
ООП принцип "Инкапсуляция"

ООП принцип Инкапсуляция «Понятие»

ПРИМЕР
User

У нас есть класс User и у него есть ряд следующих полей. Это соответственно имя пользователя, пароль и некоторый id — уникальный идентификатор, который позволяет однозначно определить того или иного пользователя. При создании объекта username и пароль password мы получаем их из вне т.е. указывает пользователь, который использует наше приложение. При этом id мы устанавливаем сами, генерируя его и тем самым гарантируя его уникальность и поскольку свойства у нас являются приватными, то нам требуется создать get и set . Для того чтобы мы могли управлять этими свойствами откуда-то извне. Поэтому id у нас всегда статичный и изменятся не может. Поэтому set мы для него удаляем.

class User {
 private _username;
 private _password;
 private _id;

 constructor(username, password) {
  this._username = username;
  this._password = password;
  this._id + generateRandomId();
 }

 get username() {
  return this._username;
 }
 set username(){
   this._username = value;
 }

 get password() {
  return this._password;
 }
 set password(){
   this._password = value;
 }

 get id() {
  return this._id;
 }

}

Таким образом мы гарантируем, что имя пользователя и пароль могут меняться, id мы можем только получать из-вне. Изменять его из вне мы не можем (будем получать ошибку). Таким образом, по сути по случайности никто не сможет изменить id пользователя. При этом username мы поменять можем спокойно, потому что мы сделали для него соответствующий set.

const user = new User('Ulbi','Timur');
user.id=5;//error

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *