# Programmierung: prozedural -> objektorientiert



## puzzle123 (23. Okt 2007)

Moinsen,

in der Schule habe ich eine Projekt - Aufgabe bekommen. Ich muss ein in C geschriebenes Quellcode analysieren, egal welches, und dann in Java objektorientiert programmieren. Meinem Lehrer geht es in erster Linie darum, wie man überhaupt sowas umsetzen kann.

- Wie kann man bei so etwas überhaupt vorgehen?

Ich würde mich sehr über Links, Tipps freuen.


----------



## Wildcard (23. Okt 2007)

1. verstehen was das Programm macht
2. Eine objektorientierte Struktur überlegen
3. Programmieren


----------



## Jango (3. Nov 2007)

4. Eventuell den C-Code posten, damit man präziser helfen kann.


----------



## Gast (9. Nov 2007)

An sich sind es natürlich nur die schon genannten Punkte, die nötig sind. 
Sehr allgemein ist es aber nicht weiter schwer ein C-Programm in eine OO-Form zu überführen. Viele der Ideen und Elemente findest Du ebenso in der imperativen wie in der OO-Welt. 
Funktionen können in Methoden überführt werden, für Makros muss das sogar getan werden. Alles was über eine Header-Datei zugänglich gemacht wird kannst Du als öffentlich ansehen, da dass eine Möglichkeit des Imports erlaubt, Dinge die nur innerhalb der .c-Datei definiert werden sind hingegen nicht öffentlich (ich glaube eine sehr viel feinere Differenzierung kennt C nicht). 
Auch globale Variablen können einfach in eine entsprechende Klassen bzw. Instanzvariable überführt werden. Auch Objekte kann man in C nachbilden, siehe z.B. das JNI. Man verwendet dort einfach einen Verweis auf ein Datum, dass dem Zustand eines Objekts entspricht. Letztlich kann man dann, in C, eine Methode so definieren, dass es sich um eine Funktion handelt, die immer ein solches Datum (den Zustand des Objekts) übergeben bekommt. So arbeitet z.B. auch Delphi (Object Pascal). Entsprechend könntest Du solche Konstrukte sehr viel schöner in Objekte überführen. 
Die eigentlichen Vorteile der OOP kommen aber nicht aus der Verwendung von Objekten heraus, sondern bedingen ein gutes OO-Design. Da kann man kaum pauschal sagen, wie ein beliebiges C-Programm am Besten in eine OO-Variante überführt werden sollte. Das ist schon deshalb nicht möglich, da es i.d.R. mehr als einen Weg gibt der nicht falsch ist.


----------

