German Initialize "überschreiben"

Discussion in 'German Forum' started by Kiffi, Jul 17, 2018.

  1. Kiffi

    Kiffi Active Member Licensed User

    Hallo,

    ich weiß: B4J unterstützt kein richtiges Überschreiben von Methoden und leider auch keine optionalen Methodenparameter, aber ich möchte gerne in einer selbst geschriebenen Klasse die Initialize-Methode "überschreiben", sprich: ein Initialize2 nutzen.

    Code:
    Public Sub Initialize(P1 As String)
     
    ' [...]
    End Sub

    Public Sub Initialize2(P1 As String, P2 As String)
     
    ' [...]
    End Sub
    Damit die Klasse richtig initialisiert wird, müsste ich jetzt doch von Initialize2 das 'richtige' Initialize() aufrufen, oder? Wenn ja: Wie mache ich das?

    Stellenweise habe ich als Lösungsvorschlag gelesen, die Übergabe von Parametern in Form einer List oder Map zu realisieren. Doch das fände ich jetzt nicht so dolle.

    Danke im Voraus & Grüße ... Peter
     
  2. MarkusR

    MarkusR Well-Known Member Licensed User

    wenn es nicht erkannt wird dann mußte bestimmt mit
    Initialize das Objekt erstmal erstellen und dann eine Funktion aufrufen die halt irgendwas macht.
    Sowas wie
    Code:
    Dim m As MeineKlasse
        m.Initialize()
        m.Initialize2(
    "","") <- kann man hier dann ja auch einen sinnvollen namen nehmen
        m.Test
    oder Du machst dir eine Funktion mit Parametern welche dir das Objekt so erstellt und zurück gibt wie du möchtest.
    Code:
    Dim m As MeineKlasse
    m = MachWasNeues(
    "1","2")

    Sub MachWasNeues(p1 As String,p2 As StringAs MeineKlasse
      
        
    Dim m As MeineKlasse
        m.Initialize()
      
        m.p1=p1
        m.p2=p2
      
      
        
    Return m
      
    End Sub
     
  3. Kiffi

    Kiffi Active Member Licensed User

    Hallo Markus,

    vielen Dank für Deinen Tipp und Sorry für die späte Rückmeldung. Ich musste mir Deinen Vorschlag erst einmal gründlich durch den Kopf gehen lassen.

    Wenn man -- wie ich -- eher aus der .NET-Ecke kommt, dann ist man ja recht verwöhnt, was die Klassen-Behandlung anbelangt. Aus diesem Grund finde ich die Vorgehensweise von B4X auch eher gewöhnungsbedürftig und teilweise unnötig umständlich.

    Ich habe jetzt meinen Code so umorganisiert, dass ich auf ein Initialize2 weitestgehend verzichten kann.

    Nochmals Danke & Grüße ... Peter
     
    MarkusR likes this.
  4. MarkusR

    MarkusR Well-Known Member Licensed User

    Jo, .Net hat Vor- und Nachteile.
     
  5. KMatle

    KMatle Expert Licensed User

    Warum so kompliziert? Man muss nicht immer Klassen nutzen. Ich nutze z.B. fast nur Codemodule und rufe subs mit Parametern auf. Klassen nutze ich fast nie (auch nicht in .Net)
     
  6. Filippo

    Filippo Expert Licensed User

    Das ist meiner Meinung nach sehr schlecht. :(
    Wenn man mit Klassen umgehen kann, macht die Programmierung viel einfacher, in B4x und in .Net.
     
  7. MarkusR

    MarkusR Well-Known Member Licensed User

    OT
    Muß man auch ein Nutzen für haben.
    Bei größeren Projekten oder schwierigen Aufgaben sind die sehr von Vorteil weil man zum Objekt direkt die passenden Funktionen hat aber auch interne Funktionen unterbringen kann.
    Ein Beispiel wo ich Klassen vermißt habe war ein Partikel Emitter, in einer Sprache die keine Objekte nutzt.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice