Rheinwerk Computing < openbook > Rheinwerk 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
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
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version Jetzt Buch 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


Rheinwerk 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.


Rheinwerk 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 .


Rheinwerk 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.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Ruby on Rails 2
Ruby on Rails 2
Jetzt Buch bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern