Cet article est uneébauche concernant unlogiciel libre.

Les informations figurant dans cet article ou cette section doivent être reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes »().
| Développé par | Team GTK+ |
|---|---|
| Dernière version | 2.30.2 |
| Version avancée | 2.31.18 |
| Dépôt | gitlab.gnome.org/GNOME/glib.git |
| Écrit en | C |
| Environnement | Unix,Windows,OS/2,BeOS |
| Langues | en |
| Type | bibliothèque de composants |
| Politique de distribution | open source |
| Licence | LGPL |
| Site web | gtk.org |
GObject est uneinterface de programmation et unebibliothèque logiciellemultiplate-forme publiée souslicence libre (LGPL), qui offre la possibilité de manipuler desobjets enlangage de programmationC, ainsi qu'une palette d'objets élémentaires. Elle peut être utilisée dans d'autres langages de programmation.
La plupart des langages de programmation modernes (langages de haut niveau) proposent leur propre système d'objets, ainsi que des fonctionnalités de base pour lagestion des données, de lamémoire et des algorithmes remplaçant lecode de bas niveau. Alors que le reste de laGLib a pour but d'apporter auC ces fonctionnalités haut-niveau,GObject y introduit quant à lui laprogrammation orientée objet (POO).
GObject fournit entre autres les fonctionnalités suivantes :
L’architecture de GObject fait écho à celle d’Objective-C, qui permet le développement d'applicatifs sousMac OS X (cf.Cocoa). GObject,classe de base de toutes les classes-objet de GTK+ 3.0/Gnome 3, est aujourd'hui au cœur de toutes les applications construites à partir de ces deux bibliothèques graphiques. La bibliothèque GObject, qui dépend uniquement delibc (voirbibliothèque standard du C etglibc) et deGLib, offre des fonctionnalités aussi diverses que laprogrammation par événements, desadaptateurs de type, unsystème de gestion d'exceptions et unalgorithme de ramasse-miettes. Les types d'objet sont d'abord créés par leMoteur d'exécution. Cela confère aux classes objet unecapacité d'introspection, quoiqu'au détriment de la sécurité dutypage.
L'architecture particulière de GObject interdit la faculté d'héritage multiple, contrairement àC++ ; on peut pallier cette limitation au moyen d'un protocole de classes d'interface comme on en trouve enJava ou enC#. En GObject, toute classe est implémentée par un minimum de deux types de données abstraits (des structures au sens du langage C) : l'une contient les informations relatives à la classe, par exemple lesméthodes ou la table virtuelle des appels et les variables statiques associées ; la seconde contient les instanciations, par exemple lesvariables d’instance. Contrairement aux langages C++, C# ou Java, il n'y a pas de spécificateurs de portée commepublic, protected, private ; mais on peut toujours implémenter les objets de classes réservées (private) grâce au type « structure » du langage C. Ces structures réservées n'ont pas à être déclarées dans les fichiers d'en-tête de la classe. Pour remplacer une classe de GObject, il faut souvent ré-écrire à la main plusieursmacros et fonction d'initialisation. Un outil a été mis au point pour faciliter l'écriture de classes,GOB2 (GObject Builder), dont la syntaxe emprunte beaucoup à Java. GOB2 se présente comme unpréprocesseur du compilateur C, et génère donc du code C. Une alternative à GOB2 est le langage de programmation Vala génère également du code C.
Les principales limitations duframework GObject sont l'absence d’espace de noms, l'impossibilité desurcharger les opérateurs et méthodes ainsi que la gestion encore « artisanale » des exceptions.
Dans les premières versions de labibliothèque graphique GTK, la couche de programmation objet était inextricablement liée à la couche utilisateur. La version GTK+2.0 de GTK/Gnome a marqué un saut considérable de clarification en scindant leframework objet proprement dit de la couche graphique : ainsi la couche objet précédemment élaborée est devenue utilisable aussi bien pour les applications lancées directement enligne de commande que pour les applications client-serveur ne nécessitant pas d’interface graphique.
L'usage combiné du langage C et de la bibliothèque GObject a fait le succès de plusieurs applicationsopen source, à commencer évidemment parGTK+ : il y a là tous les logiciels développés pour l'environnementGnome :GIMP,Pango,GNOME Fichiers et bien d'autres.
| Personnes | |||||||
|---|---|---|---|---|---|---|---|
| Applications |
| ||||||
| Interface utilisateur | |||||||
| Technologies | |||||||
| Communauté | |||||||
| Histoire | ||
|---|---|---|
| Licences | ||
| Logiciels | ||
| Personnalités | ||