Abstract Classes and Interfaces Flashcards

1
Q

What is abstraction?

A
  • ООП принцип
  • скрива имплементационните детайли
  • показва само същинската част на потребителя
  • позволява на потребителя да използва функционалност, с чиято имплементация не е запознат в детайли
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

How to achieve abstraction?

A
  • чрез абстрактни класове и интерфейси, които дефинират общо поведение
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is an abstract class?

A
  • означават абстракция
  • съдържат един или повече методи, които не са имплементирани (нямат тяло)
  • дефинира общо поведение за наследниците
  • не може да бъде инстанциран
  • позволява полиморфизъм
  • ключова дума “abstract”
  • трябва задължително да бъдат extend-нати
  • не може да има абстрактен метод в неабстрактен клас
  • абстрактните класове могат да имат както абстрактни методи, така и неабстрактни
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Can you create an instance of an abstract class?

A

Не, не може да се създаде инстанция от абстрактен клас.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is an interface?

A
  • специален тип клас
  • pure contract
  • дефинира общо поведение
  • няма полета (състояние)
  • постигаме 100% абстракция
  • позволява полиморфизъм
  • не може да бъде инстанциран
  • ключова дума “interface”
  • позволява множествено наследяване
  • един интерфейс може да наследи други интерфейси
  • постигаме loose coupling
  • науменуват се с прилагателно с наставка “able”
  • най-често са публични
  • методите са public abstract по подразбиране
  • импортват се като класове
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the practical meaning of strong cohesion?

A
  • мощен инструмент за справяне със сложността на кода
  • показва колко силно са свързани елементите от даден модул (клас/функции/пакет и тн.)
  • кохезията трябва да бъде силна
  • класовете трябва да съдържат тясно свързани функционалности и да се стремят към една единствена цел
  • ако кохезията е ниска, нашият клас трябва да бъде раздробен/разделен
  • добре дефинираната абстракция води до силна кохезия
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is the practical meaning of loose coupling?

A
  • показва доколко нашите модули и класове зависят един от друг
  • постига се с интерфейси
  • coupling-а трябва да бъде разхлабен - когато правим промяна в един клас, това не трябва да води до промени в другите класове
  • един модул трябва да бъде използван от други модули
  • модулите трябва да имат гъвкави отношения един с друг
How well did you know this?
1
Not at all
2
3
4
5
Perfectly