Scala und Aspekte

hemeroc

Bekanntes Mitglied
Hi,
ich hab gerade angefangen mir Scala ein wenig anzusehen und bin auf verschiedene Aussagen über AOP und Scala gestoßen. Unter anderem das Traits gleichwertig zu Aspekten sind.
Allerdings habe ich nirgends wirklich brauchbare Codebeispiele gefunden.
Ist es möglich über Traits zum Beispiel vor jeder Funktion ein logging zu machen wie es über Aspekte möglich ist?
LG
Hemeroc
 
Zuletzt bearbeitet von einem Moderator:

Siassei

Bekanntes Mitglied
Ist es möglich über Traits zum Beispiel vor jeder Funktion ein logging zu machen wie es über Aspekte möglich ist?
Ja und nein :D

Im ernst. Scala zeichnet sich dadurch aus, dass es die Objekt-Orientierte-Welt und das Funktionale-Programmieren in einem vereint. Damit lässt sich sehr vieles anstellen und eröffnet neue Wege.

Schildere doch bitte einmal, welcher Grund/Anwendungsfall dich zu dieser Frage getrieben hat.
Ansonsten sehe ich deine Fragestellung als stümper haft an und ordne sie unter Trollversuch ein.

Gruß,
Thomas
 

hemeroc

Bekanntes Mitglied
Siassei hat gesagt.:
Im ernst. Scala zeichnet sich dadurch aus, dass es die Objekt-Orientierte-Welt und das Funktionale-Programmieren in einem vereint. Damit lässt sich sehr vieles anstellen und eröffnet neue Wege.
Ich weiß schon wodurch sich Scala auszeichnet, deshalb will ich es ja nutzen ich möchte wie gesagt nur wissen ob man damit auch Aspektorientiert arbeiten kann.
Siassei hat gesagt.:
Ansonsten sehe ich deine Fragestellung als stümper haft an und ordne sie unter Trollversuch ein.
Ich sehe zwar hier keinen Trollversuch (ich denke Marco13 wird mir da zustimmen) aber du kannst mich gerne aufklären und wenn du meine anderen Posts ein wenig verfolgt hast dann wüsstest du schon das ich nicht trolle aber ok,...
Siassei hat gesagt.:
Schildere doch bitte einmal, welcher Grund/Anwendungsfall dich zu dieser Frage getrieben hat.
Ein Beispiel für einen konkreten Anwendungsfall wäre:
Ich möchte eine Library mit Tracing versehen das geht indem ich entweder die komplette Lib unter Anwendung eines LoggingFrameworks teilweise neu schreibe oder besagten Klassen mit einem Tracing Aspect ausstatte.
Der Vorteil des Aspekts liegt klar auf der Hand, nichts neu schreiben und genauso leicht hinzuzufügen wie zu entfernen, mal ganz abgesehen von der verminderten Code redundanz.

So in etwa würde das mit AspectJ aussehen:
Java:
//Quelle: de.wikipedia.org/wiki/Aspektorientierte_Programmierung#Einf.C3.BChrendes_Beispiel

public aspect Tracing {
    pointcut traceCall():
        call(* AOPDemo.*(..));
 
    before(): traceCall() {
        System.out.println("Betrete \"" + thisJoinPoint + "\"");
    }
 
    after(): traceCall() {
        System.out.println("Verlasse \"" + thisJoinPoint + "\"");
    }

}

Und bevor du fragst warum ich nicht AspectJ verwende, ganz einfach ich will mit Scala arbeiten ich will im Prinzip früher oder später komplett auf Scala umsteigen da mir gerade das funktionale in Java fehlt. Allerdings mag ich die Vorzüge des Aspektorientierten Programmierens deshalb die Frage ob sich so etwas mit Scala realisieren lässt.

LG hemeroc
 
Zuletzt bearbeitet:

Siassei

Bekanntes Mitglied
Ich sehe zwar hier keinen Trollversuch (ich denke Marco13 wird mir da zustimmen) aber du kannst mich gerne aufklären und wenn du meine anderen Posts ein wenig verfolgt hast dann wüsstest du schon das ich nicht trolle aber ok,...
Entschuldige, leider lese ich öfters so allgemeine Fragestellungen zu Themen, die mit viel Emotionen diskutiert werden.

Mit Traits bzw. Mixin lassen sich Aufgabenstellungen, die aus Aspekte stammen, eleganter zu schreiben als das in Java (Sprache) der Fall ist. Der Aufwand ist dennoch größer, als die Verwenung von JAspect. Hier findest du einen, meiner Meinung nach, guten Vergleich zwischen Scala und Aspects.
Traits vs. Aspects in Scala
Da Scala eine Sprache für Java (Framework / JVM) ist, kannst du auch in Scala mit JAspects arbeiten. Du musst lediglich auf ein paar Namensgebungen achten. z.B. bei "def +(i:Int) = ...."

Was kann man mit Traits noch so anstellen?
A Tour of Scala: Mixin Class Composition | The Scala Programming Language
A Tour of Scala | The Scala Programming Language

Anmerkung: Traits sollten nur Methoden enthalten, die noch nicht existieren!
Ungetestet.
Java:
trait Geschlecht { def name:String = "Frei" }
trait Mann extends Geschlect { override def name = "Mann" }
trait Frau extends Geschlecht { override def name = "Frau" }

class Mensch extends Frau { }
class Tier extends Mensch with Mann { }

def abc() = {
  val a = new Mensch
  Console.println(a.name)
  val b = new Mensch with Mann
  Console.println(b.name)
  val c = new Tier with Mann
  Console.println(c.name)
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Unterschied funktionial <-> OO anhand von Scala <-> Java JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
M Experten für Scala-Play- Programmierung gesucht!! JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
M Scala-Programm mit Netbeans compilieren JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
M Suche Scala Entwickler (Umsteiger [JAVA]) für Zusammenarbeit an privatem Projekt JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
R Frage zu Scala Code JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Landei Scala Scala 2.10 RC JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
schlingel Scala Schulung - Gratis vom Scala-Schöpfer JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Landei Scala Scala-Kritik JVM Sprachen: Kotlin, Scala, Groovy, Jython... 151
Spin Scala Eclipse IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
Spin Funktionen vs Methods in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 9
Landei Scala Freies eBook "Scala for the impatient" JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Spin Arithmetik in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 32
0x7F800000 Numerik in Scala (Performance) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 14
Spin Scala MenuListener JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
Spin Scala in Eclipse will nicht. JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
Landei Scala Deutsches Scala-Tutorial JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
B Scala oder Clojure JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
Landei Scala "Programming in Scala" - erste Ausgabe kostenlos JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
W Scala *.Scala to *.jar JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
S Scala Klasse.class in Scala? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
B Scala Scala und Netbeans GUI Editor JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
S Scala: Parser und Lexical JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
D Wie manche ich das in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 12
S Scala: Static - Konstruktor?? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
G Scala IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 18
A Scala und J2ME JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
S Scala Fragen zu Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 21
D (Mathe-) Vektoren in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
Landei Scala im Kommen :-) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4

Ähnliche Java Themen

Neue Themen


Oben