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

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

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

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

Здравейте,

Съгласен съм с колегата.


Мога да допълня към въпрос 3:  

- Генерализиране се използва, когато има два или повече подобни класа с еднаквo поведение и характеристики.

Тогава има смисъл да изведем тези общи характеристики в един суперклас.

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

- Използваме делегиране (composition), когато имаме връзката/релацията "has-a".

Новият клас е съставен и използва методи от съществуващия клас.

Чрез делегирането на операции се запазва енкапсулацията между класовете.

Така всеки клас има само една конкретна задача и остава по-малък.

Намалява се coupling-а(зависимостта) между класовете.

Използването на интерфейси е важна част от делегирането.

- Използваме наследяване, когато имаме връзката "is-a".

Позволява на подкласа да наследи поведението и характеристиките от суперкласа.

Подкласът може да override-не методи или да добави нови.

При промяна на суперкласа обаче се променя работата на подкласа.

Наследяването и делегирането са взаимно-заменяеми.

Второто обаче запазва енкапсулацията.

При делегирането имаме повече гъвкавост и промените в кода обикновено са по-малки.

Към 4: 

-  Целта на конструкторите е създаване на инстанция от определен тип.

Те носят името на класа.

Ако конструкторите се наследяваха това щеше да развали концепцията на полиморфизма.

Не може референция на обект от подклас да сочи към инстанция на обект от суперклас. 

Подкласът обикновено надгражда функциите на класа родител.


Поздрави,

Георги