<?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="pt-BR">
  <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>Sistema de objetos e tipos baseados em C com sinais e slots</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Enrico Nicoletto</mal:name>
      <mal:email>liverig@gmail.com</mal:email>
      <mal:years>2009</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Rafael Fontenelle</mal:name>
      <mal:email>rafaelff@gnome.org</mal:email>
      <mal:years>2013, 2014, 2016, 2017</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Isaac Ferreira Filho</mal:name>
      <mal:email>isaacmob@riseup.net</mal:email>
      <mal:years>2018</mal:years>
    </mal:credit>
  </info>

<title>GObject</title>

  <p>GObject é a parte da biblioteca <link xref="tech-glib">GLib</link> que fornece um sistema de objetos e tipos para programas C. Apesar de C como um linguagem não fornece objetos ou classes, GObject possibilita escrever programas C orientados a objetos.</p>

  <p>GObject fornece uma GType fundamental, a base para todo o sistema de tipos, a partir do qual tipos como as ints e strings são derivadas. Então, há o GObject em si, a classe base para todas as outras classes. Objetos podem emitir <em>sinais</em> para notificar o chamador quando alguma coisa interessante acontecer. Por exemplo, um objeto de <code>Button</code> pode emitir um sinal de <code>clicked</code> para indicar que ele foi pressionado e liberado.</p>

  <p>GObject é <em>introspectável</em>, o que significa que você pode pedir que o sistema GObject para os tipos de classes que estão definidas, os métodos aos quais oferece suporte, seus sinais, etc. Bindings de linguagens do GNOME são compiladas sobre essa informação de introspecção. Em vez de escrever wrappers na mão para deixar APIs do GNOME serem chamadas por outras linguagens de programas, bindings de linguagem usam as informações de introspecção do GObject para gerarem automaticamente aqueles wrappers eles mesmo.</p>

  <p>Você normalmente não precisa ser preocupar com GObject em si, se você está programando para GNOME com uma linguagem orientada a objeto. Porém, se familiarizar com os conceitos do GObject, tais como sinais e slots, facilitará sua vida como um programador do GNOME.</p>

  <list style="compact">
    <item><p><link href="http://developer.gnome.org/gobject/stable/">Manual de referência do GObject</link></p></item>
  </list>

</page>
