Public Class Attribut Private _etendue As etendu Private _nomAttribut As String Private _range As range = Nothing ' :-) Private _type As String Private _bloc As String Private Enum etendu Priv Pub Protect End Enum Private Enum range RO WO End Enum Public ReadOnly Property BlocCode() As String Get Return _bloc End Get End Property Public Sub New(ByVal UML_String As String) Dim str As String = UML_String Select Case str.Substring(0, 1) 'Etendue de l'attribut Case CChar("+") _etendue = etendu.Pub Case CChar("-") _etendue = etendu.Priv Case CChar("#") _etendue = etendu.Protect Case Else Throw New System.Exception("Erreur: Etendue de l'attribut invalide") End Select str = str.Substring(1) 'On enleve l'etendue If Not str.Contains(":") Then Throw New System.Exception("Erreur: Type de l'attribut manquant") 'Tout attribut doit avoir un type Dim b As String() = Split(str, ":") _nomAttribut = b(0) ' 0 = Nom // 1 = Type + Trash{RO/WO} If b(1).Contains("{") Then ' {RO/WO}? b = Split(b(1), "{") b(1) = b(1).TrimEnd(CChar("}")) Select Case b(1).ToLower Case "readonly" _range = range.RO Case "writeonly" _range = range.WO Case Else Throw New System.Exception("Erreur: Accesseur de l'attribut invalide") End Select End If _type = b(0) CreerBloc() ' L'objet est structuree End Sub Public Sub CreerBloc() Dim e As String 'Header(Premiere ligne) Select Case _etendue Case etendu.Pub e = "Public " Case etendu.Priv e = "Private " Case etendu.Protect e = "Protected " End Select Select Case _range Case range.RO e &= "ReadOnly " Case range.WO e &= "WriteOnly " End Select _bloc &= e & "Property " & Me._nomAttribut & " As " & _type 'Get/Set Select Case _range Case range.RO _bloc &= ControlChars.NewLine & "Get" & ControlChars.NewLine & ControlChars.NewLine & "End Get" Case range.WO _bloc &= ControlChars.NewLine & "Set(ByVal value As " & _type & ")" & ControlChars.NewLine & ControlChars.NewLine & "End Set" Case Else _bloc &= ControlChars.NewLine & "Get" & ControlChars.NewLine & ControlChars.NewLine & "End Get" & ControlChars.NewLine & "Set(ByVal value As " & _type & ")" & ControlChars.NewLine & ControlChars.NewLine & "End Set" End Select 'Closer _bloc &= ControlChars.NewLine & "End Property" & ControlChars.NewLine End Sub End Class