<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Дополнительно к курсу идёт вспомогательная система, которая не даст Вам забросить начатое на полпути.

Также к курсу идёт Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

ООП в JavaScript. Инкапсуляция

ООП в JavaScript. Инкапсуляция

Инкапсуляция - это скрытие реализации какой-либо задачи в JavaScript коде не из вредности, а с целью защиты части кода от пользователя или программиста. Зачем это нужно, если любой JavaScript код мы можем вытащить из браузера? Здесь не идет речь о защите кода от копирования. У нас задача такая - сделать некоторые участки кода (свойства объектов) недоступными при прямом обращении к ним.

Инкапсуляция препятствует прямому обращению к свойству или методу. А вместо этого, создаются посреднические свойства или методы, через которые и будет осуществляться доступ к оригиналам. Попытка обратится к инкапсулированным (скрытым) свойствам, вызовет ошибку. Инкапсулированные данные можно увидеть в коде, но к ним нельзя напрямую обратится и получить их. Другие программисты должны обращаться к некоторым данным только через разрешенные автором программы методы или функции. Такой подход в целом приносит только выгоду.

  • Программист, работающий с чужим кодом не перегружен лишней информацией
  • Инкапсуляция повышает безопасность кода

Пример без применения инкапсуляции

На этом примере легко увидеть, как любой может вмешаться в код и изменить данные у объекта.

// Функция User принимает два аргумента: name, age.
function User(name, age) {
// Создали два новых объекта и присвоили им свойства
    this.name = name;
    this.age = age;
// Функция say будет выводить в консоль определенную информацию
    this.say = function() {
         console.log(´Имя пользователя: ${this.name}, Возраст: ${this.age}´);
    };
}
// Создадим нового пользователя
const misha = new User('Misha', 25);
// Получаем доступ к свойствам нового пользователя
console.log(misha.name);
console.log(misha.age);

Раз мы легко получили доступ к свойствам пользователя, значит мы легко мы можем и изменить данные свойства.

misha.name = 'Oskar'; // меняем имя
misha.age = 32; // меняем возраст

// Метод say() покажет какие значения есть у объекта на данный момент.
this.say();

Мы видим, что объект misha уже содержит новые данные вместо первоначальных. Получается, что кто-то может вмешаться в наш код и изменить данные. Чтобы воспрепятствовать такому поведению и придумали инкапсуляцию.


ООП в JavaScript. Инкапсуляция.


Пример создания инкапсуляции

Заменим объекты this.name и this.age на переменные userName и userAge.

// Функция User принимает два аргумента: name, age.
function User(name, age) {
    // Создали две переменных и присвоили им свойства
        let userName = name;
        let userAge = age;
    // Функция say будет выводить в консоль определенную информацию
    this.say = function() {
        console.log(`Имя пользователя: ${userName}, Возраст: ${userAge}`);
        };
    }
    // Создадим нового пользователя
    const misha = new User('Misha', 25);
    // Получаем доступ к свойствам нового пользователя
    console.log(misha.userName);
    console.log(misha.userAge);

    misha.userName = 'Oskar'; // меняем имя
    misha.userAge = 32; // меняем возраст

// Метод say() покажет какие значения есть у объекта на данный момент.
misha.say();

Мы видим, что данные в переменных никак не изменились. Дело в том, что содержимое переменных созданных внутри функций уже нельзя поменять снаружи.


ООП в JavaScript. Инкапсуляция.


Заключение

Инкапсуляция - это один из принципов объектно-ориентированного программирования (ООП). Когда пользователь просто использует программу, то все отлично. Нам нельзя допускать, что пользователь случайно что-то сломал в программе. Как раз отделение и сокрытие от внешнего мира внутренностей программы (переменных, функций, методов), называется инкапсуляцией. В ООП это означает, что объект хранит свое состояние в приватном порядке и только методы объекта имеют доступ для его изменения. Во первых это делается для защиты от пользователя, а во вторых для удобства программиста - без последствий что-то поменять в программе. В конце концов очень удобно, когда внутренности программы скрыты, а мы используем лишь ее результат. Сокрытие информации - это распространенная практика во всех языках программирования.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.