Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server

Download:
- ZIP, ca. 6,7 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Galileo Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version jetzt bestellen
* versandkostenfrei in (D) und (A)
Pfeil 4 Einführung in Ruby
  Pfeil 4.1 Was ist Ruby?
  Pfeil 4.2 Ruby-Code ausführen
  Pfeil 4.3 Grundlagen
  Pfeil 4.4 Zahlen
  Pfeil 4.5 Zeichenketten
  Pfeil 4.6 Symbole
  Pfeil 4.7 Reguläre Ausdrücke
  Pfeil 4.8 Arrays
  Pfeil 4.9 Hashes
  Pfeil 4.10 Datum und Zeit
  Pfeil 4.11 Module


Galileo Computing - Zum Seitenanfang

4.11 Module  Zur nächsten ÜberschriftZur vorigen Überschrift

Module unterscheiden sich dadurch von Klassen, dass man keine Instanz von einem Modul bilden kann und dass keine Klasse von einem Modul erben kann.

Module werden zur Bildung von Namensräumen oder als Mixins genutzt.


Galileo Computing - Zum Seitenanfang

Namensräume  Zur nächsten ÜberschriftZur vorigen Überschrift

Eindeutige Klassennamen

Manchmal ist es erforderlich, dass wir Klassen in unterschiedlichen Zusammenhängen gleich benennen müssen, die Klassen an sich aber unterschiedlich definiert sind. Diesen Konflikt können wir lösen, indem wir diese Klassen innerhalb eines Moduls definieren. Durch das Modul als Namensraum werden die Klassennamen wieder eindeutig, weil der Aufruf der Klassen über Modulname::Klassenname erfolgt:

module Railsair

  class Info
    def name
      puts "RailsAir"
    end

    def home_airport
      puts "Luxemburg"
    end

  end

end


module PHPAir

  class Info
    def name
      puts "PHPAir"
    end

    def city
      puts "Berlin"
    end

  end

end

info = Railsair::Info.new
info.name
# => RailsAir

Das heißt, Module dienen dazu, Dinge zusammenzufassen. In einem Modul können mehrere Klassen definiert werden.

Module in Rails
Überall in Rails trifft man auf Module. Zum Beispiel erben die Model-Klassen von der Klasse Base , die in dem Modul ActiveRecord definiert ist: ActiveRecord::Base .


Galileo Computing - Zum Seitenanfang

Mixins  topZur vorigen Überschrift

Zusätzliche Methoden

Es gibt zwei Möglichkeiten, einer Klasse zusätzliche Methoden zur Verfügung zu stellen: entweder über Vererbung oder über Mixins. Jede Klasse kann maximal von einer weiteren Klasse erben. Das heißt, sollten weitere Methoden weiterer Klassen benötigt werden, können wir das über Mixins lösen.

Mixin bedeutet, dass die Methoden des Moduls in eine Klasse hineingemischt werden. Die Methoden des Moduls stehen dann den Objekten der Klassen, die das Modul inkludieren, so zur Verfügung, als ob sie innerhalb der Klasse definiert wären.

Vorteil

Ein Vorteil von Mixins ist, dass auf diese Art und Weise Methoden innerhalb mehrerer Klassen verwendet werden können. In unserem Beispiel sollen die beiden Klassen Customer und Book eine Methode rating_stars nutzen können. Die Klasse Customer erbt aber von der Klasse Person, der diese Methode nicht zur Verfügung stehen soll. Das heißt, wir können dieses Problem lösen, indem wir die Methode rating_stars in einem Modul definieren, das sowohl von der Klasse Customer als auch von der Klasse Book inkludiert wird:

module Rateable
  attr_accessor :raWenn Sie, wie im ersten Beispiel gezeigt, einen Hash erzeugen?ting

  def rating_stars
    '*' * @rating unless @rating.nil?
  end
end

class Person
  attr_accessor :name
end

class Customer < Person
  attr_accessor :cutomer_nr
  include Rateable
end

class Book
  attr_accessor :title, :author
  include Rateable
end

customer = Customer.new
customer.name = "Lee"
customer.rating = 3
puts customer.rating_stars
# => ***

book = Book.new
book.title = "Ruby On Rails"
book.rating = 5
puts book.rating_stars
# => *****
Mixins in der Klasse Array
Die Klasse Array enthält zum Beispiel scheinbar die Methode map . Dabei handelt es sich aber um eine Methode des Moduls Enumerable , das von der Klasse Array inkludiert wird und auch von weiteren Klassen inkludiert werden kann.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Ruby on Rails 2






Ruby on Rails 2
Jetzt bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Zend Framework






 Zend Framework


Zum Katalog: AJAX






 AJAX


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: CSS-Layouts






 CSS-Layouts


Zum Katalog: JavaScript und Ajax






 JavaScript und Ajax


Zum Katalog: Professionelles Webdesign mit (X)HTML und CSS






 Professionelles Webdesign
 mit (X)HTML und CSS


Zum Katalog: Suchmaschinen-Optimierung






 Suchmaschinen-Optimierung


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de