Я попытаюсь продемонстрировать инкапсуляцию простым способом .. Давайте посмотрим ..
- Объединение данных и функций в единый блок (называемый
класс) известен как инкапсуляция. Инкапсуляция, содержащая и скрывающая
информация об объекте, такая как внутренние структуры данных и
Код.
Инкапсуляция -
- Сокрытие сложности,
- Связывание данных и функции вместе,
- Создание частного метода сложным,
- Создание переменной экземпляра приватной,
- Скрытие ненужных данных и функций от конечного пользователя.
Инкапсуляция реализует абстракцию.
А абстракция это -
- Показывает, что необходимо,
- Данные должны абстрагироваться от конечного пользователя,
Давайте посмотрим пример-
На приведенном ниже изображении показан графический интерфейс пользователя «Сведения о клиенте, добавляемые в базу данных».
Глядя на изображение, мы можем сказать, что нам нужен класс клиента.
Шаг - 1: Что нужно моему клиентскому классу?
* * Тысяча сорок-одиной т.е.
- 2 переменные для хранения кода клиента и имени клиента.
1 Функция для добавления кода клиента и имени клиента в базу данных.
namespace CustomerContent
{
Заказчик публичного класса
{
публичная строка CustomerCode = "";
публичная строка CustomerName = "";
public void ADD ()
{
// мой код БД будет здесь
}
Теперь только метод ADD не будет работать здесь один.
Шаг -2: Как будет работать валидация, функция ДОБАВИТЬ?
Нам понадобятся код подключения к базе данных и код проверки (дополнительные методы).
public bool Validate()
{
//Granular Customer Code and Name
return true;
}
public bool CreateDBObject()
{
//DB Connection Code
return true;
}
class Program
{
static void main(String[] args)
{
CustomerComponent.Customer obj = new CustomerComponent.Customer;
obj.CustomerCode = "s001";
obj.CustomerName = "Mac";
obj.Validate();
obj.CreateDBObject();
obj.ADD();
}
}
Теперь нет необходимости показывать дополнительные методы (Validate (); CreateDBObject () [сложный и дополнительный метод]) конечному пользователю. Конечный пользователь должен видеть и знать только о коде клиента, имени клиента и кнопке ADD который добавит запись. Конечному пользователю не важно, КАК он добавит данные в базу данных?.
Шаг -3: Приватные дополнительные и сложные методы, не включающие взаимодействие с конечным пользователем.
Таким образом, делая метод Complicated и Extra закрытым вместо Public (то есть скрывая эти методы) и удаляя obj.Validate (); obj.CreateDBObject (); из основного в классе программы мы достигаем инкапсуляции.
Другими словами, упрощение интерфейса для конечного пользователя - это инкапсуляция.
Теперь код выглядит так:
namespace CustomerContent
{
public class Customer
{
public string CustomerCode = "";
public string CustomerName = "";
public void ADD()
{
//my DB code will go here
}
private bool Validate()
{
//Granular Customer Code and Name
return true;
}
private bool CreateDBObject()
{
//DB Connection Code
return true;
}
class Program
{
static void main(String[] args)
{
CustomerComponent.Customer obj = new CustomerComponent.Customer;
obj.CustomerCode = "s001";
obj.CustomerName = "Mac";
obj.ADD();
}
}
Резюме:
Шаг -1: Что нужно моему классу клиентов? такое абстракция.
Шаг -3: Шаг -3: Приватный - дополнительные и сложные методы, которые не включают взаимодействие с конечным пользователем, - это инкапсуляция.
P.S. - Код выше сложен и быстр.