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

Das Winkel-Beispiel

  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. Zum Login

Stellenmarkt
  1. Helmholtz-Zentrum Potsdam Deutsches GeoForschungsZentrum GFZ, Potsdam
  2. Radeberger Gruppe KG, Frankfurt
  3. Universität Passau, Passau
  4. Deutsche Rentenversicherung Bund, Berlin

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. -36%) 31,99€
  2. 22,99€
  3. (-71%) 5,75€
  4. 20,99€


Haben wir etwas übersehen?

E-Mail an news@golem.de


In eigener Sache: Die offiziellen Golem-PCs sind da
In eigener Sache
Die offiziellen Golem-PCs sind da

Leise, schnell, aufrüstbar: Golem.de bietet erstmals eigene PCs für Kreative und Spieler an. Alle Systeme werden von der Redaktion konfiguriert und getestet, der Bau und Vertrieb erfolgen über den Partner Alternate.

  1. In eigener Sache Was 2019 bei Golem.de los war
  2. In eigener Sache Golem.de sucht Produktmanager/Affiliate (m/w/d)
  3. In eigener Sache Aktiv werden für Golem.de

Matebook D14 (2020) im Test: Huaweis 700-Euro-AMD-Notebook überzeugt
Matebook D14 (2020) im Test
Huaweis 700-Euro-AMD-Notebook überzeugt

Mit dem Matebook D14 bringt Huawei seinen günstigen AMD-Laptop auch nach Deutschland: Der 14-Zöller ist für den Preis passabel ausgestattet, das Display sogar heller als beworben. Vor allem aber hat Huawei den Ryzen-Prozessor gut im Griff, was Laufzeit und Leistung anbelangt.
Ein Test von Marc Sauter

  1. WLAN Huawei bringt Wi-Fi-6-Router mit eigener CPU und 5G-Modem
  2. Matepad Pro Huawei bringt leistungsstarkes Tablet nach Deutschland
  3. Mate Xs angeschaut Huawei zweites faltbares Smartphone kostet 2.500 Euro

Generationenübergreifend arbeiten: Bloß nicht streiten
Generationenübergreifend arbeiten
Bloß nicht streiten

Passen Generation Silberlocke und Generation Social Media in ein IT-Team? Ganz klar: ja! Wenn sie ihr Wissen teilen, kommt am Ende sogar Besseres heraus. Entscheidend ist die gleiche Wertschätzung beider Altersgruppen und keine Konflikte in den altersgemischten Teams.
Von Peter Ilg

  1. Frauen in der Technik Von wegen keine Vorbilder!
  2. Arbeit Warum anderswo mehr Frauen IT-Berufe ergreifen
  3. Arbeit Was IT-Recruiting von der Bundesliga lernen kann

  1. Entwicklertagung: Game Developers Conference 2020 wird verschoben
    Entwicklertagung
    Game Developers Conference 2020 wird verschoben

    GDC 2020 Die traditionsreiche Game Developers Conference findet 2020 nicht wie geplant im März statt, sondern im Sommer - in welcher Form, ist noch unklar.

  2. Rip and Replace Act: Huawei-Ersatz im US-Mobilfunknetz kostet 1 Milliarde Dollar
    Rip and Replace Act
    Huawei-Ersatz im US-Mobilfunknetz kostet 1 Milliarde Dollar

    Der US-Senat hat dem sogenannten Rip and Replace Act zugestimmt, der die Demontage von Huawei-Technik finanziert. Das politische Verbot wird für den Steuerzahler teuer.

  3. Elektromobilität: Die Post baut keine Streetscooter mehr
    Elektromobilität
    Die Post baut keine Streetscooter mehr

    Der Streetscooter, ein elektrisch angetriebener Lieferwagen aus Aachen, galt als Vorzeigeprojekt der Elektromobilität. Ein wirtschaftlicher Erfolg war das Auto aber nicht. Deshalb hat die Deutsche Post bekannt gegeben, dass sie die Produktion des Elektroautos beende.


  1. 01:26

  2. 18:16

  3. 17:56

  4. 17:05

  5. 16:37

  6. 16:11

  7. 15:48

  8. 15:29