Programm zum berechnen von Konussen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Programm zum berechnen von Konussen

    Hallo zusammen,

    ich habe, um mich etwas mit der Mac Programmierung zu beschäftigen, ein Programm geschrieben, welches zur Berechnung von Konussen dient.
    Das Tool ist hier zu finden: sourceforge.net/projects/rmccone/

    Und eine kurze Beschreibung des Hintergrundes:
    Beim Bau von Modellraketen werden oft Übergänge (Kegelstumpf) von einem Körperrohrdurchmesser auf den anderen benutzt. Diese sind nur über spezielle Formeln zu berechnen. Das Konusberechnungs-Tool erleichtert uns hier die Arbeit und gibt noch weitere nützliche Daten aus.


    Ich hätte gerne einmal eure Meinung zu diesem Programm gehört.

    Danke
  • pacnos schrieb:

    Ich hätte gerne einmal eure Meinung zu diesem Programm gehört.


    Da du ja netter weise (oder mutiger :D ) uns den Quellcode zur Verfügung gestellt hast... (vermutlich damit wir schauen können ob wir uns nicht einen neuen NSABKAFACEBOOKICLOUD-Trojaner installieren...)

    Ein paar Localizations sind seltsam...

    Dann hast du für meinen Geschmack ziemlich viel "Magic numbers" in deinem source. zB dein "results" Array - wenn überhaupt wäre dafür vllt ein Dictionary mit eindeutigen Keys verlässlicher?
    Was mir beim durchclicken der Files auffiel ist das du scheinbar beim Programmieren das Konzept erweitert hast - zum Beispiel dieses nachträglich reingebastelt wirkende, wechseln zwischen Kegelstumpfhöhe und Seitenlänge als Berechnungsquelle.

    Eine Sauberere Trennung würde dir da das Leben erleichtern denk ich.

    und dann was genau machst du da mit den NSNumberFormaters? setz die doch einfach per äh InterfaceBuilder (hätte man ja früher gesagt... also direkt im Xcode Designer... bla)
    ansonsten wenn sie so speziell sein sollen dann halt einmal bei der Initialisierung und fertig. Das momentane Konstrukt ist recht krude und tut mit Sicherheit nicht so richtig das was du ursprünglich wolltest?

    Ansonsten scheint es ja erstmal das zu tun was du wolltest - Kegelstümpfe zu berechen :D
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Hallo chartus,

    erstmal danke, dass du dir die Arbeit gemacht hast, meinen gesamten Quelltext durchzuschauen.

    chartus schrieb:

    Dann hast du für meinen Geschmack ziemlich viel "Magic numbers" in deinem source. zB dein "results" Array - wenn überhaupt wäre dafür vllt ein Dictionary mit eindeutigen Keys verlässlicher?

    Ja, hier hatte ich das Problem, dass mir keine bessere Möglichkeit einfiel, alle berechneten Werte zurück zu geben. Ich komme eigentlich aus der Python Ecke und da kann man ja recht einfach, als Rückgabe eine Liste nehmen und da habe ich halt des Equivalent in Objektive-C genommen. Gibt es denn da noch ein Stilvollere Möglichkeit mehrere Werte zurück zu geben?

    chartus schrieb:


    Was mir beim durchclicken der Files auffiel ist das du scheinbar beim Programmieren das Konzept erweitert hast - zum Beispiel dieses nachträglich reingebastelt wirkende, wechseln zwischen Kegelstumpfhöhe und Seitenlänge als Berechnungsquelle.

    Ja da hast du Recht. Ich hätte nicht gedacht, dass das so offensichtlich ist ;)

    chartus schrieb:

    und dann was genau machst du da mit den NSNumberFormaters? setz die doch einfach per äh InterfaceBuilder (hätte man ja früher gesagt... also direkt im Xcode Designer... bla)
    ansonsten wenn sie so speziell sein sollen dann halt einmal bei der Initialisierung und fertig. Das momentane Konstrukt ist recht krude und tut mit Sicherheit nicht so richtig das was du ursprünglich wolltest?


    Ich habe bereits NSNumberFormaters im Interface Builder gesetzt. Das Problem auf welches ich aber gestossen bin ist folgendes: Wenn man in einem Feld z.B. ein Buchstabe eingibt und direkt danach auf "Berechnen" klickt, reagiert der NSNumberFormatter, den ich im Interface Builder gesetzt habe nicht. Daher habe ich das ganze noch einmal abfangen lassen. Gibt es denn hier eine elegantere Möglichkeit?
  • pacnos schrieb:


    chartus schrieb:

    Dann hast du für meinen Geschmack ziemlich viel "Magic numbers" in deinem source. zB dein "results" Array - wenn überhaupt wäre dafür vllt ein Dictionary mit eindeutigen Keys verlässlicher?

    Ja, hier hatte ich das Problem, dass mir keine bessere Möglichkeit einfiel, alle berechneten Werte zurück zu geben. Ich komme eigentlich aus der Python Ecke und da kann man ja recht einfach, als Rückgabe eine Liste nehmen und da habe ich halt des Equivalent in Objektive-C genommen. Gibt es denn da noch ein Stilvollere Möglichkeit mehrere Werte zurück zu geben?


    Wie schon gesagt Dictionarys - aber ich glaube ich würde mir das Konzept nochmal durch den Kopf geben lassen. Objekte behandelt man eigentlich anders.

    pacnos schrieb:


    Ich habe bereits NSNumberFormaters im Interface Builder gesetzt. Das Problem auf welches ich aber gestossen bin ist folgendes: Wenn man in einem Feld z.B. ein Buchstabe eingibt und direkt danach auf "Berechnen" klickt, reagiert der NSNumberFormatter, den ich im Interface Builder gesetzt habe nicht. Daher habe ich das ganze noch einmal abfangen lassen. Gibt es denn hier eine elegantere Möglichkeit?


    ich denke das hängt mit deiner Methode zusammen die Werte abzuholen... Du triggerst vermutlich dabei nicht das Action der TExtfields.

    aber du kannst ja mal statt des control:didFailToFormatString:errorDescription: folgende Delegate methode testen control:didFailToValidatePartialString:errorDescription:

    die sollte schon reagieren wärend du einen falschen Wert eingibst und nicht erst wenn der Action des Textfield getriggert wird.

    Aber ernsthaft find ich das jetzt etwas Herumgefrickel.
    Ich würde, wenn du das überhaupt willst, einfach der übung halber mal das MVC pattern vollständig implementieren - auch wenn das Modell bei dir sicherlich sehr übersichtlich ist.
    Aber grade deswegen ist es sicher nicht so verkehrt. Also bau dir doch eine Modellklasse die deine ganzen Werte wie Durchmesser und Höhen aufnimmt und entsprechend vom Controller versorgt wird.
    Dann kannst du auch das ganze gefriemel in Ordnung bringen um die Werte auszulesen. Wenn du willst kannst du ja dann sogar faul sein und Bindings nutzen... *eg*

    Auch kannst du statt eines unübersichtlichen "result" Arrays dann deinem "calculator" einfach das Modell vorwerfen welches er manipulieren und zurück geben kann.

    Ich persönlich - und ich möchte betonen das es meine ganz eigene Meinung und vllt auch nicht der beste Stil ist! - würde in diesem Fall hier dem Modell genügend Eigenintelligenz mitgeben das du diesen "calculator" gar nicht brauchst sondern das Modell sukzessive seine werte selbst berechnet je nach dem wie die daten gesetzt werden.
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • pacnos schrieb:

    Hallo chartus,

    erstmal danke, dass du dir die Arbeit gemacht hast, meinen gesamten Quelltext durchzuschauen.

    chartus schrieb:

    Dann hast du für meinen Geschmack ziemlich viel "Magic numbers" in deinem source. zB dein "results" Array - wenn überhaupt wäre dafür vllt ein Dictionary mit eindeutigen Keys verlässlicher?

    Ja, hier hatte ich das Problem, dass mir keine bessere Möglichkeit einfiel, alle berechneten Werte zurück zu geben. Ich komme eigentlich aus der Python Ecke und da kann man ja recht einfach, als Rückgabe eine Liste nehmen und da habe ich halt des Equivalent in Objektive-C genommen. Gibt es denn da noch ein Stilvollere Möglichkeit mehrere Werte zurück zu geben?


    Mit einem entsprechenden Objekt und den Attributen (innerRadius, outerRadius, angle, etc.). Ein struct täte es auch. vglb. mit NSRect.
    * Kann Spuren von Erdnüssen enthalten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NSObject ()

  • beage schrieb:

    kmr schrieb:

    beage schrieb:

    Ich installiere nichts von nicht zertifizierten Entwicklern, sorry!


    Na, das erhöht die Sicherheit Deines Systems aber signifikant. ;)


    Das denke ich in der Tat schon, dass das die Sicherheit erhöht, wenn man nicht jeden "Dreck" installiert, den man im Netz findet.

    @TO: Damit war nicht Deine App gemeint.


    Ein ideales Thema für ein Bier auf der Macoun. :) Kommst Du auch?
  • kmr schrieb:

    beage schrieb:

    kmr schrieb:

    beage schrieb:

    Ich installiere nichts von nicht zertifizierten Entwicklern, sorry!


    Na, das erhöht die Sicherheit Deines Systems aber signifikant. ;)


    Das denke ich in der Tat schon, dass das die Sicherheit erhöht, wenn man nicht jeden "Dreck" installiert, den man im Netz findet.

    @TO: Damit war nicht Deine App gemeint.


    Ein ideales Thema für ein Bier auf der Macoun. :) Kommst Du auch?


    Na klar! :thumbsup:
    Ich bin gegen Signaturen!!!
  • chartus schrieb:

    ich denke das hängt mit deiner Methode zusammen die Werte abzuholen... Du triggerst vermutlich dabei nicht das Action der TExtfields.

    aber du kannst ja mal statt des control:didFailToFormatString:errorDescription: folgende Delegate methode testen control:didFailToValidatePartialString:errorDescription:

    die sollte schon reagieren wärend du einen falschen Wert eingibst und nicht erst wenn der Action des Textfield getriggert wird.

    Aber ernsthaft find ich das jetzt etwas Herumgefrickel.
    Ich würde, wenn du das überhaupt willst, einfach der übung halber mal das MVC pattern vollständig implementieren - auch wenn das Modell bei dir sicherlich sehr übersichtlich ist.
    Aber grade deswegen ist es sicher nicht so verkehrt. Also bau dir doch eine Modellklasse die deine ganzen Werte wie Durchmesser und Höhen aufnimmt und entsprechend vom Controller versorgt wird.
    Dann kannst du auch das ganze gefriemel in Ordnung bringen um die Werte auszulesen. Wenn du willst kannst du ja dann sogar faul sein und Bindings nutzen... *eg*

    Auch kannst du statt eines unübersichtlichen "result" Arrays dann deinem "calculator" einfach das Modell vorwerfen welches er manipulieren und zurück geben kann.

    Ich persönlich - und ich möchte betonen das es meine ganz eigene Meinung und vllt auch nicht der beste Stil ist! - würde in diesem Fall hier dem Modell genügend Eigenintelligenz mitgeben das du diesen "calculator" gar nicht brauchst sondern das Modell sukzessive seine werte selbst berechnet je nach dem wie die daten gesetzt werden.


    Danke für deine Hilfe.
    Ich fürchte hier muss ich noch einmal genauer nachfragen, soweit ich MVC kenne, hat lediglich der Controller einen direkten Kontakt zum Interface (als Object im Interface Builder). Wie kann ich dann ein Bindung zwischen dem Modell und dem TextBoxen anlegen?
  • pacnos schrieb:


    Danke für deine Hilfe.
    Ich fürchte hier muss ich noch einmal genauer nachfragen, soweit ich MVC kenne, hat lediglich der Controller einen direkten Kontakt zum Interface (als Object im Interface Builder). Wie kann ich dann ein Bindung zwischen dem Modell und dem TextBoxen anlegen?


    na mittels des controllers der ist ja sozusagen der Vermittler - das arme Schwein was arbeiten muß
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Osxer schrieb:

    Wieso benötigt so eine App Mac OS X 10.8???
    Ich hätte es gerne ausprobiert, aber ich bin noch immer Snow Leoparder! :rolleyes:

    Weil der TE wahrscheinlich das aktuelle Xcode verwendet und man damit automatisch erstmal nur für 10.8 entwickelt. Ist das SDK für 10.7 da auch mit drin? Ich weiß auf jeden Fall, dass es ein ganz schönes Gezupfel ist dem aktuellen Xcode das 10.6.er SDK beizubringen.
    [self setSignature:null];
    [[self postCount] increment];
  • Michael schrieb:





    Zitat von »Osxer«



    Wieso benötigt so eine App Mac OS X 10.8???

    Weil er Features nutzt, die es erst ab 10.8 gibt.




    Zitat von »Osxer«



    Ich hätte es gerne ausprobiert, aber ich bin noch immer Snow Leoparder!

    Du kannst Dir auch den Sourcecode laden und an Snow Leopard anpassen. Das sollte recht schnell machbar sein.

    Michael


    Ja ich verwende AutoLayout und die Popovers.

    Ich habe aber leider erst angefangen mit 10.8 zu entwickeln, daher war mir nicht wirklich klar, dass Auto Layout erst seit so kurzem verfügbar ist.