C Klasse erstellen |
16.10.2013, 11:30 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason | C Klasse erstellen Hallo leute ich habe gerade schon am Anfang probleme bei dieser Aufgabe: Gegeben sei die folgende Beschreibung eines Saugroboters: · Der Saugroboter ist rund, seine Form wird damit durch seinen Durchmesser bestimmt. Der Durchmesser wird in Metern gemessen. Eine Gleitkommazahl mit einer Genauigkeit von 6 bis 7 Nachkommastellen genügt den Genauigkeitsanforderungen. · Die Position des Saugroboters im Raum wird durch zwei Werte x und y (Einheit: Meter) angegeben, die die Position als Punkt im kartesischen Koordinatensystem eindeutig beschreiben. Um Rundungsfehler bei relativer Positionierung zu minimieren, sollen diese Werte als doppelt genaue Gleitkommazahlen definiert werden. · Für die Ausrichtung wird der Winkel zwischen der Mitte der Frontseite und der x-Achse (gemessen in Radianten (rad)) ebenfalls mit einer doppelt genauen Gleitkommazahl gespeichert Beim Erzeugen eines neuen Saugroboters („Einschalten“) nimmt er an, dass er an der Position (0, 0) steht und in Richtung der x-Achse ausgerichtet ist. · Der Saugroboter kann sich um einen angegebenen Winkel drehen (um seine Mitte). Ein positiver Wert entspricht dabei einer Drehung gegen den Uhrzeigersinn, ein negativer Wert einer Drehung im Uhrzeigersinn. Der Winkel wird in Radianten (rad) angegeben. · Der Saugroboter kann sich um eine angegebene Strecke entlang der Fahrtrichtung bewegen. Eine positive Zahl entspricht einer Vorwärtsbewegung, eine negative Zahl einer Rückwärtsbewegung. Die zurückzulegende Strecke wird in Metern angegeben. · Der Saugroboter kann die x- und y-Werte seiner aktuellen Position und seine aktuelle Ausrichtung an das aufrufende Programm liefern. · Der Saugroboter kann seine aktuelle Position und Ausrichtung (seinen Zustand) auf dem Bildschirm anzeigen. Die Ausrichtung soll zur einfacheren Interpretation sowohl in Radianten als auch (in Klammern) in Grad angezeigt werden. a) Entwerfen Sie eine Klasse zur Modellierung eines Saugroboters, die den Anforderungen der gegebenen Beschreibung entspricht und stellen Sie das UML-Klassendiagramm dieser Klasse auf. Hinweise: Überlegen Sie dazu, durch welche Eigenschaften ein Saugroboter beschrieben wird und welches Verhalten von ihm gefordert wird. Eigenschaften können mit Substantiven und Verhalten mit Verben beschrieben werden. Eigenschaften werden zu Attributen, Verhaltensweisen zu Methoden einer Klasse. Kennzeichnen Sie im ersten Schritt Angaben zu Eigenschaften und Verhaltensweisen im Text mit verschiedenen Farben. Stellen Sie dann das UML-Klassendiagramm auf. Beachten Sie dabei die folgenden Namenskonventionen: · Namen und Bezeichnungen in Englisch · Großbuchstaben zur Abgrenzung von Namensbereichen sonst Kleinschreibung, z.B. getName, ArrayIndex · Bezeichnung von Methoden mit Verben, z.B. getName, setName, print · Bezeichnung von Attributen und Klassen mit Substantiven · Verwendung von Präfixen zur Kennzeichnung spezieller Bezeichnungen: #include< iostream> #include <stdio.h> #include <stdlib.h> using namespace std; public static class Saugroboter { }; Kann mir jemand tipps geben wie ich hier den Robotor ezeugen soll? Das ist die 1 Aufgabe die ich zur C programmierung bekommen hab und daher habe ich auch probleme. Für hilfe wäre ich dankbar. |
||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
16.10.2013, 16:02 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | In C gibt es nur struct, keine Klassen; die kommen erst in C++ dazu.
iostream ist ein C++Header, stdio.h ist C(stdlib.h auch) und hat die selbe Funktionalität. Da du für die Klassen ohnehin C++ brauchst, solltest du stdio löschen. Ich fange an, damit du siehst, wie es etwa funktioniert.
du hattest die class als static deklariert, das macht in C++ bei Klassen meines Wissens keinen Sinn, in C# wäre es kontraproduktiv.
Hier ein Programm, das zwar nicht tut, was verlangt wird, aber zumindest ausgeführt wird:
|
||||||||||||||||||||||||||||
16.10.2013, 23:16 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason |
Der Saugroboter kann sich um einen angegebenen Winkel drehen (um seine Mitte). Ein positiver Wert entspricht dabei einer Drehung gegen den Uhrzeigersinn, ein negativer Wert einer Drehung im Uhrzeigersinn. Habe ich diesen Teil ein wenig richtig programiert ? Mit der if Bedingung ? P:s Ich muss in C programieren. Kann man da auch so programieren? |
||||||||||||||||||||||||||||
17.10.2013, 15:43 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | Was du machen sollst, nennt sich objektorientierte Programmierung, das geht nicht in C. Ich zitiere aus deinem ersten Beitrag:
Das ist C++. Zum Bewegen/Drehen: du brauchst bei den Variablen der Klasse einen zusätzlichen Eintrag:
Für das Drehen brauchst du eine eigene Funktion:
Das Bewegen des Roboters ändert die Werte x und y: Für einen Winkel=0 bewegt der Roboter sich in positiver x-Richtung, bei 90°=Pi/2 in y-Richtung, bei z.B. 45° in x- und y-Richtung. Allgemein lässt sich das durch sinus und cosinus berechnen.
Hattest du vorher schon irgendetwas mit Programmieren zu tun? Das ist noch nicht mal annährend korrekte Syntax. Hast du einen Compiler um dein Programm auszuführen oder dich auf Fehler hinweisen zu lassen? Ohne wirst du es schwer haben, programmieren zu lernen. Hier mögliche Entwicklungsumgebungen: Visual Studio (unter Visual Studio Express 2013 für Windows Desktop) Nur für Windows, Registrierung innerhalb von 30 Tagen erforderlich. Bringt einen guten Debugger(für Fehlersuche) mit. Code::Blocks Ist Open-Source und somit kostenlos. Einige meiner Kommilitonen nutzen Dev-C++, dazu kann ich aber nichts sagen. |
||||||||||||||||||||||||||||
Anzeige | |||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
17.10.2013, 17:11 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason | ich muss eclipse benutzen. Wie berechne ich das mit sin und cos ? Echt kompliziert. |
||||||||||||||||||||||||||||
17.10.2013, 18:21 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | eclipse ist auch gut. Du solltest damit erkannt haben, dass dein Code nicht ausgeführt werden kann. Ich dachte an so etwas (nicht getestet, ich muss gleich weg):
|
||||||||||||||||||||||||||||
23.10.2013, 22:07 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason | Wie soll denn jetzt genau mein komplettes Program aussehen ? |
||||||||||||||||||||||||||||
24.10.2013, 06:02 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | Das ist deine Aufgabe, nicht meine. Du kannst hier gerne einen Vorschlag bringen, auf den ich dann einen Blick werfen kann. Aber ich werde dir die Arbeit nicht abnehmen. |
||||||||||||||||||||||||||||
27.10.2013, 21:42 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason | Weißt du wie ich das UML Klassendiagramm machen kann ? Weil so was habe ich noch nie gemacht. Nach der Aufgabenstellung soll ich ja auch keinen Code schreiben oder ) |
||||||||||||||||||||||||||||
28.10.2013, 06:08 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | Wo hängt es denn beim Klassendiagramm? Weißt du, wie so etwas prinzipiell aufgebaut wird? -> Wirf z.B. einen Blick in die Wikipedia, wenn danach noch Fragen sind, kann ich sie gerne beantworten. Oder sucht du nur nach Software, um das Diagramm am PC zu erstellen? Für Windows, 30-Tage Demo: Enterprise Architect Für Linux/Windows, Open Source: TOPCASED |
||||||||||||||||||||||||||||
31.10.2013, 19:11 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
Jason | Hast du tipps wie ich das für meine Aufgabe darstellen kann ? |
||||||||||||||||||||||||||||
31.10.2013, 21:33 | Auf diesen Beitrag antworten » | ||||||||||||||||||||||||||||
eulerscheZahl | Mal 'nen Kasten, schreib' oben Saugroboter hin, dann eine waagrechte Linie, Eigenschaften (x, y, winkel, durchmesser), noch eine Waagrechte, dann die Funktionen. |
|