Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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
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.
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.
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.
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) = ...."
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)
}