Zitat von
dml
Doch letzlich blieb es für mich, das es kein OOP war, sodern der Versuch OOP in C zu realisieren.
Ich finde es mehr eine Frage der jeweiligen Konzepte.
Vererbung und Polymorphismus brauchen Tricks, aber zum Beispiel das Zusammenfassen von abhängigen Daten in Structs und darauf operierende Methoden sind ohne jegliche Kunstgriffe möglich.
Nehmen wir als einfaches Beispiel ein 2D Rechteck.
In C++
Code:
class Rect
{
public:
Rect() : m_x(0), m_y(0), m_w(-1), m_h(-1) {}
~Rect() {}
int x() const { return m_x; }
// usw.
bool isValid() const { return m_w >= 0 && m_h >= 0 }
private:
int m_x;
// usw.
};
In C
Code:
struct Rect
{
int x;
// usw;
}
// constructor helper
void rect_init(struct Rect *rect)
{
rect->x = 0;
rect->y = 0;
rect->w = -1;
rect->h = -1;
}
// constructor
struct Rect *rect_new()
{
struct Rect *rect = (Rect*)malloc( sizeof( Rect ) );
rect_init( rect );
return rect;
}
// destructor
void rect_delete(struct Rect *rect)
{
if ( rect ) free( rect );
}
// getter
int rect_x(struct Rect *rect)
{
return rect->x;
}
int rect_isValid(struct Rect *rect)
{
return rect->w >= 0 && rect->h >= 0;
}
Ciao,
_
Lesezeichen