vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Kommastellen... 
Autor: Preisser
Datum: 21.07.12 18:18

Hallo,

Manfred X schrieb:
Zitat:

Eine "Expression" ist KEINE Instanz eines Objekts,
sie wird nur als Objektparameter
an die Format-Methode übergeben - und erst dort ausgewertet
(konvertiert und formatiert).
Diese Expression kann eine Zeichenfolge oder einen
numerischen Wert ergeben.

Die in Double enthaltene Methode "ToString" greift
auf den aktuellen Wert der
Structure-Instanz zu (was z.B. das Resultat einer Expression
sein kann), den sie
konvertiert und formatiert.

aber genau das ist doch das Ziel von OOP: Dass man Daten und Methoden zusammenfasst, die auch zusammengehören.

Bei der shared Format-Methode übergibt man ein Objekt wie z.B. ein (geboxtes) Double. Die Funktion prüft den Typ des Objekts und erstellt dann eine String-Repräsentation dazu.

Bei OOP aber geht es doch darum, dass ein Objekt diese Aufgabe selbst erledigen kann, wie eben die .ToString()-Methode der Double-Struktur.

Mal ein Beispiel:
    Public Structure Auto
        Public Bezeichnung As String
        Public Farbe As String
    End Structure
 
    Public Structure Film
 
        Public Bezeichnung As String
        Public Regisseur As String
    End Structure
 
    Public Shared Function FormatMyObj(obj As Object) As String
        If TypeOf obj Is Auto Then
            Dim auto As Auto = DirectCast(obj, Auto)
            Return "Dies ist das Auto " + auto.Bezeichnung + " in der Farbe " + _
              auto.Farbe + "."
        ElseIf TypeOf obj Is Film Then
            Dim film As Film = DirectCast(obj, Film)
            Return "Dies ist der Film  " + film.Bezeichnung + " vom Regisseur " _
              + film.Regisseur + "."
        Else
            Throw New ArgumentException("obj ist nicht vom Typ Auto oder Film.")
        End If
    End Function
Hier gibt es verschiedene Structures sowie eine Formatierungsfunktion, der man eine Instanz übergeben kann und diese daraus eine String-Repräsentation erstellt, was ungefähr der prozeduralen (nicht-OOP) Programmierung entspricht.

Ähnlich verhält es sich mit der Stirngs.Format-Funktion: Diese hat ein Select Case auf den Typ des übergebenen Objektes und ruft dann von diesem wiederrum die .ToString-Methode (bzw. eine andere Formatierungsmethode, je nach Typ) auf.

Im Gegensatz hierzu:
    Public Interface IMyFormattable
        Function Format() As String
    End Interface
 
    Public Structure Auto
        Implements IMyFormattable
 
        Private Bezeichnung As String
        Private Farbe As String
 
        Public Function Format() As String Implements IMyFormattable.Format
            Return "Dies ist das Auto " + Bezeichnung + " in der Farbe " + _
              Farbe + "."
        End Function
    End Structure
 
    Public Structure Film
        Implements IMyFormattable
 
        Private Bezeichnung As String
        Private Regisseur As String
 
        Public Function Format() As String Implements IMyFormattable.Format
            Return "Dies ist der Film  " + Bezeichnung + " vom Regisseur " + _
              Regisseur + "."
        End Function
    End Structure
(wobei es hier natürlich sinvoller wäre, Klassen statt Structures zu verwenden).

Dort ist die Funktion für die Umwandlung in einen String bereits als Methode in der entsprechenden Klasse selbst integriert. Man ruft also nicht die shared Format-Funktion auf und übergibt ihr irgend ein Objekt, sondern man ruft die entsprechende Implementierung der Format-Funktion des Objekts selbst auf.
Dies kann man vergleichen mit den ToString-Methoden, die von Klassen wie Int32, Double usw. entsprechend überschrieben werden (bzw. wird die IFormattable.ToString(String, IFormatProvider)-Methode implementiert für die Angabe eines Formatierungsstrings).


Von daher kann ich deine Argumentation nicht ganz nachvollziehen, dass es sich hierbei um "zwei vollkommen verschiedene Dinge" handeln würde.

Beitrag wurde zuletzt am 21.07.12 um 18:22:36 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Kommastellen...3.767silast18.07.12 12:17
Re: Kommastellen...2.466ModeratorDaveS18.07.12 13:04
Re: Kommastellen...2.428silast18.07.12 14:59
Re: Kommastellen...2.444Manfred X18.07.12 15:59
Re: Kommastellen...2.246silast18.07.12 21:46
Re: Kommastellen...2.265Martin_CH21.07.12 09:32
Re: Kommastellen...2.355ModeratorRalfE21.07.12 09:39
Re: Kommastellen...2.223JangoF21.07.12 10:56
Re: Kommastellen...2.271Martin_CH21.07.12 11:40
Re: Kommastellen...2.369ModeratorDaveS21.07.12 13:06
Re: Kommastellen...2.286Manfred X21.07.12 13:27
Re: Kommastellen...2.299keco21.07.12 13:53
Re: Kommastellen...2.285Manfred X21.07.12 15:12
Re: Kommastellen...2.285Preisser21.07.12 15:34
Re: Kommastellen...2.255Manfred X21.07.12 16:05
Re: Kommastellen...2.220Preisser21.07.12 16:19
Re: Kommastellen...2.238Manfred X21.07.12 16:29
Re: Kommastellen...2.292Preisser21.07.12 16:47
Re: Kommastellen...2.195Manfred X21.07.12 16:56
Re: Kommastellen...2.406Preisser21.07.12 17:09
Re: Kommastellen...2.328Manfred X21.07.12 17:44
Re: Kommastellen...2.340Preisser21.07.12 18:18
Re: Kommastellen...2.226Manfred X21.07.12 19:09
Re: Kommastellen...2.253ModeratorDaveS21.07.12 19:17
Re: Kommastellen...2.321Preisser21.07.12 19:43
Re: Kommastellen...2.148Manfred X21.07.12 19:57
Re: Kommastellen...2.156ModeratorDaveS21.07.12 20:36
Re: Kommastellen...2.174Manfred X21.07.12 20:56
Re: Kommastellen...2.220ModeratorDaveS21.07.12 21:02
Re: Kommastellen...2.304Manfred X21.07.12 21:22
Re: Kommastellen...2.159ModeratorDaveS21.07.12 21:24
Re: Kommastellen...2.324keco21.07.12 21:47
Re: Kommastellen...2.226Manfred X21.07.12 22:17
Re: Kommastellen...2.193ModeratorDaveS22.07.12 08:03
Re: Kommastellen...2.208keco21.07.12 16:02
Re: Kommastellen...2.164Micke27.07.12 11:47
Re: Kommastellen...2.281Preisser27.07.12 13:31
Re: Kommastellen...2.206Micke27.07.12 16:06
Re: Kommastellen...2.305Preisser27.07.12 16:36
Re: Kommastellen...2.344Manfred X27.07.12 17:41

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel