Zusammensetzung und rekursive ocl

Zusammensetzung und rekursive ocl


Dieser Artikel zeigt ein einfaches Beispiel mit rekursiven OCL innerhalb eines zusammengesetzten Musters.

'Um Rekursion zu verstehen, müssen wir zuerst verstehen Rekursion' [Quelle unbekannt]

Sicherlich gibt es keiner professioneller Programmierer gibt, der Rekursion nicht verwendet? Ich würde wetten, dass die erste rekursive Routine, die diese Programmierer geschrieben eine Art FindAllFiles Routine war. Die Schönheit der Rekursion ist dass es so einfach ist, doch die Ergebnisse geben die Illusion, dass der Code viel komplizierter sein muss.

Ich bin www.HowToDoThings.com langsam in meiner sehr wenig Freizeit umschreiben. Bevor die Kategorisierung von Artikeln drei Ebenen tief, nicht mehr und nicht weniger war; Thema -> Kategorie -> Unterkategorie. Eine der Verbesserungen habe, die ich beschlossen haben, zur Website hinzufügen, ist die Fähigkeit, eine unbegrenzte Anzahl von Ebenen verschachteln. Dazu ich implementiert eine ziemlich grundlegende OOP zusammengesetzte Muster wie folgt

ClassDiagram

Ein 'BaseCategory' ist eine abstrakte Klasse, es ist im Leben soll lediglich einen Namen und auf eigene Unterkategorien haben. Eine 'Unterkategorie' ist in eigenen Artikeln und weitere Unterkategorien vorhanden. Ein 'MainCategory' enthält ein Bild für die Hauptseite und Unterkategorie besitzt. Meine Einstufung kann jetzt bestehen aus mindestens zwei Ebenen (MainCategory -> Unterkategorie) oder wie viele Ebenen, wie ich.

Als nächstes in das Modell-Basisklasse implementiert ich einen abgeleiteten Attribut mit dem Namen 'DisplayName: String'. Dieses Attribut wurde zunächst hinzugefügt, so dass ich eine einzige Web-Seite ConfirmDelete.aspx verwenden könnte, der Name des Objekts angezeigt, der Benutzer löschen möchte (Dies wäre in der Regel einen Artikel, aber ich kann es überhaupt für ein beliebiges Objekt wiederverwenden). Der Code für dieses Attribut ist wie folgt

publicstring DisplayNameDeriveAndSubscribe)
ISubscriber ReEvaluateSubscriber,
ISubscriber-ResubscribeSubscriber)

{

IOclService Ocl = (IOclService) dieses. AsIObject().


ServiceProvider.GetEcoService(typeof(IOclService));

Ocl (String) zurück. EvaluateAndSubscribe)
Dies. AsIObject(), 'self.asString'
ReEvaluateSubscriber, ResubscribeSubscriber). AsObject;

}

Es wird lediglich 'self.asString' gegen die aktuelle Instanz ausgewertet. Dies hat den Effekt der Auswertung des DefaultStringRepresentation OCL in das Modell eingegeben und als String zurückgegeben. BaseCategory hat seine DefaultStringRepresentation auf 'Name'.

Jetzt ist hier, wo die Rekursion hinein kommt. Da ich eine neue Unterkategorie betrat dauerte es nicht lange zu erkennen, dass 'ASP' erzählte mir nichts über, wo in der Kategorisierung Struktur ich gearbeitet habe. Wäre es nicht schön, wenn anstelle nur 'ASP' würde ich tatsächlich sehen 'Computer -> Programmierung -> Delphi 2005 -> ASP'? Also das ist, was ich getan habe, und das schöne ist, dass es keine einzige Zeile Code zu erarbeiten, den Pfad nehmen, da ich einen sehr einfache rekursive OCL Ausdruck verwendet.

Ich habe ein neues Attribut 'Path: String' auf die Unterkategorie Klasse Derived auf True festgelegt, und legen Sie dann die Ableitung OCL zur 'parentCategory.displayName'. Beachten Sie, dass die DisplayName wird nur die Standard-String-Darstellung zurück, also in diesem Fall die SubCategory.Path nur die DisplayName-Eigenschaft des übergeordneten zurückbringt. Dies ist keine Verwendung überhaupt, bis Sie die Standard-String-Darstellung auch ändern wie folgt...

parentCategory.asString + '->' + name

Der DisplayName irgendeiner Kategorie ist seiner übergeordneten Standard-String-Darstellung, ein Trennzeichen + seinen eigenen Namen. Was ist die Standard-String-Darstellung von seiner übergeordneten? Nun, wenn das übergeordnete Element ist eine MainCategory, dann der Ausdruck, den 'Namen' verwendet werden, jedoch, wenn das übergeordnete Element auch eine Unterkategorie ist dann der Ausdruck 'parentCategory.asString '->' + Name' dient ganz nach oben, bis wir den MainCategory erreichen -.

Nicht nur ist dies mir eine sehr informative Path-Attribut, sondern als eine sehr angenehme Nebenerscheinung, es gibt auch mir den vollständigen Pfad + Name im Webformular ConfirmDelete.aspx immer wenn ich versuche, eine Unterkategorie-Objekt löschen.








Zusammensetzung und rekursive ocl


