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.classAusgabe:
Woof
Dognew 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").speakAusgabe:
Rex says Woof
Bella says WoofMethoden 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.0Klassennamen 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
endAusgabe:
wrong number of arguments (given 1, expected 2)Aufgabe
EinfachVervollstä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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenInstanzvariablenMethoden und selfto_s und inspectRückblick – Bibliotheksausweis4Kapselung
Private MethodenGeschützte MethodenPrivate SetterZustand schützenRückblick – Verkaufsautomat7Polymorphismus und Duck Typing
PolymorphismusDuck TypingAbstrakte MethodenFälle und KlassenRückblick – Zahlungsmethoden2Getter und Setter sowie self
Leser und SchreiberBenutzerdefinierte Setterself in MethodenIdentität und GleichheitWiederholung – Kontaktliste5Vererbung
UnterklassenMethoden überschreibensuper aufrufenis_a? und VorfahrenRückblick – Gehaltsabrechnung des Personals8Spezielle Methoden
Gleichheit und HashOperator-MethodenIndexieren und AnhängenBenutzerdefinierte CollectionsRückblick – Brüche11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Online-Ruby-Compiler