<?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, 2018.</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는 <em>인트로스펙션</em>이 가능한데, GObject 시스템에 정의 클래스 형식, 지원 메서드, 시그널 등을 요청할 수 있습니다. 그놈 언어 바인딩은 인트로스펙션 정보의 상부에 구성합니다. 다른 프로그래밍 언어에서 그놈 API를 호출하게 직접 래퍼를 작성하는 대신, 언어 바인딩은 GObject부터 자체적으로 만든 래퍼까지 인트로스펙션 정보를 활용합니다.</p>

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

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

</page>