Zusammensetzung und rekursive ocl : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Dieser Artikel zeigt ein einfaches Beispiel mit rekursiven OCL innerhalb eines zusammengesetzten Musters.

'Um Rekursion zu verstehen, müssen wir zuerst verstehen Rekursion' [Quelle unbekannt]

Sicherlich gibt es keiner professioneller Programmierer gibt, der Rekursion nicht verwendet? Ich würde wetten, dass die erste rekursive Routine, die diese Programmierer geschrieben eine Art FindAllFiles Routine war. Die Schönheit der Rekursion ist dass es so einfach ist, doch die Ergebnisse geben die Illusion, dass der Code viel komplizierter sein muss.

Ich bin www.HowToDoThings.com langsam in meiner sehr wenig Freizeit umschreiben. Bevor die Kategorisierung von Artikeln drei Ebenen tief, nicht mehr und nicht weniger war; Thema -> Kategorie -> Unterkategorie. Eine der Verbesserungen habe, die ich beschlossen haben, zur Website hinzufügen, ist die Fähigkeit, eine unbegrenzte Anzahl von Ebenen verschachteln. Dazu ich implementiert eine ziemlich grundlegende OOP zusammengesetzte Muster wie folgt

ClassDiagram

Ein 'BaseCategory' ist eine abstrakte Klasse, es ist im Leben soll lediglich einen Namen und auf eigene Unterkategorien haben. Eine 'Unterkategorie' ist in eigenen Artikeln und weitere Unterkategorien vorhanden. Ein 'MainCategory' enthält ein Bild für die Hauptseite und Unterkategorie besitzt. Meine Einstufung kann jetzt bestehen aus mindestens zwei Ebenen (MainCategory -> Unterkategorie) oder wie viele Ebenen, wie ich.

Als nächstes in das Modell-Basisklasse implementiert ich einen abgeleiteten Attribut mit dem Namen 'DisplayName: String'. Dieses Attribut wurde zunächst hinzugefügt, so dass ich eine einzige Web-Seite ConfirmDelete.aspx verwenden könnte, der Name des Objekts angezeigt, der Benutzer löschen möchte (Dies wäre in der Regel einen Artikel, aber ich kann es überhaupt für ein beliebiges Objekt wiederverwenden). Der Code für dieses Attribut ist wie folgt

publicstring DisplayNameDeriveAndSubscribe)
ISubscriber ReEvaluateSubscriber,
ISubscriber-ResubscribeSubscriber)

{

IOclService Ocl = (IOclService) dieses. AsIObject().


ServiceProvider.GetEcoService(typeof(IOclService));

Ocl (String) zurück. EvaluateAndSubscribe)
Dies. AsIObject(), 'self.asString'
ReEvaluateSubscriber, ResubscribeSubscriber). AsObject;

}

Es wird lediglich 'self.asString' gegen die aktuelle Instanz ausgewertet. Dies hat den Effekt der Auswertung des DefaultStringRepresentation OCL in das Modell eingegeben und als String zurückgegeben. BaseCategory hat seine DefaultStringRepresentation auf 'Name'.

Jetzt ist hier, wo die Rekursion hinein kommt. Da ich eine neue Unterkategorie betrat dauerte es nicht lange zu erkennen, dass 'ASP' erzählte mir nichts über, wo in der Kategorisierung Struktur ich gearbeitet habe. Wäre es nicht schön, wenn anstelle nur 'ASP' würde ich tatsächlich sehen 'Computer -> Programmierung -> Delphi 2005 -> ASP'? Also das ist, was ich getan habe, und das schöne ist, dass es keine einzige Zeile Code zu erarbeiten, den Pfad nehmen, da ich einen sehr einfache rekursive OCL Ausdruck verwendet.

Ich habe ein neues Attribut 'Path: String' auf die Unterkategorie Klasse Derived auf True festgelegt, und legen Sie dann die Ableitung OCL zur 'parentCategory.displayName'. Beachten Sie, dass die DisplayName wird nur die Standard-String-Darstellung zurück, also in diesem Fall die SubCategory.Path nur die DisplayName-Eigenschaft des übergeordneten zurückbringt. Dies ist keine Verwendung überhaupt, bis Sie die Standard-String-Darstellung auch ändern wie folgt...

parentCategory.asString + '->' + name

Der DisplayName irgendeiner Kategorie ist seiner übergeordneten Standard-String-Darstellung, ein Trennzeichen + seinen eigenen Namen. Was ist die Standard-String-Darstellung von seiner übergeordneten? Nun, wenn das übergeordnete Element ist eine MainCategory, dann der Ausdruck, den 'Namen' verwendet werden, jedoch, wenn das übergeordnete Element auch eine Unterkategorie ist dann der Ausdruck 'parentCategory.asString '->' + Name' dient ganz nach oben, bis wir den MainCategory erreichen -.

Nicht nur ist dies mir eine sehr informative Path-Attribut, sondern als eine sehr angenehme Nebenerscheinung, es gibt auch mir den vollständigen Pfad + Name im Webformular ConfirmDelete.aspx immer wenn ich versuche, eine Unterkategorie-Objekt löschen.

Zusammensetzung und rekursive ocl

Zusammensetzung und rekursive ocl : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Zusammensetzung und rekursive ocl
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung