1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Ada und Spark: Mehr…

Das Winkel-Beispiel

Für Konsolen-Talk gibt es natürlich auch einen Raum ohne nerviges Gedöns oder Flamewar im Freiraum!
  1. Thema

Neues Thema Ansicht wechseln


  1. Das Winkel-Beispiel

    Autor: Urbautz 11.06.19 - 14:48

    class Winkel {

    private int16 winkel;

    public int16 Winkel
    get { return winkel;}
    set {
    if(this.verify(value))
    { this.winkel = value; }
    else throw new WinkelException w("not valid")
    }

    public bool verify(int16 winkelwert) {
    if(winkelwert < 0) return false;
    if(winkelwert > 359) return false;
    return true;
    }
    // Hier diverse eh benötigte Winkelfunktionen einbauen
    public add (Winkel w2) ....
    }

  2. Re: Das Winkel-Beispiel

    Autor: HankTheTank 11.06.19 - 15:44

    Das ist aber nicht Deklarativ.
    Deine Fehler siehst du erst zur Laufzeit...
    Außerdem ist da viel boilerplate code nötig....

    Andere Sprachen machen manche Sachen echt cool.
    Sonst ist mir C# auch näher.

  3. Re: Das Winkel-Beispiel

    Autor: \pub\bash0r 11.06.19 - 16:06

    HankTheTank schrieb:
    --------------------------------------------------------------------------------
    > Das ist aber nicht Deklarativ.
    > Deine Fehler siehst du erst zur Laufzeit...

    Gut, man könnte jetzt sicher mit C++ Templates ..... jaja ich geh ja schon wieder.

  4. Re: Das Winkel-Beispiel

    Autor: kayozz 11.06.19 - 16:45

    Das war auch mein Gedanke. Noch ein paar Optimierungen.

    * struct passt hier besser als class
    * verwendet operator overloading für eine natürlichere nutzung

    > Winkel winkel1 = 30;
    > Winkel winkel2 = 350;
    > Winkel winkel3 = winkel1 + winkel2;

    * verwendet code contracts für compile time checking (leider aktuell nicht mehr von microsoft im Visual Studio integriert, aber über Umwege weiterhin nutzbar, hoffentlich ändert sich das irgendwann wieder, siehe https://stackoverflow.com/questions/40767941/does-vs2017-work-with-codecontracts

    schon hat man das gleiche in C# umgesetzt.

    > public struct Winkel
    > {
    > private int value;
    >
    > public Winkel(int value)
    > {
    > // add nuget package CodeContracts.MSBuild for compile time validation of code contracts
    > Contract.Requires(value >= 0 && value < 365, "Winkel muss zwischen 0 und 359 liegen");
    > this.value = value;
    > }
    >
    > public override string ToString()
    > {
    > return $"{value}°";
    > }
    >
    > public static Winkel operator +(Winkel a, Winkel b)
    > {
    > int value = ((int)a + (int)b) % 360;
    > return new Winkel(value);
    > }
    >
    > public static implicit operator int(Winkel winkel)
    > {
    > return winkel.value;
    > }
    >
    > public static implicit operator Winkel(int value)
    > {
    > Contract.Requires(value >= 0 && value < 365, "Winkel muss zwischen 0 und 359 liegen");
    > return new Winkel(value);
    > }
    >
    > }

  5. Re: Das Winkel-Beispiel

    Autor: HankTheTank 11.06.19 - 16:50

    Ja, das geht.
    Aber andere Sprachen brauchen viel weniger boiler-plate Code.
    Das finde ich schon wichtig.
    C# ist toll und mächtig.
    Aber es hat auch schwächen.

  6. Re: Das Winkel-Beispiel

    Autor: HankTheTank 11.06.19 - 16:51

    Ich würde das gerne mit Template meta programming sehen!

  7. Re: Das Winkel-Beispiel

    Autor: kayozz 12.06.19 - 09:20

    HankTheTank schrieb:
    --------------------------------------------------------------------------------
    > Ja, das geht.
    > Aber andere Sprachen brauchen viel weniger boiler-plate Code.
    > Das finde ich schon wichtig.
    > C# ist toll und mächtig.
    > Aber es hat auch schwächen.

    Ja, C# bzw. .NET hat auch Schwächen. Aber das Argument

    > Aber andere Sprachen brauchen viel weniger boiler-plate Code.
    > Das finde ich schon wichtig.

    würde ich so nicht stehen lassen. Es gibt zwar Anwendungsfälle wo ein Datentyp einen bestimmten Wertebereich hat, der Minimalwert 0 ist und wenn man beim Maximalwert einen addiert soll 0 rauskommen, aber außer Grad fällt mir aktuell auch kein anderer ein. Und dafür eine eigene Syntax:

    > Type Mod_Angle is mod 360;

    in eine Sprache einzubauen, finde ich hingegen sehr speziell.

    Allerdings spricht IMHO nicht dagegen sich selber einen T4 Code Generator zu bauen, der z.B. aus Dateien der Form "Mod_Angle.ada" mit dem Inhalt "Type Mod_Angle is mod 360;" und "Angle.ada" mit dem Inhalt "Type Angle is range 0 .. 359;" und einem "ada.tt" T4 Template die entsprechenden "Mod_Angle.cs" und "Angle.cs" Dateien erzeugt. Das ist eine Sache von einem Nachmittag.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. texdata software gmbh, Karlsruhe und Bielefeld
  2. Hays AG, Ravensburg
  3. itsc GmbH, Hannover
  4. Hays AG, Bad Homburg vor der Höhe

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote
  1. (u. a. Ryzen 7 5800X für 469€)
  2. (u. a. PS5 + HD Kamera für 549,99€)
  3. (u. a. Ryzen 5 5600X 358,03€)


Haben wir etwas übersehen?

E-Mail an news@golem.de


Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme