Wiederholung – Kontaktliste
Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 11 von 57.
Aufgabe
MittelVervollständige die Klasse Contact. name, email und phone können gelesen werden. Der Setter email= speichert die Adresse in Kleinbuchstaben und löst ArgumentError mit invalid email: x aus, wenn sie kein @ oder keinen . nach dem @ enthält. Der Setter phone= behält nur die Ziffern und löst ArgumentError mit invalid phone: x aus, wenn weniger als 7 Ziffern übrig bleiben. initialize(name, email, phone) verwendet beide Setter. Zwei Kontakte sind mit == gleich, wenn ihre E-Mail-Adressen gleich sind. to_s gibt Ada (ada@mail.io, 5551234) zurück.
Der bereitgestellte Code liest Kontakte als Zeilen im Format name,email,phone. Er gibt added Ada (ada@mail.io, 5551234), duplicate ada@mail.io für einen Kontakt aus, der mit einem bereits hinzugefügten Kontakt gleich ist, oder die Fehlermeldung. Abschließend gibt er contacts: 2 aus.
Dein Code gehört in contact.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
require_relative 'contact'
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn unverändert
input = []
while (line = gets)
input << line.chomp
end
contacts = []
input.each do |line|
name, email, phone = line.split(",")
begin
contact = Contact.new(name, email, phone)
if contacts.include?(contact)
puts "duplicate #{contact.email}"
else
contacts << contact
puts "added #{contact}"
end
rescue ArgumentError => e
puts e.message
end
end
puts "contacts: #{contacts.size}"
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