Programmierung in Ruby

Der Leitfaden der Pragmatischen Programmierer

class Class
Parent: Module
Version: 1.6

Index:

inherited new new superclass


Ruby-Klassen sind Objekte erster Klasse---jedes ist eine Instanz der Klasse Class.

Wenn eine neue Klasse erstellt wird (typischerweise mit class Name ... end), wird ein Objekt vom Typ Class generiert und einer globalen Konstante zugewiesen (in diesem Fall Name). Wenn Name.new aufgerufen wird, um ein neues Objekt zu instanziieren, wird die new-Methode in Class ausgeführt. Dies kann anhand der Überladung von new in Class gezeigt werden:

class Class
   alias oldNew  new
   def new(*args)
     print "Creating a new ", self.name, "\n"
     oldNew(*args)
   end
 end

 class Name  end

 n = Name.new
ergibt:
Creating a new Name

class methods
inherited eineKlasse.inherited( eineUnterklasse )

Dies ist eine Singeleton-Methode (je Klasse), die von Ruby aufgerufen wird, wenn eine Unterklasse von eineKlasse generiert wird. Die neue Unterklasse wird als Parameter übergeben.

class Top
  def Top.inherited(sub)
    print "New subclass: ", sub, "\n"
  end
end

class Middle < Top end

class Bottom < Middle end
ergibt:
New subclass: Middle
New subclass: Bottom

new Class.new( eineOberklasse=Object ) -> eineKlasse

Generiert eine neue anonyme (unbenannte) Klasse mit der angegebene Oberklasse (bzw. Object, wenn kein Parameter übergeben wird).

instance methods
new eineKlasse.new( [args]* ) -> einObjekt

Generiert ein neues Objekt der Klasse eineKlasse. Anschliessend wird die initialize-Methode dieser Klasse mit den Parametern args aufgerufen.

superclass eineKlasse.superclass -> eineOberklasse oder nil

Gibt die Oberklasse von eineKlasse bzw. nil zurück.

Class.superclass » Module
Object.superclass » nil


Extracted from the book "Programming Ruby - The Pragmatic Programmer's Guide"
Übersetzung: Carsten Schinzer
Für das englische Original:
© 2000 Addison Wesley Longman, Inc. Released under the terms of the Open Publication License V1.0. That reference is available for download.
Diese Lizenz sowie das Original vom Herbst 2001 bilden die Grundlage der Übersetzung
Es wird darauf hingewiesen, dass sich die Lizenz des englischen Originals inzwischen geändert hat.
Für die deutsche Übersetzung:
© 2002 Jürgen Katins
Der Copyright-Eigner stellt folgende Lizenzen zur Verfügung:
Nicht-freie Lizenz:
This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.
Freie Lizenz:
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".