Софтуерно Инженерство
Loading...
+ Нов въпрос
malkstor avatar malkstor 348 Точки

[Homework] [OOP June 2015] Delegates and Events

Здравейте :)

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

Аз измислих доста дървен начин как това да стане, като първо добавям единия метод в делегата, извикам делегата със съответните параметри, след което добавям втория метод в делегата и отново извиквам делегата с втория комплект параметри, като този път той ми връща резултата от втория метод.

Не мисля, обаче, че това е идеята, и се чудя има ли начин да се вземе резултата от различен от последния метод за даден делегат?

Тагове:
1
C# OOP Basics
a_rusenov avatar a_rusenov 1103 Точки

Защо делегатът да пази 2 метода? Трябва да пази един единствен метод, който изчислява лихва - този метод трябва да го подадеш в конструктора на InterestCalculator и той вътрешно да го ползва за изчислението на лихвата.

Func<...> calcInterestDelegate = ...;

var interestCalculator = new InterestCalculator(500, 0.056, 10, calcInterestDelegate);

// Get interest using the passed delegate
double interest = interesetCalculator.Interest;

 

0
16/06/2015 16:56:43
malkstor avatar malkstor 348 Точки

Е нали са 2 различни метода за изчисляване на проста и сложна лихва и идеята на делегатите е да пазят указатели към методи?

0
a_rusenov avatar a_rusenov 1103 Точки

Точно така и в единия случай делегатът ще пази метода за проста лихва, а в другия - за сложна. Няма логика да пази и 2та едновременно, защото като го извикаш резултат ще получиш само от втория метод. 

С други думи юзърът си преценява какъв метод за изчисляване на лихва да подаде на InterestCalculator.

4
malkstor avatar malkstor 348 Точки

Тръгна, но още не мога да разбера защо работи и правилно ли е такаindecision

0
pataroka avatar pataroka 319 Точки

Ей го мойто домашно 07.OOP-Delegates-and-Events-Homework

А като все пак се заговорихме и за асинхронно програмиране, си мисля, че хич не би било зле да има отделен курс или поне малко по обстойна лекция за тая работа, а не само беглото споменаване в AdvancedC#  с линк към семинара(чийто запис е с покъртително лошо качество), което изглежда малко като "ами и това го има оправяйте се"...

2
17/06/2015 16:59:15
a_rusenov avatar a_rusenov 1103 Точки

За кое видео говориш? Защото скрийнкастът от семинара на Георги Георгиев е със супер качество -> линк

Иначе моето видео от лекцията за асинхронно се счупи, за което се извинявам, но материалът общо взето се припокрива с този от семинара.

2
pataroka avatar pataroka 319 Точки

Точно за видеото от семинара говоря... С картинката няма проблем, ама звукът е доста под изискванията ми за качество. Професионално изкривяване, сори...

1
bojidar.tonchev avatar bojidar.tonchev 2 Точки

Може ли малко помощ за моята 3-та задача: линк. Всичко ми изглежда правилно, но при изпълнение нищо не се случва. Благодаря

0
pataroka avatar pataroka 319 Точки

Да, правилно е и да нищо не се случва при изпълнение, щот ти не казваш на програмата ти да случва нищо. Мейн методът ти приключва веднага след стартирането на таймера. Какво искаш да се случи... Пусни един цикъл да печата нещо друго на конзолата и ще видиш разликата...

1
18/06/2015 16:43:56
bojidar.tonchev avatar bojidar.tonchev 2 Точки

Ясно, сега разбрах. Вместо цикъл сложих Console.ReadLine(); , който чака инпут и заработи перфектно. Благодаря ти :)

0
onefen avatar onefen 27 Точки

Къде се връща резултата от делегатите. Пробвам да направя втора задача с делегат, а не с Func, но не мога да получа резултата от делегата - т,е от метода който съм извикал.

Това ми е класа InterestCalculator

http://pastebin.com/ipX5nNGL

А това ми е основната програма:

http://pastebin.com/4fz7zc5u

Като резултат получавам следното:

Result: Calculator.CalculatorIntersts

а очаквам да получа резултата от съответния метод. Някой може ли да каже къде бъркам?

0
18/06/2015 20:19:57