<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="tech-gobject" xml:lang="de">
  <info>
    <link type="guide" xref="tech" group="gobject"/>

    <credit type="author copyright">
      <name>Federico Mena Quintero</name>
      <email its:translate="no">federico@gnome.org</email>
      <years>2013</years>
    </credit>

    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>

    <desc>C-basiertes Objekt- und Typ-System mit Signalen und Slots</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Mario Blättermann</mal:name>
      <mal:email>mario.blaettermann@gmail.com</mal:email>
      <mal:years>2009-2012, 2016</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Christian Kirbach</mal:name>
      <mal:email>christian.kirbach@gmail.com</mal:email>
      <mal:years>2011, 2012, 2015, 2017, 2018</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Aljosha Papsch</mal:name>
      <mal:email>al@rpapsch.de</mal:email>
      <mal:years>2012</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Tim Sabsch</mal:name>
      <mal:email>tim@sabsch.com</mal:email>
      <mal:years>2019</mal:years>
    </mal:credit>
  </info>

<title>GObject</title>

  <p>GObject ist der Teil der <link xref="tech-glib">GLib</link>-Bibliothek, der ein Objekt- und Typensystem für C-Programme bereitstellt. Obwohl C als Sprache weder Objekte noch Klassen bereitstellt, erlaubt es GObject, objektorientierte C-Programme zu schreiben.</p>

  <p>GObject stellt einen fundamentalen GType bereit, die Basis für das gesamte Typensystem, aus denen Typen wie »ints« und »strings« abgeleitet werden. Dann ist GObject selbst die Basisklasse für alle anderen Klassen. Objekte können <em>Signale</em> ausgeben, die das aufrufende Programm benachrichtigen, wenn etwas Interessantes passiert. Zum Beispiel kann ein <code>Button</code>-Objekt ein <code>clicked</code>-Signal ausgeben, um anzuzeigen, dass ein Knopf gedrückt und losgelassen wurde.</p>

  <p>GObject ist <em>inspizierbar</em>, was bedeutet, dass Sie das GObject-System nach den definierten Klassentypen, den unterstützten Methoden, den Signalen usw. fragen können. GNOMEs Sprachbindungen setzen auf diesen Inspektions-Informationen auf. Anstatt von Hand Wrapper zu schreiben, um die GNOME-APIs aus anderen Programmiersprachen aufrufen zu können, verwenden Sprachbindungen diese Informationen von GObject, um diese Wrapper automatisch selbst zu erzeugen.</p>

  <p>Sie müssen sich nicht mit GObject selbst befassen, wenn Sie für GNOME in einer objektorientierten Sprache programmieren. Dennoch kann es Ihr Leben als GNOME-Programmierer erleichtern, wenn Sie sich mit den Konzepten von GObject vertraut machen, wie Signalen und Slots.</p>

  <list style="compact">
    <item><p><link href="http://developer.gnome.org/gobject/stable/">Das Referenzhandbuch von GObject</link></p></item>
  </list>

</page>
