Méthodes C# 2.0

PowerAMC modélise les méthodes C# sous la forme d'opérations.

Pour plus d'informations sur la création et l'utilisation des opérations, voir Opérations (MOO).

Propriétés d'une méthode

Les feuilles de propriétés de méthode contiennent tous les onglets d'une feuille de propriétés d'opération standard, avec en plus un onglet C#, dont les propriétés sont répertoriées ci-dessous :

Propriété

Description

Unité de compilation

Spécifie l'unité de compilation dans laquelle la méthode sera stockée. Disponible uniquement si le type parent est un type partiel (alloué à plusieurs unités de compilation).

Extern

Spécifie le modificateur extern pour la déclaration de la méthode.

New

Spécifie le modificateur new pour la déclaration de la méthode. Lorsqu'une classe hérite d'une autre classe et contient des méthode avec une signature identique comme classe parent, ce champ est sélectionné automatiquement afin de faire en sorte que la méthode enfant prime sur la méthode parent.

Override

Spécifie le modificateur override pour la déclaration de la méthode.

Unsafe

Spécifie le modificateur unsafe pour la déclaration de la méthode.

Virtual

Spécifie le modificateur virtual pour la déclaration de la méthode.

Scope

Spécifie la portée de la méthode.

Initialisateur de base

Crée un initialisateur de constructeur d'instance de la forme de base. Il peut faire en sorte qu'un constructeur d'instance de la classe de base soit appelé.

Dans l'exemple suivant, la classe B hérite de la classe A. Vous définissez un initialisateur de base dans le constructeur de la classe B, qui sera utilisé pour initialiser le constructeur de la classe A :



internal class B : A
 {
  public B(int x, int y) : base(x + y, x - y)
  {}
 }

Initialisateur This

Crée un initialisateur de constructeur d'instance, faisant en sorte qu'un constructeur de la classe elle-même soit appelé.

Constructeurs et destructeurs

Vous modélisez des constructeurs et des destructeurs C# en cliquant sur le bouton Ajouter Constructeur/Destructeur par défaut sur l'onglet Opérations d'une feuille de propriétés de classe. Vous créez ainsi automatiquement un constructeur ayant le stéréotype Constructor, ainsi qu'un destructeur ayant le stéréotype Destructor. Le constructeur et le destructeur sont grisés dans la liste, ce qui signifie que vous ne pouvez pas modifier leur définition.

Réalisation de méthode

Les méthodes de classe sont réalisées par les opérations d'interface correspondantes. Pour définir la réalisation des méthodes d'une classe, vous devez utiliser le bouton A réaliser sur l'onglet Opérations d'une feuille de propriétés de classe, puis cliquer sur le bouton Réaliser pour chaque méthode à réaliser. La méthode est affichée avec le stéréotype <<Implement>>.

Méthode d'opérateur

Vous modélisez un opérateur C# en utilisant une opération ayant le stéréotype <<Operator>>. Assurez-vous que l'opération <<Operator>> a une visibilité Public et que sa propriété Statique soit cochée.

Pour définir un opérateur externe, vous devez définir l'attribut étendu externe de l'opération à True. Les attributs étendus new, virtual et override ne sont pas admis pour les opérateurs.

L'opérateur token (par exemple +, -, !, ~, ou ++) est le nom de la méthode.



Méthode d'opérateur de conversion

Vous modélisez un opérateur de conversion C# en utilisant une opération ayant le stéréotype <<ConversionOperator>>.

Vous devez également déclarer l'opérateur de conversion en utilisant les mots-clés explicit ou implicit. Vous définissez le mot clé de l'opérateur de conversion en sélectionnant la valeur implicit ou explicit de l'attribut étendu scope.

Dans l'exemple suivant, la classe Digit contient un opérateur de conversion explicit et un opérateur de conversion implicite :



public struct Digit
{
 public Digit(byte value)
  {
   if (value < 0 || value > 9) throw new ArgumentException();
   this.value = value;
  }
 public static implicit operator byte(Digit d)
 {
  return d.value;
 }
 
 public static explicit operator Digit(byte b)
  {
   return new Digit(b);
  }
 private byte value;
}