Wiederholung – Sportliga
Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 31 von 57.
Aufgabe
SchwerErstelle eine kleine Ligatabelle. Team bindet Comparable ein: Ein Team ist größer, wenn es mehr Punkte hat (3 für einen Sieg, 1 für ein Unentschieden), danach eine bessere Tordifferenz und danach einen alphabetisch früheren Namen. record(scored, conceded) aktualisiert das Team, und to_s gibt Reds 7 pts, +3 zurück. League bindet Enumerable ein: each liefert die Teams, play(line) erfasst ein Ergebnis wie Reds 2-1 Blues für beide Teams (wobei ein Team beim ersten Auftreten seines Namens erstellt wird), und table gibt die Teams mithilfe von sort vom besten bis zum schlechtesten zurück. Das Modul Rankable mit leader (dem besten Team, ausgehend von max) wird in League eingebunden.
Der bereitgestellte Code übergibt jede Eingabezeile an play und gibt anschließend die Tabelle mit Platzierungen (1. Reds 7 pts, +3), den Spitzenreiter sowie die Teams ohne Sieg in irgendeinem Spiel aus, die mit select gefunden werden.
Dein Code gehört in rankable.rb, team.rb und league.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input = []
while (line = gets)
input << line.chomp
end
league = League.new
input.each { |line| league.play(line) }
league.table.each_with_index { |t, i| puts "#{i + 1}. #{t}" }
puts "leader: #{league.leader&.name}"
winless = league.select { |t| t.wins.zero? }.map(&:name).sort
puts "no wins: #{winless.empty? ? "none" : winless.join(", ")}"
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 ausleihen3Klassenmethoden und Variablen
KlassenmethodenKlasseninstanzvariablenKonstantenFactory-MethodenZusammenfassung – Gutscheincodes6Module und Mixins
Module und includeObjekte erweiternDas Comparable-ModulDas Enumerable-ModulWiederholung – SportligaÜbe selbstständig: Online-Ruby-Compiler