<?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="ko">
  <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 기반 객체 및 형식 시스템</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>조성호</mal:name>
      <mal:email>shcho@gnome.org</mal:email>
      <mal:years>2016, 2017.</mal:years>
    </mal:credit>
  </info>

<title>GObject</title>

  <p>GObject는 C 프로그램에 객체 및 형식 시스템을 도입하는 <link xref="tech-glib">GLib</link> 라이브러리의 일부입니다. C 언어에서 객체 또는 클래스를 (문법적으로) 제공하지는 않지만, GObject는 객체지향 C 프로그램을 작성할 수 있게 해줍니다.</p>

  <p>GObject에서는 근본적으로 정수형 및 문자열 형식을 전달하는 전체 형식 시스템의 근간인 GType을 제공합니다. 모든 기타 클래스의 기반 클래스인 GObject 그 자체가 있습니다. 어떤 흥미로운 동작이 일어났을 때 호출자에게 알리는 <em>시그널</em>을 뿌릴 수 있습니다. 예를 들어 <code>Button</code> 객체는 눌리고 뗀 상황을 나타내는 <code>clicked</code> 시그널을 보낼 수 있습니다.</p>

  <p>
    GObject is <em>introspectable</em>, which means that you can ask the
    GObject system for the class types that are defined, the methods they
    support, their signals, etc.  GNOME's language bindings are built on top of
    this introspection information.  Instead of writing wrappers by hand to let
    GNOME APIs be called from other programming languages, language bindings
    use the introspection information from GObject to auto-generate those
    wrappers themselves.
  </p>

  <p>보통 그놈 기반으로 객체 지향 프로그래밍을 진행할 때 GObject 자체를 신경 쓸 필요가 없습니다. 그러나 시그널/슬롯 같은 GObject 개념에 익숙하면, 그놈 프로그래머 입장에서 편해집니다.</p>

  <list style="compact">
    <item><p><link href="http://developer.gnome.org/gobject/stable/">GObject 참고 설명서</link></p></item>
  </list>

</page>
