====== Grundlegende Implementierungen ====== Dieser Schritt wird ganz einfach: Wir definieren unsere privaten Strukturen und geben GObject den Namen unseres GObject an. ===== Die private Struktur ===== Zuerst füllen wir unsere ''.c'' mit etwas Inhalt: tutorial-tier.c /* * Copyright- und Lizenzinformationen */ #include "tutorial-tier.h" \\ Das sollte jedem von euch klar sein. Weiter geht es mit der Definition der privaten Struktur. Wir erinnern uns: C ist __keine__ objektorientierte Sprache. Daher sind alle Member einer Struktur jederzeit von jedem __veränderbar__. Allerdings gehört //[[cpp:class:private|Information Hiding]]// zu den Grundprinzipien des klassenbasierten Programmierens. Da behilft man sich eines Tricks: Man definiert eine eigene Struktur für die privaten Member static in der .c Datei. tutorial-tier.c static struct _TutorialTierPrivate { gint alter; gchar *ruf; }; \\ Damit hätten wir unsere private Struktur definiert. Doch ist es damit noch nicht getan: tutorial-tier.c #define TUTORIAL_TIER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), TUTORIAL_TYPE_TIER, TutorialTierPrivate)) Dieses Makro werden wir im nächsten Kapitel einsetzen. ===== Das GObject definieren ===== Auch dieser Schritt ist schnell erledigt: 1 Zeile Code. tutorial-tier.c G_DEFINE_TYPE(TutorialTier, tutorial_tier, G_TYPE_OBJECT); Zuerst geben wir den Namen unserer Klasse an, dann das Präfix für Methoden (siehe vorheriges Kapitel). Schließlich bestimmen wir das Basisobjekt. **Hinweis:** Jede Klasse muss mindestens von GObject abgeleitet werden! Doch was tut dieses Makro? * Es definiert die ''tutorial_tier_get_type'' Funktion * Es setzt einen Pointer auf die Basisklasse (zu finden in der Struktur ''_TutorialTier'' im Header) Damit wäre dieser (zugegeben sehr kleine) Schritt vollendet. Im nächsten Kapitel definieren wir die Erstellungsroutinen für unser GObject. ====== ======
**[[gui:gtk:gobject:header|zurück]] || [[gui:gtk:start|hoch zur Startseite]] || [[ gui:gtk:gobject:construction |weiter]]**