Récapitulatif - Ligue sportive
Fait partie de la section Programmation orientée objet du Journey Ruby de Coddy. Leçon 31 sur 57.
Défi
DifficileConstruisez un petit classement de championnat. Team inclut Comparable : une équipe est supérieure lorsqu’elle a plus de points (3 pour une victoire, 1 pour un match nul), puis une meilleure différence de buts, puis un nom qui vient plus tôt dans l’ordre alphabétique. record(scored, conceded) met à jour l’équipe, et to_s renvoie Reds 7 pts, +3. League inclut Enumerable : each fournit les équipes, play(line) enregistre un résultat tel que Reds 2-1 Blues pour les deux équipes (en créant une équipe la première fois que son nom apparaît), et table renvoie les équipes de la meilleure à la moins bonne en utilisant sort. Le module Rankable, avec leader (la meilleure équipe, obtenue à partir de max), est inclus dans League.
Le code fourni transmet chaque ligne d’entrée à play, puis affiche le classement avec les positions (1. Reds 7 pts, +3), le leader et les équipes n’ayant remporté aucun match, trouvées avec select.
Votre code doit se trouver dans rankable.rb, team.rb et league.rb. main.rb contient le code d’entrée/sortie fourni et ne peut pas être modifié.
Essayez vous-même
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# Code d'entrée/sortie fourni : le garder tel quel
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(", ")}"
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesVariables d’instanceMéthodes et selfto_s et inspectRécapitulatif - Carte de bibliothèque4Encapsulation
Méthodes privéesMéthodes protégéesSetters privésProtéger l’étatRécapitulatif - Distributeur automatique7Polymorphisme et typage canard
PolymorphismeTypage canardMéthodes abstraitesCas et classesRécapitulatif - méthodes de paiement10Patrons de conception – Partie 2
Délégation avec ForwardablePatron DécorateurPatron BuilderPatron État2Accesseurs et self
Lecteurs et écrivainsSetters personnalisésself dans les méthodesIdentité et égalitéRécapitulatif - Liste de contacts5Héritage
Sous-classesRedéfinition des méthodesAppeler superis_a? et ancêtresRécapitulatif - Paie du personnel8Méthodes spéciales
Égalité et hachageMéthodes d’opérateursIndexation et ajoutCollections personnaliséesRécapitulatif - Fractions11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livres3Méthodes et variables de classe
Méthodes de classeVariables d’instance de classeConstantesMéthodes de fabriqueRécapitulatif - Codes de réduction6Modules et mixins
Modules et includeÉtendre les objetsLe module ComparableLe module EnumerableRécapitulatif - Ligue sportiveEntraînez-vous par vous-même : Compilateur Ruby en ligne