Форум за съобщения и дискусии по лекционните теми

Теми за онлайн дискусии към модул 2

Re: Теми за онлайн дискусии към модул 2

by Георги Пасков -
Number of replies: 0

Здравейте,

1. Overloading имаме, когато ни трябва метод с подобни функции, но приемащи различен брой параметри.
Overloading е също, ако параметрите са с различен тип:
int overloadedMethod(int count) {
}
int overloadedMethod(double money){
}
Възможно е също методите да връщат различен тип параметър, но само ако имат разликата в приетите параметри:
int overloadedMethod(int count) {
}
double overloadedMethod(double money){
}
Overloading-a се случва в compile-time.
Overriding може да има само при наследяване.
Приетите параметри трябва да са винаги същите.
В overridden method трябва да върнем нещо от същия тип или нещо по-специфично(пак при наследяване).
Overriding-а се случва в run-time(според типа на обекта се извиква нужния метод).

2. Абстрактни класове (наследяване) използваме, когато искаме да дадем характеристики на обект от даден тип(Какъв е обекта? - "IS A" ).
Класовете могат да имат абстрактни и не-абстрактни методи.
Само абстрактните са задължителни за имплементиране от подкласа.
Методите могат да има съдържание (body).
 
Интерфейса ни дава възможностите, които един обект може да извършва (Какво може да прави обекта? - "HAS A").
Всички методи трябва да бъдат имплементирани.
Методите са само дефиниране и не могат да имат съдържание.
 
По въпроса за използването им - най-точният отговор е "зависи".
Ако искаме да имплементиране всички методи е по-удачно да използваме интерфейси.
Ако искаме частично - абстрактни класове.

3. Според Wikipedia: 
"Шаблоните за анализ са софтуерни и идейни модели, които абстрактно представят решение на често срещани проблеми.
Основните приложение на шаблоните са да представят надеждно решение на проблема (и чрез примери) заедно с предимствата и недостатъците му."

Поздрави,
Георги