[linux-l] Java Code erklaehrt

Oliver Bandel oliver at first.in-berlin.de
Do Sep 22 19:30:37 CEST 2005


On Thu, Sep 22, 2005 at 05:36:36PM +0200, Ivan Villanueva wrote:
> On Thu, Sep 22, 2005 at 12:43:02AM +0200, Oliver Bandel wrote:
> > > interface Func { int operation(int i1, int i2) ; }
> > > class Sum implements Func { int operation(int i1, int i2) { return i1 + i2 ; }
> > > class Pro implements Func { int operation(int i1, int i2) { return i1 * i2 ; }
> > 
> > Und wie benutzt man das nun?
> 
> Func aFunction = new Sum() ;
> aFuntion.operation(1,2) ;
> 
> aFunction = new Pro() ;     // result is 3
> aFunction.operation(1,2) ;  // result is 2
> 
> Eine "Func" kann jetzt als Parameter von einer Funktion benutzt werden, oder
> auch als Wiedergabe. Ein Sum is ein Func, ein Pro ist auch ein Func.

Das ist doch aber keine funktionale Programmierung.
Das ist objektorientierte Programmierung.

Man sendet an Objekte mit bestimmter Funktionalität (summieren bzw. multiplizieren)
die Message "operation".




>  
>  
>  
> > > Object example(Func f, int a, int b) {
> > >     if ((f instanceof Sum) && (a ==b)) return new Pro() ;
> > >     return f.operation(a,b) ;
> > > }
[...] 
> > Wieso ein Produkt dann zurückgeben?
> > Verstehe den Code nicht.
> Wie gesagt, es ist bloed. Ich wollte nur klahr stellen, dass alles geht.

Ach so.
Argh.
Ich Dussel hätte das aber erkennen müssen.
Naja, wieder zu lange Nachtschichten am Rechner verbracht. ;-)


[...]
> > > Genau. Es gibt Einschränkungen die C++ nicht hat, aber dafür ist einfacher und,
> > > was mir sehr wichtig ist, es ist schnell, Programme von anderen zu verstehen.
> > 
> > Spricht eher für Haskell oder OCaml, oder? ;-)
> 
> Ja, wenn es nicht aus 20000 Zeilen besteht.


Naja, so viel Code ist immer schwierig...
...ausser, es wäre Assembler. ;-)


[...]
> [code Beispiel]
> > Keine Objekte sind notwendig, um die Set-Funktionalität
> > zu bieten und zu kapseln.
> 
> Ich habe mich aber daran gewoehnt, in Objekten zu denken. Das macht das


Wie würde man denn so einen Balanced Tree für ein int- oder ein String-Objekt
in Java nutzen?
Gibt es da Libs dafür? Wie sieht das mit verschiedenen Typen aus
(int/string, komplexeres Zeugs)?


Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l