Composition et récursive ocl
Cet article montre un exemple simple d'utilisation de recusive OCL au sein d'un composite modèle.
'Pour comprendre la récursivité, nous devons d'abord comprendre la récursivité' [Source inconnue]
Sûrement, il n'y a pas un programmeur professionnel qui n'a pas utilisé la récursivité? Je serais prêt à parier que la première routine récursive que la plupart des programmeurs écrit était une sorte de FindAllFiles routine. La beauté de la récursivité est que c'est tellement simple, mais les résultats en donner l'illusion que le code doit être bien plus compliqué.
je suis lentement à la réécriture www.HowToDoThings.com dans mon peu de temps libre. Avant de la catégorisation des articles est à trois niveaux de profondeur, pas plus et pas moins Sujet->Catégorie>sous-catégorie. L'une des améliorations que j'ai décidé de l'ajouter sur le site, c'est la capacité à intégrer un nombre illimité de niveaux. Pour ce faire, j'ai mis en place une jolie base de la programmation orientée objet composite modèle comme
'BaseCategory' est une classe abstraite, c'est le seul but dans la vie est d'avoir un nom et propres sous-catégories. Une 'sous-catégorie' existe pour propres articles et d'autres sous-catégories. Un 'MainCategory' détient une image pour la page principale, et qui possède des sous-catégories. Mon catégorisation peut maintenant être composé d'un minimum de deux niveaux (MainCategory->sous-catégorie), ou autant de niveaux que j'aime.
Ensuite, dans le modèle de la classe de base j'ai mis en place un attribut dérivé appelé 'DisplayName: String'. Cet attribut a d'abord été ajoutée pour que je puisse utiliser une seule page web ConfirmDelete.aspx pour afficher le nom de l'objet que l'utilisateur veut supprimer (ce serait typiquement un article, mais je peux le réutiliser pour tout objet). Le code pour cet attribut est comme suit
public string DisplayNameDeriveAndSubscribe( ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber) |
{
IOclService ocl = (IOclService).AsIObject().
fournisseur de services.GetEcoService(typeof(IOclService))
return (string) ocl.EvaluateAndSubscribe(
cette.AsIObject(), 'l'auto.asString',
reEvaluateSubscriber, resubscribeSubscriber).AsObject
}
C'est simplement la valeur 'auto.asString' contre l'instance en cours. Cela a pour effet de l'évaluation de la DefaultStringRepresentation OCL expression est entrée dans le modèle et de le retourner comme une chaîne de caractères. BaseCategory a son DefaultStringRepresentation réglé sur 'nom'.
Maintenant c'est ici que la récursivité entre en elle. Comme j'entrais dans une nouvelle sous-catégorie, il n'a pas fallu longtemps pour réaliser que 'ASP.NET' ne m'a rien dit sur où dans la catégorisation de la structure de mon travail. Ne serait-il pas agréable si, au lieu de juste de voir 'ASP.NET' en fait, je peux voir la section 'Ordinateurs->Programmation->Delphi 2005->ASP.NET'? Donc, c'est ce que j'ai fait, et la beauté, c'est qu'il n'a pas pris une seule ligne de code de la route, parce que j'ai utilisé un très récursive simple expression OCL.
j'ai ajouté un nouveau 'Chemin: String' attribut de la sous-catégorie de la classe, de définir la Dérivée de Vrai, et puis définissez la Dérivation OCL 'parentCategory.displayName'. Rappelez-vous que DisplayName retournera la Chaîne par Défaut de Représentation, donc dans ce cas la sous-catégorie.Chemin d'accès est tout simplement rentrer le nom d'Affichage de son parent. Ce n'est pas un quelconque usage, jusqu'à ce que vous modifiez la valeur par Défaut de la Chaîne de la Représentation trop, comme si...
parentCategory.asString '->' nom |
Le nom d'Affichage d'une catégorie est celle de son parent & nbsp Chaîne par Défaut de Représentation & nbsp séparateur son propre nom. Qu'est-ce que son parent par Défaut de Représentation de Chaîne? Eh bien, si le parent est un MainCategory alors l'expression 'nom' est utilisé, cependant, si le parent est également une sous-catégorie, alors l'expression 'parentCategory.asString '->' nom de' & - nbsp tout le chemin jusqu'à jusqu'à ce que nous atteignons le MainCategory.
ceci n'a Pas seulement me donner une très instructif attribut de Chemin d'accès, mais très agréable par produit, il me donne aussi le nom de chemin complet dans la ConfirmDelete.aspx formulaire web à chaque fois que j'essaie de supprimer une sous-catégorie de l'objet.
& nbsp
Composition et recursive ocl
Composition et recursive ocl : Plusieurs milliers de conseils pour vous faciliter la vie.
Cet article montre un exemple simple d'utilisation de recusive OCL au sein d'un composite modele.
'Pour comprendre la recursivite, nous devons d'abord comprendre la recursivite' [Source inconnue]
Sûrement, il n'y a pas un programmeur professionnel qui n'a pas utilise la recursivite? Je serais pret a parier que la premiere routine recursive que la plupart des programmeurs ecrit etait une sorte de FindAllFiles routine. La beaute de la recursivite est que c'est tellement simple, mais les resultats en donner l'illusion que le code doit etre bien plus complique.
je suis lentement a la reecriture www.HowToDoThings.com dans mon peu de temps libre. Avant de la categorisation des articles est a trois niveaux de profondeur, pas plus et pas moins Sujet->Categorie>sous-categorie. L'une des ameliorations que j'ai decide de l'ajouter sur le site, c'est la capacite a integrer un nombre illimite de niveaux. Pour ce faire, j'ai mis en place une jolie base de la programmation orientee objet composite modele comme
'BaseCategory' est une classe abstraite, c'est le seul but dans la vie est d'avoir un nom et propres sous-categories. Une 'sous-categorie' existe pour propres articles et d'autres sous-categories. Un 'MainCategory' detient une image pour la page principale, et qui possede des sous-categories. Mon categorisation peut maintenant etre compose d'un minimum de deux niveaux (MainCategory->sous-categorie), ou autant de niveaux que j'aime.
Ensuite, dans le modele de la classe de base j'ai mis en place un attribut derive appele 'DisplayName: String'. Cet attribut a d'abord ete ajoutee pour que je puisse utiliser une seule page web ConfirmDelete.aspx pour afficher le nom de l'objet que l'utilisateur veut supprimer (ce serait typiquement un article, mais je peux le reutiliser pour tout objet). Le code pour cet attribut est comme suit
public string DisplayNameDeriveAndSubscribe( ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber) |
{
IOclService ocl = (IOclService).AsIObject().
fournisseur de services.GetEcoService(typeof(IOclService))
return (string) ocl.EvaluateAndSubscribe(
cette.AsIObject(), 'l'auto.asString',
reEvaluateSubscriber, resubscribeSubscriber).AsObject
}
C'est simplement la valeur 'auto.asString' contre l'instance en cours. Cela a pour effet de l'evaluation de la DefaultStringRepresentation OCL expression est entree dans le modele et de le retourner comme une chaîne de caracteres. BaseCategory a son DefaultStringRepresentation regle sur 'nom'.
Maintenant c'est ici que la recursivite entre en elle. Comme j'entrais dans une nouvelle sous-categorie, il n'a pas fallu longtemps pour realiser que 'ASP.NET' ne m'a rien dit sur ou dans la categorisation de la structure de mon travail. Ne serait-il pas agreable si, au lieu de juste de voir 'ASP.NET' en fait, je peux voir la section 'Ordinateurs->Programmation->Delphi 2005->ASP.NET'? Donc, c'est ce que j'ai fait, et la beaute, c'est qu'il n'a pas pris une seule ligne de code de la route, parce que j'ai utilise un tres recursive simple expression OCL.
j'ai ajoute un nouveau 'Chemin: String' attribut de la sous-categorie de la classe, de definir la Derivee de Vrai, et puis definissez la Derivation OCL 'parentCategory.displayName'. Rappelez-vous que DisplayName retournera la Chaîne par Defaut de Representation, donc dans ce cas la sous-categorie.Chemin d'acces est tout simplement rentrer le nom d'Affichage de son parent. Ce n'est pas un quelconque usage, jusqu'a ce que vous modifiez la valeur par Defaut de la Chaîne de la Representation trop, comme si...
parentCategory.asString '->' nom |
Le nom d'Affichage d'une categorie est celle de son parent & nbsp Chaîne par Defaut de Representation & nbsp separateur son propre nom. Qu'est-ce que son parent par Defaut de Representation de Chaîne? Eh bien, si le parent est un MainCategory alors l'expression 'nom' est utilise, cependant, si le parent est egalement une sous-categorie, alors l'expression 'parentCategory.asString '->' nom de' & - nbsp tout le chemin jusqu'a jusqu'a ce que nous atteignons le MainCategory.
ceci n'a Pas seulement me donner une tres instructif attribut de Chemin d'acces, mais tres agreable par produit, il me donne aussi le nom de chemin complet dans la ConfirmDelete.aspx formulaire web a chaque fois que j'essaie de supprimer une sous-categorie de l'objet.
& nbsp
Composition et récursive ocl
By commentfaire
Composition et récursive ocl : Plusieurs milliers de conseils pour vous faciliter la vie.