Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 17.04.2018
Сообщений: 236
1

Защита приложения с помощью инкапсуляции

22.04.2018, 08:13. Показов 1928. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ограничение доступа к членам класса является основным принципом объектно-ориентированного программирования, поскольку это ограничение защищает объекты от неправильного использования. Разрешая доступ к закрытым членам класса только посредством строго определенного набора методов, мы предотвращаем присвоение данным некорректных значений.

Объясните, пожалуйста такие ограничения нужны для защиты от внешних угроз и для защиты программы от ошибки программиста?

Добавлено через 33 секунды
или
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2018, 08:13
Ответы с готовыми решениями:

Защита приложения с помощью ключа
В общем мне нужна помошь. При первом запуске программа должна запрашивать ключ-запрос.Затем мой...

Влияние инкапсуляции, наследования и полиморфизма на архитектуру создаваемого приложения
всем доброго времени! и огромное спасибо за объяснения, которые очень помогают в изучении. хотелось...

Защита приложения C#
Есть программа - менеджер, которая подгружает С++ длл-ки. Каждая обрабатывает пакет и передает на...

Защита стороннего приложения
Здравствуйте, начну сразу к делу! Есть приложение А которое написано на C#. Оно служит в роли анти...

2
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
22.04.2018, 09:36 2
Лучший ответ Сообщение было отмечено Ivanjs как решение

Решение

Смотря что вы подразумеваете под внешними угрозами. Утрированно, это сокрытие полей, и предоставления к ним строго предопределенного доступа посредством методов, или свойств в случае C#.

Приведу гипотетический пример. Существует класс пользователя, который предназначен для авторизации в программе. И у этого класса, есть поле типа string, которое содержит в себе значение электронной почты заходящего пользователя. Нам важно, что бы в это поле попал корректный адрес электронной почты, а иначе - пользователь бы получал сообщение об ошибке. В C# мы можем это сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Example
{
    private string email; // Обратите внимание, поле имеет модификатор доступа private - т.е. он не доступен извне, работа с ним производится в рамках одного класса
 
    public string Email // Свойство имеет модификатор доступа public - т.е. работа с ним может производиться за рамками данного класса
    {
        get { return email } // Получение значения адреса электронной почты извне
        set
        {
            if (!value.Contains('@')) // ключевое слово value - это значение переданной в свойство строки
            {
                throw new Exception("Не корректно введенный адрес эл. почты"); // Генерируем исключение в случае, если не найден символ @, в реальном случае, вероятнее всего будет применяться регулярное выражение
            }
            else
            {
                email = value; // Присваивание значения сокрытому полю, в случае корректного значения передаваемого адреса эл. почты
            }
        }
    }
    ....
 
    public static void Main(string[] args)
    {
        Example example = new Example();
        // example.Email = "Some string"; // Генерация исключения
        // example.email = "some@mail.ru"; // Ошибка, мы не можем получить доступ к скрытому полю email
        example.Email = "email@mail.ru"; // Работа не напрямую с полем email, а с его свойством - проявление инкапсуляции
        Console.WriteLine(example.Email); // Вывод на консоль значения поля email с помощью свойства, т.е. проявление инкапсуляции
1
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
22.04.2018, 09:44 3
Цитата Сообщение от Ivanjs Посмотреть сообщение
такие ограничения нужны для защиты от внешних угроз и для защиты программы от ошибки программиста?
Если под внешними угрозами вы подразумеваете попытку взломать приложение (крякнуть лицензию или наколдовать бесконечных денег в игрушке), то инкапсуляция — не панацея.
Она нужна в основном для минимизации багов и слабого связывания: если какой-то код выполняется изолированно, всегда есть возможность точно отследить происходящее и тем самым уменьшить количество багов или исправить уже существующие. Если разные части приложения не сильно связаны друг с другом, то любое изменение одной части не потребует каскадного изменения всей системы. В идеале, конечно.
1
22.04.2018, 09:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2018, 09:44
Помогаю со студенческими работами здесь

Защита приложения от декомпиляции
но одна горесть что можно обойти дизой программы и отключении таймера я даж не понимаю почему так...

Защита приложения на C# и обфускация
Не так давно перешел с классического Native на .Net. И сразу возник ряд вопросов каким образом...

Защита приложения методом Reactor
Здравствуйте... Давно сижу и пытаюсь всячески обеспечить защиту приложения своего которое...

Защита стороннего приложения от внешнего воздействия
Существует такой вопрос, например у нас есть .exe(любой сторонней программы) который теоретические...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru