Softwareentwicklung ohne Objektorientierung - Wie geht das?

Status
Nicht offen für weitere Antworten.

Jay1980

Bekanntes Mitglied
Servus,

ich lerne an der Uni objektorientierte Software-Entwicklung mit Anforderungsermittlung, Analyse, Grobentwurf, Feinentwurf usw..

Nun interessiere ich mich dafür, wie der Software-Entwicklungsprozess ohne Objektorientierung aussieht - gibt es da ein Buch darüber was ihr mir empfehlen koennt? Es gibt bestimmt diverse Programmierparadigmen mit denen man Software entwickeln kann, aber welche Vorgehensweise hat sich etwa für prozedurale Programmierung bewährt?

Ich bin gespannt.
 

Jay1980

Bekanntes Mitglied
Servus,

ich meine damit, dass ich ja bei der OO ein Klassenmodell aus Anwendungsfällen und meinem gebrauchten Objektgeflecht immer weiter zusammenschuster und dass dann transformiere.

Jetzt ist es ja so, dass bei der imperativen Programmierung, vor allem in Variablen gespeichert wird, da haette mich jetzt eben nun interessiert, wie die dann zu ihrem System kommen, Klassenmodelle wird es da ja nicht geben, wie hält man da den Überblick, wie transformiert man da - das war es, was mich interessiert.

Habe auch schon ein Buch (als PDF verfügbar) gefunden, da ist ein Beispiel drin, wenn ich da auch noch auf weiteres Material hoffe.
www.asc.tuwien.ac.at/eprog/download/schmaranz.pdf
 
M

maki

Gast
ich lerne an der Uni objektorientierte Software-Entwicklung mit Anforderungsermittlung, Analyse, Grobentwurf, Feinentwurf usw..
Riecht nach Wasserfallmodell/V-Modell/Lemmingmodell.

Jetzt ist es ja so, dass bei der imperativen Programmierung, vor allem in Variablen gespeichert wird, da haette mich jetzt eben nun interessiert, wie die dann zu ihrem System kommen, Klassenmodelle wird es da ja nicht geben, wie hält man da den Überblick, wie transformiert man da - das war es, was mich interessiert.
Du meinst Prozedurale Programmierung.
Im Prinzip ist die Analyse nicht so unterschiedlich, aber dass eben Verhalten und Daten getrennt werden, oft fängt man mit dem Datenmodell (ER Modell) an, dann kümmert man sich um das Verhalten. Fluss Diagramme etc., also vieles aus der Pre-UML Zeit kann da genutzt werden.
 

Landei

Top Contributor
Es gibt weiterhin logische oder deskiptive Sprachen (Prolog, Q), stackbasierte Sprachen (Forth, Joy, Cat) und ziemlich seltsame "esoterische" Sprachen (brainfuck, Malbolge, INTERCAL, BeFunge...), siehe dazu auch Cat's Eye Technologies: Esoteric Topics in Computer Programming . Dann gibt es noch Sprachen, die zwar prinzipiell "OO" sind, dieses Konzept aber mehr oder weniger verallgemeinern und/oder mit anderen Konzepten verquirlen (Beta)
 
Zuletzt bearbeitet:

NDEBUG

Mitglied
Wenn ich deine Frage richtig interpretiere fragst du "wie kann man ohne Klassen" programmieren und das klingt natürlich irgendwie komisch für jemanden der sehr viel Erfahrung mit C hat (das Schmaranz Buch ist übrigens gut, wenn man da ein bißchen Einblick braucht).
Also wo fange ich an? Hmm, bevor ich mir hier jetzt die Finger wund schreibe, warte ich ma lieber noch ma ein Feedback von dir ab, ob ich deine Frage richtig verstanden hab.
 

Jay1980

Bekanntes Mitglied
Wenn ich deine Frage richtig interpretiere fragst du "wie kann man ohne Klassen" programmieren und das klingt natürlich irgendwie komisch für jemanden der sehr viel Erfahrung mit C hat (das Schmaranz Buch ist übrigens gut, wenn man da ein bißchen Einblick braucht).
Also wo fange ich an? Hmm, bevor ich mir hier jetzt die Finger wund schreibe, warte ich ma lieber noch ma ein Feedback von dir ab, ob ich deine Frage richtig verstanden hab.

