Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 10

Капсулиране.

Модификатори
Капсулация
Капсулация означава скриване на детайлите от
реализацията на обекта.
Използва се за означаване на две неща:
- обединяване на данните, оформени като
атрибути, и функциите за тяхната обработка,
оформени като методи, в клас;
- скриване на някои от атрибутите и методите
на класа от външен достъп.

2
3
Модификатори и нива на достъп (видимост)
С модификаторите се ограничава или позволява достъпа (видимостта)
до елементите на класа, пред които те са поставени.
В C# има четири основни модификатора за достъп. Те
са public, private, protected и internal и комбинации на последните два.

✗ public – елементът, пред който е поставен, може да бъде достъпен от


всеки друг клас, независимо дали е от текущия проект, от текущото пространство
от имена или извън тях. Всичко, което е дефинирано като public може да
бъде достъпвано от всякъде.
✗ private - елементът, за който се отнася, не може да бъде достъпван от никой
друг клас (освен от класа, в който е дефиниран), дори този клас да се намира в
същото пространство от имена. Всичко, което е дефинирано като private не
може
да се види извън неговия клас.
Това ниво на достъп се използва по подразбиране, т.е. се при­л а­г а, когато
липсва модификатор за достъп пред съответния елемент на класа .
Модификатори и нива на достъп (видимост)
✗ protected – Достъп до членовете на класа имат само методите
на същия клас и класовете, които го наследяват.

Асембли /assembly/ - това е резултатът от компилирането на


проекта.
При всяка компилация на .NET приложение се създава асембли.
То се съхранява като файл с разширение .exe или .dll.

internal – използва, за да се ограничи достъпът до членовете


на класа само от методи/функции от същото асембли, т.е.
същия проект във Visual Studio.
Private Модификатор за достъп
 Основен начин за капсулиране на обект и скриване на данни
от външния свят
private string name;
Person (string name)
{
this.name = name;
}
 private членовете са достъпни само в декларацията на класа

6
Protected Модификатор за достъп
Автоматично се създава
 Спира достъпа на външни класове поле за съхраняване на
class Person информацията
{
protected string FullName { get; set; }
}

 protected елементите са достъпни само от подкласовете


 Не може да бъде използван за класове и интерфейси

7
Internal модификатор за достъп
 Това е модификатора по подразбиране за класове в C#
class Person класът ще бъде internal
{
string Name { get; set; } полето обаче ще е private
internal int Age { get; set; }
}

 internal дава достъп на всеки друг клас в същия проект


Person p = new Person();
p.Name = "Ivan";
8
Public модификатор за достъп
 Ако искаме да достъпим public клас в друг namespace
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
 public елемент, деклариран в public клас може да бъде
достъпен от всеки друг клас
 Методът main() в приложението трябва да е public
9
Обобщение – капсулация и валидация
 Капсулацията скрива програмната реализация
 Структурните промени остават локални
 С this си осигуряваме достъп до инстанциите
 Модификаторите определят степента на капсулация:
 Private - за полета и методи, вътрешни за класа
 Protected – за наследниците (подкласовете)
 Internal – за класовете от същия проект (namespace)
 Public – за класове и интерфейси в целия .Net свят
 Валидацията ни гарантира, че обектът съдържа валидни данни 10

You might also like