Loading AI tools
De Wikipédia, l'encyclopédie libre
GObject est une interface de programmation et une bibliothèque logicielle multiplate-forme publiée sous licence libre (LGPL), qui offre la possibilité de manipuler des objets en langage de programmation C, ainsi qu'une palette d'objets élémentaires. Elle peut être utilisée dans d'autres langages de programmation.
Développé par | Team GTK+ |
---|---|
Dernière version | 2.30.2 |
Version avancée | 2.31.18 |
É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 |
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 la gestion des données, de la mémoire et des algorithmes remplaçant le code de bas niveau. Alors que le reste de la GLib a pour but d'apporter au C ces fonctionnalités haut-niveau, GObject y introduit quant à lui la programmation 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 sous Mac 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 de libc (voir bibliothèque standard du C et glibc) et de GLib, offre des fonctionnalités aussi diverses que la programmation par événements, des adaptateurs de type, un système de gestion d'exceptions et un algorithme de ramasse-miettes. Les types d'objet sont d'abord créés par le Moteur d'exécution. Cela confère aux classes objet une capacité d'introspection, quoiqu'au détriment de la sécurité du typage.
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 en Java ou en C#. 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 les méthodes ou la table virtuelle des appels et les variables statiques associées ; la seconde contient les instanciations, par exemple les variables d’instance. Contrairement aux langages C++, C# ou Java, il n'y a pas de spécificateurs de portée comme public, 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 plusieurs macros 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 un pré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 du framework GObject sont l'absence d’espace de noms, l'impossibilité de surcharger les opérateurs et méthodes ainsi que la gestion encore « artisanale » des exceptions.
Dans les premières versions de la bibliothè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 le framework 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 en ligne 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 applications open source, à commencer évidemment par GTK+ : il y a là tous les logiciels développés pour l'environnement Gnome : GIMP, Pango, nautilus et bien d'autres.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.