| |

VB.NET - Ein- und UmsteigerRe: Untereigenschaften als Subklasse in Klasse anlegen und befüllen | |  | Autor: Manfred X | Datum: 31.12.14 13:42 |
| Hallo!
Es gibt unterschiedliche Möglichkeiten.
Zunächst wäre zu prüfen, wie die Strukturen, Zusammenhänge usw in der Realität
gegeben sind, um danach zu entscheiden, wie man sie in einer Objektwelt des Programms
abbildet.
So könnte es neben der Basisklasse "Pumpe", die allgemeine Eigenschaften enthält
(z.B. Typbezeichner, Preis, Saugleistung) noch Untergruppen (=abgeleitete Klassen - "Inherits")
von Pumpen geben (z.B. Elektropumpe, Dieselpumpe), die jeweils auf spezifische
Eigenschaften der Antriebsart zugeschnitten sind und in einer nächsten Stufe daraus abgeleitete
Klassen für die einzelnen Modelle der Elekto- bzw. Dieselpumpen.
Werte für Eigenschaften eines Pumpenmodells, die durch die technische Spezifikation fest
vorgegeben sind, wären als Konstanten oder ReadOnly-Properties zu implementieren.
Ähnliche Strukturen sind bei den Dichtungen denkbar.
Da eventuell nicht alle Dichtungsarten bei allen Pumpenmodellen vorkommen, könnte man
z.B. pumpentyp-spezifische Dichtungslisten fest innerhalb der Pumpenmodell-Klassen einrichten.
Es wären dann nur Abfragen der Dichtungsliste zuzulassen, aber keine Zuweisungen oder
Eigenschaftsänderungen.
Hier ein Beispiel für die Verankerung der Klasse Dichtungen in der Klasse Pumpe:
Public Class Pumpe
'Pumpen-Member
Private m_Typ As String
Private m_gesperrt As Boolean
''' <summary>Öffentliche Klasse für Pumpen-Dichtungen</summary>
Public Class Dichtung
Private m_Werkstoff As String
Public Property Werkstoff() As String
Get
Return m_Werkstoff
End Get
Set(ByVal value As String)
m_Werkstoff = value
End Set
End Property
Private m_Preis As Single
Public Property Preis() As Single
Get
Return m_Preis
End Get
Set(ByVal value As Single)
m_Preis = value
End Set
End Property
End Class
''' <summary>Private Liste der Pumpen-Dichtungen</summary>
Private m_Dichtungen As New List(Of Dichtung)
Public Sub New(ByVal Typ As String, ByVal gesperrt As Boolean)
Me.m_Typ = Typ
Me.m_gesperrt = gesperrt
End Sub
Public Property Typ() As String
Get
Return m_Typ
End Get
Set(ByVal value As String)
m_Typ = value
End Set
End Property
Public Property gesperrt() As Boolean
Get
Return m_gesperrt
End Get
Set(ByVal value As Boolean)
m_gesperrt = value
End Set
End Property
Public Property DichtungsListe(Optional ByVal index As Integer = -1) As _
Dichtung
Get
'Rückgabe einer Referenz / Daten in Liste sind änderbar
'Return m_Dichtungen(index)
'Rückgabe eines Clone / Daten in Liste nicht änderbar
Dim vl As New Dichtung
With m_Dichtungen(index)
vl.Preis = .Preis
vl.Werkstoff = .Werkstoff
End With
Return vl
End Get
Set(value As Dichtung)
'Referenz in Liste eintragen
'bei illegalem Index wird das Element angehängt, sonst erneuert
If index < 0 Or index >= m_Dichtungen.Count Then
m_Dichtungen.Add(value)
Else
m_Dichtungen(index) = value
End If
End Set
End Property
End Class Anwendung:
Dim mypumpe As New Pumpe("MegaSauger", False)
'Instanz von Pumpe.Dichtung erstellen
Dim mydichtung As New Pumpe.Dichtung
With mydichtung
.Preis = 123.45
.Werkstoff = "Kevlar"
End With
'Instanz der Dichtungsliste hinzufügen
mypumpe.DichtungsListe = mydichtung
'Element-Eigenschaft aus der internen Liste der Dichtungen
'per Property abfragen
Dim ws As String = mypumpe.DichtungsListe(0).Werkstoff |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
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
|
|