Ja das hast du richtig verstanden, ich habe schon mal etwas geschaut, im Schmaranz Buch ist auch das Beispiel mit einem Kaffeeautomaten, aber wenn mir da einer mit Erfahrung kurz sagen will, was ihm durch den Kopf geht, wenn er Software in C bauen, nur zu. Ich werde es gespannt lesen und vielleicht ist es ja eine passende Grundlage, wenn ich mir mal ein in C geschriebenes Programm anschaue und verstehen will.
 

Antoras

Top Contributor
OOP ist nur ein Konzept nach dem man programmieren kann - es ist dabei nicht auf eine Sprache bezogen. Java beispielsweise stellt syntaktischen Zucker bereit, der einem Menschen das Programmieren vereinfacht und einem Menschen vor allem ermöglicht vom Denken einer Maschine wegzukommen. Dies bedeutet aber keinesfalls, dass man in C nicht auch objektorientiert programmieren kann. Es mag manchmal ein wenig "fricklig" sein und objektorientierte Stilmittel wie Kapselung sind nicht hundertprozentig umsetzbar - aber es geht.

Dein Compiler macht im Grunde auch nichts anderes als dein OO-Programm in den Code umzuwandeln, der von deinem Computer verstanden werden kann.

OO bedeutet in vieler Hinsicht etwas zu programmieren, bei dem im Vordergrund steht was gemacht und nicht wie dies getan werden soll.
 

NDEBUG

Mitglied
wenn ich mir mal ein in C geschriebenes Programm anschaue und verstehen will.

Hier ein paar Tips zum Verstehen von C Programmen. Ich setze mal vorraus, daß du die Sprache an sich verstehst und auch mit Pointern usw. keine Probleme hast. Nach dem Schmaranz Buch solltest du aber kein Problem haben Pointer, Datenstrukturen, Funktionspointer usw. zu erkennen und zu verstehen.

1. Schau dir die ".h" Dateien an. Hier werden alle Deklarationen, Definitionen, etc. vorgenommen die ein Modul nach außen exportiert. Zum guten Programmierstil in C gehört, daß zu jeder Quellcodedatei ".c" auch eine Headerdatei ".h" gehört. In dieser Headerdatei findest du alle Funktionsdeklarationen, Definitionen, Structs, Enums, etc. die von anderen Programmteilen gebraucht werden, um mit diesem Speziellen Modul arbeiten zu können. Jede Funktion die hier nicht deklariert wurde, aber in der zugehörigen ".c" Datei implementiert ist, ist nach außen nicht sichtbar und ist nur zur Erledigung von Aufgaben innerhalbs des Moduls gedacht.

2. Schau besonders auf die komplexen Datentypen! Also auf die structs gucken. In großen Programmen dreht sich nahezu alles um die structs. Das sind wenn du so willst deine Klassen mit den Instanzvariablen. Schau dir an welche Variablen im struct sind und auch besonders ob und was für pointer darin enthlanten sind.

3. Hast du einen Überbklick über ein struct schaust du dir die Funktionen, die damit zusammenhängen an (die die nach außen exporiert werden und in der ".h" stehen). Damit solltest du nun auch ein Überblick haben, wie der Programmierer sich das Arbeiten mit seiner Datenstruktur gedacht hat. Gleichzeitig solltest du damit auch rausfinden wie der Programmierer eine eventuelle Collection mit der Datenstruktur umgesetzt hat. (LinkedList, Stack, Maps, etc. sind in C noch Handarbeit!)

4. Nun wenn nicht bereits geschehen, schaust du dir die ".c" Datei an. Hier findest du nun die Implementierung im Detail. Außerdem eventuell nötige Hilfsstrukturen, die zum Ausführen der Aufgabe intern benötigt werden.

5. Jetzt gehst du zur nächsten ".h" Datei und machst das ganze wieder und so weiter. Wenn du durch alle Programmteile durch bist, solltest du nun ein gutes Verständnis für die einzelnen Teile haben und das Bild wie das Programm aufgebaut ist und die verschiedenen Teile miteinander vernetzt sind sollte sich vervollständigen.

6. Geh den Programmablauf Schritt für Schritt durch. Jetzt wo du die wichtigen Teile kennst, sollte der Programmablauf leichter verständlich sein.

Absolut notwendig um fortgeschrittene C-Programme zu verstehen sind verschiedene Elemente. Du solltest generell die Sprache kennen. Dich mit Funktionspointern wohlfühlen. Datenstrukturen, wie Listen, Maps, Hashing, Ressourcebanken usw. sollten dir nicht fremd sein. Callbacks, Events, Mappings sind auch alles Sachen, die in C Programmen sehr häufig Verwendung finden.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben