Seitenleiste

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 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.