Programmentwurf
-
Hallo,
wenn man in C ein Programm entwirft wie sieht das denn aus. In C++ da sind es doch hauptsächlich die Klassen und die Beziehungen untereinander.
-
In C kannst du Klassen mit Strukturen abbilden, wenn du es objektorientiert haben willst. Den Methoden musst du dann einen Pointer auf eine Instanz der Struktur mitgeben.
-
ich hab aber auch keine Strukturen .
-
Dann überlegst du dir halt welche Funktionen du zur Lösung deines Problems brauchst und wie die einzelnen Teilprobleme bewältigt werden.
-
blurry333 schrieb:
ich hab aber auch keine Strukturen .
Und wieso erwähntest du dann Klassen?
-
weil man bei Klassen sehr sinnvoll einen Entwurf machen kann. Aber in C wie soll ich da einen Entwurf machen ?
-
Nathan schrieb:
Dann überlegst du dir halt welche Funktionen du zur Lösung deines Problems brauchst und wie die einzelnen Teilprobleme bewältigt werden.
-
blurry333 schrieb:
weil man bei Klassen sehr sinnvoll einen Entwurf machen kann. Aber in C wie soll ich da einen Entwurf machen ?
Klassen sind Objektorientiert. C ist (standardmäßig) prozedural.
Das wäre, wie wenn du fragen würdest, wie du ein Klassendiagram für DOS-Batch-Dateien machst: Gar nicht!Such mal nach Programmentwurfsmustern von prozeduralen Programmen. Stichwörter könnten z.B. Nassi-Schneidermann-Diagramm, Programmablaufplan oder Flowchart sein. Damit bildest du ziemlich gut das ab, was C standardmäßig ausmacht.
Allerdings solltest du mal überlegen, ob du Entwurf und Programmierung nicht noch getrennter betrachtest: Gtk/gobj macht es z.B. vor, indem es Objektorientierung für C bietet. Anders gesagt: Du überlegst dir, was für ein Entwufsmuster (UML/Klassendiagramm, Nassi-Schneidermann, Flowchart...) für die Lösung deines Problems am besten geeignet ist und entwirfst dann damit dein Programm (unabhängig von der Programmiersprache). Danach kommt erst die Programmiersprache ins Spiel und setzt das, was du entworfen hast, dann um - und ja, dann kannst du auch Objektorientiert mit "Klassen" in C arbeiten.
Soweit die Theorie/der Idealfall. Sowas kann nur von einem kommen, der noch studiert
In der Praxis stören dabei dann wahrscheinlich noch so unbedeutende Faktoren wie "Deadline", "Finanzierung" und ein Chef oder Kunde, dem es nie schnell genug gehen kann
Gruß, Micha
-
Kümmelkorn schrieb:
Klassen sind Objektorientiert. C ist (standardmäßig) prozedural.
Das wäre, wie wenn du fragen würdest, wie du ein Klassendiagram für DOS-Batch-Dateien machst: Gar nicht!Du widersprichst dir doch nachher selber. Nichts spricht dagegen, in C objektorientiert zu denken. Objektorientierung ist primär eine Denkweise, keine Eigenschaft der Sprache. Manche Sprachen kommen einem bei der Umsetzung einer solchen Denkweise entgegen, C eher nicht. Das heißt nicht, dass es nicht geht, es geht sogar sehr gut. Fast jedes ernstzunehmende C-Projekt ist objektorientiert entworfen.
Allerdings solltest du mal überlegen, ob du Entwurf und Programmierung nicht noch getrennter betrachtest
Genau! Hierzu bedarf es jedoch einer gewissen Abstraktionsfähigkeit seitens des Entwicklers.
-
blurry333 schrieb:
weil man bei Klassen sehr sinnvoll einen Entwurf machen kann. Aber in C wie soll ich da einen Entwurf machen ?
Wenn es nicht objektorientiert sein soll, dann kannst du die einzelnen Prozeduren als Struktogramme aufmalen. Bei größeren Softwareprojekten läuft es aber letztlich immer auf Objekte hinaus, die über definierte Schnittstellen miteinander kommunizieren.
Nimm den Windows-Kernel: programmiert wurde er in C, aber sein Aufbau ist objektorientiert. Er beinhaltet sogar Vererbung (z.B. auf der Treiberebene). Im Gegensatz zu C++, das Oo-Konzepte schon mitbringt, bedingt OOP in C ein Framework, das seinerseits aus C-Code besteht. Aber es gibt sogar fertige Libraries um OOP in C zu machen.