<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GObject</id>
	<title>GObject - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GObject"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GObject&amp;action=history"/>
	<updated>2026-05-21T14:11:44Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=GObject&amp;diff=261169&amp;oldid=prev</id>
		<title>imported&gt;MTheiler: Einzelnachweise</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GObject&amp;diff=261169&amp;oldid=prev"/>
		<updated>2025-11-25T20:38:55Z</updated>

		<summary type="html">&lt;p&gt;Einzelnachweise&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                            = &lt;br /&gt;
|Logo                            = &lt;br /&gt;
|Screenshot                      = [[Datei:GObject example.png|300px|Beispielcode]]&lt;br /&gt;
|Beschreibung                    = GObject-Beispielcode: Hinzufügen der Eigenschaft &amp;lt;code&amp;gt;file-size&amp;lt;/code&amp;gt; zu einer Klasse.&lt;br /&gt;
|Maintainer                      = &lt;br /&gt;
|Programmiersprache              = [[C (Programmiersprache)|C]]&lt;br /&gt;
|Hersteller                      = [https://www.gtk.org/development.php#Team Das GTK+-Team]&lt;br /&gt;
|Erscheinungsjahr                = 2002&lt;br /&gt;
|AktuelleVersion                 = &amp;lt;!-- WikiData --&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum    = &amp;lt;!-- WikiData --&amp;gt;&lt;br /&gt;
|AktuelleVorabVersion            = &lt;br /&gt;
|AktuelleVorabVersionFreigabeDatum= &lt;br /&gt;
|Betriebssystem                  = [[Unix]], [[Microsoft Windows|Windows]], [[OS/2]], [[BeOS]]&lt;br /&gt;
|Kategorie                       = [[Programmbibliothek]]&lt;br /&gt;
|Lizenz                          = [[GNU Lesser General Public License|LGPL]]&lt;br /&gt;
|Deutsch                         = nein&lt;br /&gt;
|Website                         = [https://www.gtk.org/ www.gtk.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GObject&amp;#039;&amp;#039;&amp;#039; ist eine unter der [[Freie Software|freien]] Lizenz [[GNU Lesser General Public License|LGPL]] veröffentlichte [[Programmbibliothek]] und ein [[Framework]], das [[Objektorientierte Programmierung|objektorientiertes Programmieren]] in der [[C (Programmiersprache)|Programmiersprache C]] ermöglicht und auf vielen Plattformen einsetzbar ist.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
Der Ansatz von GObject entspricht dem von [[Objective-C]], das für Anwendungsentwicklung unter [[macOS]] &amp;#039;&amp;#039;(siehe [[Cocoa (API)|Cocoa]])&amp;#039;&amp;#039; verwendet wird. GObject ist das Fundament aller [[GTK+]]-/[[Gnome]]-Anwendungen und die Basisklasse aller GTK-/Gnome-[[Klasse (Objektorientierung)|Klassen]]. GObject hängt lediglich von der &amp;#039;&amp;#039;libc&amp;#039;&amp;#039; &amp;#039;&amp;#039;(siehe [[Standard C Library]]/[[glibc]])&amp;#039;&amp;#039; sowie der [[GLib]] ab. GObject stellt weitere Funktionalitäten wie [[Ereignis (Programmierung)|Events]], [[Autoboxing|Boxing von Datentypen]], Fehlerbehandlung und das [[Referenzzählung|Referenzzählen]] bereit. Objekttypen werden erst zur [[Laufzeit (Informatik)|Laufzeit]] registriert. Damit wird eine gute [[Reflexion (Programmierung)|Introspektion]] der Klassen ermöglicht, allerdings auf Kosten fehlender statischer [[Typsicherheit]].&lt;br /&gt;
&lt;br /&gt;
Die Objektorientierung bei GObject ermöglicht im Gegensatz zu [[C++]] keine [[Mehrfachvererbung]]. Stattdessen werden [[Schnittstelle (Objektorientierung)|Interfaces]] wie bei [[Java (Programmiersprache)|Java]] oder [[C-Sharp|C#]] eingesetzt. Eine Klasse in GObject wird durch mindestens zwei [[Verbund (Datentyp)|C-Strukturen]] implementiert: Eine davon beinhaltet die Informationen der Klasse, zum Beispiel die [[Methode (Programmierung)|Methoden]]/[[VTable]] und statische [[Membervariable]]n. Die zweite beinhaltet als Instanzinformationen zum Beispiel die Membervariablen. Es gibt keine [[Zugriffsmodifikator]]en &amp;#039;&amp;#039;public, protected, private&amp;#039;&amp;#039; wie in den Programmiersprachen C++, Java oder C#; private Klassen-Member können aber durch zusätzliche verborgene C-Strukturen implementiert werden. Diese privaten Strukturen werden nicht in den öffentlichen [[Header-Datei]]en der Klasse definiert. Bei der Erstellung einer GObject-Klasse müssen viele [[Makro]]s und Initialisierungsfunktionen manuell geschrieben werden. Zur Erleichterung beim Schreiben von Klassen gibt es das Werkzeug [[GOB2]] (GObject Builder), welches eine von Java entlehnte Syntax anbietet. GOB2 fungiert als [[Präprozessor]], welcher aus den Objektvorlagen Code für den C-Compiler generiert. Eine Alternative zu GOB2 stellt die Programmiersprache [[Vala (Programmiersprache)|Vala]]/[[Genie (Programmiersprache)|Genie]] dar, welches neben dem Codegerüst auch in der Lage ist, den gesamten Quelltext aus C#-ähnlicher Sprache zu übersetzen.&lt;br /&gt;
&lt;br /&gt;
Wichtige Einschränkungen des GObjekt-Frameworks sind die fehlende Unterstützung von [[Namensraum|Namensräumen]], keine Möglichkeit zum [[Überladen]] von Operatoren und Methoden sowie die rein „manuelle“ [[Ausnahmebehandlung]].&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Ursprünglich war das Objektsystem von GTK eng mit der Benutzerschnittstelle von GTK verwoben. Erst zur Version 2.0 von GTK/Gnome wurde es in ein eigenes Framework ausgelagert, damit dieses Objektsystem auch ohne Einbindung von GTK für beispielsweise reine [[kommandozeile]]ngesteuerte Anwendungen und Serveranwendungen ohne [[grafische Benutzeroberfläche]] verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
== Einsatz ==&lt;br /&gt;
Die Kombination von C und GObject wird in vielen erfolgreichen [[Open Source|Open-Source]]-Projekten eingesetzt, allen voran [[GTK+]] und damit schließlich dem kompletten [[Gnome]]-Desktop sowie [[GIMP]], [[Pango]] und vielen anderen.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* &amp;#039;&amp;#039;Das GTK+/GNOME Entwickler Handbuch&amp;#039;&amp;#039;, [[Matthias Warkus]] 2008, dpunkt verlag – Fundierte Einführung in GObject-Implementierung in Kapitel drei&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://developer.gnome.org/gobject/ GObject API-Dokumentation] (englisch)&lt;br /&gt;
* [https://www.jirka.org/gob.html GOB2 – GObject Builder] (englisch)&lt;br /&gt;
* [https://wiki.gnome.org/Projects/Vala Vala Project – GObject-Präprozessor und Programmiersprache] (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Gobject}}&lt;br /&gt;
[[Kategorie:C-Bibliothek]]&lt;br /&gt;
[[Kategorie:Objektorientierte Programmierung]]&lt;br /&gt;
[[Kategorie:Freedesktop.org]]&lt;/div&gt;</summary>
		<author><name>imported&gt;MTheiler</name></author>
	</entry>
</feed>