Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Інкапсуляція | Принципи ООП
C# Понад Базовий Рівень

bookІнкапсуляція

Інкапсуляція — це, по суті, спосіб організації даних. Вона полягає в організації даних і методів у вигляді класів, тому вся програма фактично базується на класах, а дані та методи інкапсулюються всередині цих класів. Така інкапсуляція забезпечує контроль доступу до внутрішнього стану об'єкта, сприяє модульності, підтримуваності та безпеці програмного забезпечення.

В інкапсуляції використовуються модифікатори доступу такі як public, private та protected, щоб приховати більшість полів і методів класу та відкривати лише ті, які необхідно використовувати ззовні.

Оскільки більшість даних безпосередньо недоступні поза межами класу, для доступу або зміни даних використовуються гетери та сетери.

Хорошим прикладом є клас Customer, який визначає клієнта банку:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132
public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }

У наведеному вище прикладі жодне поле не є безпосередньо доступним або змінюваним ззовні. Замість цього використовуються методи, такі як Deposit і Withdraw, для зміни значення за потреби. Аналогічно, для отримання значення балансу використовується метод getBalance.

Використання ключового слова public зазвичай не рекомендується, якщо це не є необхідним.

Note
Примітка

Нагадаємо, якщо потрібно зробити поле недоступним ззовні класу, але доступним для похідних класів, можна використати модифікатор доступу protected.

1. Яку роль відіграють модифікатори доступу в інкапсуляції у C#?

2. Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?

question mark

Яку роль відіграють модифікатори доступу в інкапсуляції у C#?

Select the correct answer

question mark

Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you provide an example of encapsulation in code?

Why is using public fields discouraged in encapsulation?

How do getters and setters improve security?

Awesome!

Completion rate improved to 2.04

bookІнкапсуляція

Свайпніть щоб показати меню

Інкапсуляція — це, по суті, спосіб організації даних. Вона полягає в організації даних і методів у вигляді класів, тому вся програма фактично базується на класах, а дані та методи інкапсулюються всередині цих класів. Така інкапсуляція забезпечує контроль доступу до внутрішнього стану об'єкта, сприяє модульності, підтримуваності та безпеці програмного забезпечення.

В інкапсуляції використовуються модифікатори доступу такі як public, private та protected, щоб приховати більшість полів і методів класу та відкривати лише ті, які необхідно використовувати ззовні.

Оскільки більшість даних безпосередньо недоступні поза межами класу, для доступу або зміни даних використовуються гетери та сетери.

Хорошим прикладом є клас Customer, який визначає клієнта банку:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132
public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }

У наведеному вище прикладі жодне поле не є безпосередньо доступним або змінюваним ззовні. Замість цього використовуються методи, такі як Deposit і Withdraw, для зміни значення за потреби. Аналогічно, для отримання значення балансу використовується метод getBalance.

Використання ключового слова public зазвичай не рекомендується, якщо це не є необхідним.

Note
Примітка

Нагадаємо, якщо потрібно зробити поле недоступним ззовні класу, але доступним для похідних класів, можна використати модифікатор доступу protected.

1. Яку роль відіграють модифікатори доступу в інкапсуляції у C#?

2. Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?

question mark

Яку роль відіграють модифікатори доступу в інкапсуляції у C#?

Select the correct answer

question mark

Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 6
some-alt