Mittwoch, 17. Januar 2007

was war da los, herr aßmann?

ha, gestern mal wieder swt (software-Technik: uml+javaprogrammierung) gehabt, thema: generics. Da man mit generics schön komplizierte sachen anstellen kann, zeigte uns der prof auch gleichmal, WAS so möglich ist:

// A functional object that adds, once invoked
interface BinOp<P>
{
P execute(P p1, P p2);
}
// an interface for a collection of binary operation on
// collections
interface Functional<Collection<P>,B extends BinOp<P>>
{
P compute(Collection<P> p);
}

class Accumulate<C,P> implements Functional<C,P>
{
P curSum;
P element;
B binaryOperation;
public P compute(Collection<P> c)
{
for (int i = 0; i < c.size(); i++)
{
element = c.getIndex(i);
curSum = binaryOperation.execute(curSum,p);
}
return curSum;
}
}

Da kam er dann doch glatt ins schwitzen ;). Er versuchte die situation noch zu retten, schrieb im code noch etwas rum, aber s wurde nur noch schlimmer (am anfang war der code glaube ich richtig ;D).
Allerdings bin ich mir auch nich ganz sicher...werden C und P nur für das implement verwendet und im body von accumulate dann die parameternamen von functional?
laut diesem code wärs so (dann wären C die collection<P> und P das B) in accumulate<C,P>
und im body wär B dann die binäre operation und P der elementtyp in der Collection...doll, warum einfach (functionpointer), wenns auch kompliziert geht ;)
aber ok, eins muss ich diesem konstrukt zugestehen...funktionpointer auf unspezialisierte templates in C++ sind am ende warscheinlich auch bloß so ähnlich machbar. bei gelegenheit gugg ich mir das mal in C++ an...

1 Kommentar:

Anonym hat gesagt…

MTVawards 2010

Liebe Freunde

Wir stimmen wieder absolut nicht überein mit der diesjährigen mtv awards Entscheidung.

Bitte besucht unsere kleine Abstimmung

http://micropoll.com/t/KEcJnZBNrh


Lady Gaga kann doch wirklich nicht besser sein als Madonna

Diese Umfrage wird unterstützt von MTVawards 2010 sponsor femmestyle
[url=http://www.femmestyle.de]brustvergrößerung plastische Chirurgie[/url]


Nächstes mal muss wieder unbedingt um einiges besser werden.