Разширяване на Проект - Задача от Изпит


0

Здравейте Колеги.

Може ли някой да  разясни или да помогне при задачи когато имаме да добавим функционалност към дадено API... 

как  да започнем ? Такова разширяване... Някакви насоки .... трикове ... .....


в C# OOP от slavib (176 точки)


Отговори



4

Обикновено имаш един клас, който не можеш да пипаш и управлява "командите", които получава програмата  (инпута) с няколко метода, в които има суич с вече зададени по 1-2 кейса.

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

Например за Trade and Travel от изпита от декември 2013 имаш един клас InteractionManager, който в мейн метода се използва така: 

var engine = new Engine(new InteractionManager());

            engine.Start();

Ти трябва да направиш един клас (аз съм го кръстил Extensions, но името няма значение), който наследява InteractionManager и вече в мейн метода да работиш с него:

var engine =newEngine(newExtensions());

            engine.Start();

   

Можеш да погледнеш ТУК как съм го направил:


от topalkata (6442 точки)


1
Към твоя отговор ще добавя, че в готовия Engine те са си подсказали като са направили всичко което трябва и ЩЕ ни се наложи да пипаме virtual method.

от kalin.dimchev (645 точки)