You are on page 1of 5

C#

1.Какво е C#?
C# e строго типизиран обектно-ориентиран език за програмиране от високо ниво.
Типизацията му е статична. Той е създаден от Microsoft през 2001 г., а последното
обновление за него излезе в края на 2021, тoест това е един актуален език.

2. Строго типизирани езици- Строго типизираните езици са такива, в които типовете на


данните се разглеждат много стриктно и се изисква ясно и експлицитно дефиниране на
типа на всяка променлива преди да бъде използвана. Това означава, че програмистът
трябва ясно да указва типа на данните, с който работи и също, че компилаторът следи за
съответствие между типовете по време на компилацията или изпълнението.
Примери-
Python
Erlang
C#
Java
Haskel

3. Динамични и статични езици

Динамични- В динамичните езици типовете на данните се определят по време на изпълнение, а


не по време на компилация.

Не е необходимо деклариране на типове: Променливите могат да се използват без


предварително деклариране на тип.

По-голяма гъвкавост: Поради това, динамичните езици често предоставят по-голяма гъвкавост, но
това също може да доведе до грешки по време на изпълнение, ако типовете не са както се очаква.

Примери-
JavaScript
PHP
Perl
Python

Статични- Типове на данните се проверяват по време на компилация: В статичните езици


компилаторът анализира програмата преди да се изпълни и проверява типовете на данните.

Деклариране на типове: Програмистът трябва явно да декларира типа на всяка променлива, и


този тип се използва от компилатора за проверка на типовете.

По-рано откриване на грешки: По време на компилация, ако има несъответствие между типовете
на данните, това обикновено води до грешка и програмата не може да бъде компилирана
успешно.

Примери-
C#
C
C++
Java
4. 4 Принципа на ООП
Eнкaпсулация (Encapsulation):
Дефиниция: Eнкапсулацията се отнася до идеята за скриване на детайлите на
реализацията на обект и предоставяне на публичен интерфейс за взаимодействие.
Цел: Целта е да се предотврати прекомерната зависимост от вътрешната структура на
класовете и да се предостави по-безопасен и контролиран достъп до данните и
функционалността на обектите.

Наследяване (Inheritance):
Дефиниция: Наследяването позволява на нов клас (наследник) да придобие
характеристики и функционалности на друг клас (родител). Това насочва отношенията
между класовете и позволява повторната употреба на код.
Цел: Спестява време и усилия при създаването на нови класове, като се използва вече
съществуващия код.
Полиморфизъм (Polymorphism):
Дефиниция: Полиморфизмът позволява на обекти от различни класове да се обработват
като обекти от един и същи клас. Това може да бъде постигнато чрез презаписване на
методи (методи с еднакви имена, но различна реализация) или използване на
интерфейси.
Цел: Улеснява обработката на обекти и методи, които могат да бъдат приложени към
обекти от различни класове без необходимост от промяна в съответния код.

Абстракция (Abstraction):
Дефиниция: Абстракцията позволява моделирането на сложни системи, като се фокусира
върху важните характеристики и игнорира детайлите, които не са от значение за дадения
контекст.
Цел: Помага в създаването на обобщения и интерфейси, които предоставят ясна и лесно
разбираема представа за вътрешността на системата.

5. Какво е компилатор?
Компилаторът е програмен инструмент, който преобразува програмен код от един език (най-често
високоуровнев език) в еквивалентен му код на друг език (най-често машинен код), който може да
бъде изпълнен от компютър. Процесът на компилация включва няколко стъпки: Анализ на кода,
Създаване на междинен код, Генериране на целеви код, Свързване.

6. Какво е ООП?
ООП означава Обектно-Ориентирано Програмиране и представлява начин за
програмиране, базиран на концепцията за "обекти". Този подход се фокусира върху
структурирането на програмите около обекти, които представляват конкретни екземпляри
на класове.
7. Какво е референция, референтни типове?
Референция се използва за обозначаване на променлива или стойност, която съдържа
адрес (или линк) към обект в паметта, вместо самите данни на обекта. Референтните
типове се отнасят към типове данни, чиято променлива съдържа референция, а не
директно данните.
Ето няколко ключови аспекта относно референциите и референтните типове:
Референтни Типове:
В много програмни езици, типовете данни се делят на два основни вида: референтни и
стойностни.
Референтни типове са такива, чиято променлива съдържа референция към данните, а не
самите данни.
Примери за референтни типове включват обекти, низове (strings), масиви, списъци и
други сложни структури данни.
Променливи и Референции:
При използването на референтни типове, променливата сама съдържа референция, която
сочи към обекта в паметта.
Променливата не съдържа директно данните на обекта, а по-скоро адрес, на който тези
данни се намират.

8. Stack и Heap
"Stack" и "Heap" са две области в паметта на компютъра, които се използват по различен начин
при изпълнението на програмите.

Stack:

Какво е стекът? Стекът е област в паметта, която се използва за управление на програмните


извиквания и локални променливи.

Какво съдържа стекът? В стека се съхраняват информация за извиканите функции (включително


адресите на връщане и стойности на регистри) и локални променливи на текущо изпълняващата
се функция.

Характеристики:

Данните в стека се добавят и премахват във формат на Last-In-First-Out (LIFO), като стекът расте и
се свива по време на изпълнение.

Използва се за управление на програмни извиквания и за съхранение на локални променливи с


кратък живот.

Heap:

Какво е Heap? Heap е област в паметта, където се заделят динамично данни по време на
изпълнение на програмата.

Какво съдържа Heаp? В купчината се съхраняват данни, които могат да бъдат заделяни и
освобождавани по желание на програмата. Тук се съхраняват обекти с по-дълъг живот, като
например обекти, заделени с оператора new в много езици.

Характеристики:
Заделянето и освобождаването на памет в купчината не следва строго LIFO принципа и се нарича
"динамично управление на паметта".

Служи за съхранение на данни с по-продължителен живот, като например обекти, които трябва да
останат в паметта след приключване на функцията, в която са създадени.

9. Garbage collection

Garbage collection (събиране на боклука) е процесът на автоматично откриване и освобождаване


на паметта, която не се използва повече от програмата. По-конкретно, това включва
идентификацията на "отпадъчни" обекти или данни, които не могат да бъдат достъпени от
програмата, след което освобождаването на тази памет.

You might also like