Menu
Coddy logo textTech

Klassen definieren

Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 2 von 57.

Eine class beschreibt eine Art von Objekt: was es weiß und was es tun kann. class Dog ... end deklariert die Klasse, und Dog.new erstellt ein Objekt dieser Klasse, eine Instanz. Eine mit def innerhalb der Klasse definierte Methode kann für jede Instanz aufgerufen werden:

class Dog
  def speak
    "Woof"
  end
end

rex = Dog.new
puts rex.speak
puts rex.class

Ausgabe:

Woof
Dog

new erstellt das Objekt und ruft anschließend dessen initialize-Methode mit den Argumenten auf, die du an new übergeben hast. initialize richtet das Objekt ein, normalerweise indem die Argumente in Instanzvariablen gespeichert werden, deren Namen mit @ beginnen:

class Dog
  def initialize(name)
    @name = name
  end

  def speak
    "#{@name} says Woof"
  end
end

puts Dog.new("Rex").speak
puts Dog.new("Bella").speak

Ausgabe:

Rex says Woof
Bella says Woof

Methoden nehmen wie jede Ruby-Methode Argumente entgegen und geben den Wert ihres letzten Ausdrucks zurück. Jeder Aufruf von new erstellt ein separates Objekt:

class Calculator
  def add(a, b)
    a + b
  end

  def average(numbers)
    numbers.sum.to_f / numbers.size
  end
end

calc = Calculator.new
puts calc.add(2, 3)
puts calc.average([1, 2, 3, 6])

Ausgabe:

5
3.0

Klassennamen sind in CamelCase geschriebene Konstanten (BankAccount); Methoden- und Variablennamen verwenden snake_case (deposit_money). new überprüft seine Argumente anhand von initialize, daher löst ein fehlendes Argument ArgumentError aus:

class Point
  def initialize(x, y)
    @x = x
    @y = y
  end
end

begin
  Point.new(1)
rescue ArgumentError => e
  puts e.message
end

Ausgabe:

wrong number of arguments (given 1, expected 2)
challenge icon

Aufgabe

Einfach

Vervollständige die Klasse Formatter. Ihre Methode title(text) gibt den Text zurück, wobei jedes Wort großgeschrieben wird (the hobbit ergibt The Hobbit), slug(text) gibt die Wörter in Kleinbuchstaben zurück, verbunden durch - (the-hobbit), und initials(text) gibt den ersten Buchstaben jedes Wortes in Großschreibung zurück (TH).

Der bereitgestellte Code erstellt ein Formatter-Objekt und gibt für jede Eingabezeile die drei Ergebnisse in separaten Zeilen aus.

Dein Code gehört in formatter.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

require_relative 'formatter'

# Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input = []
while (line = gets)
  input << line.chomp
end
formatter = Formatter.new
input.each do |line|
  puts formatter.title(line)
  puts formatter.slug(line)
  puts formatter.initials(line)
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Ruby-Compiler