Riepilogo - Lega sportiva
Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 31 di 57.
Sfida
DifficileCrea una piccola classifica di lega. Team include Comparable: una squadra è maggiore quando ha più punti (3 per una vittoria, 1 per un pareggio), poi una migliore differenza reti e infine un nome alfabeticamente precedente. record(scored, conceded) aggiorna la squadra e to_s restituisce Reds 7 pts, +3. League include Enumerable: each restituisce le squadre, play(line) registra il risultato, ad esempio Reds 2-1 Blues, per entrambe le squadre (creando una squadra la prima volta che compare il suo nome) e table restituisce le squadre dalla migliore alla peggiore usando sort. Il modulo Rankable, con leader (la squadra migliore, ottenuta con max), è incluso in League.
Il codice fornito passa ogni riga di input a play, poi stampa la classifica con le posizioni (1. Reds 7 pts, +3), la capolista e le squadre senza vittorie in nessuna partita, individuate con select.
Il tuo codice va inserito in rankable.rb, team.rb e league.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# Código de entrada/salida proporcionado: mantenlo tal como está
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(", ")}"
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiVariabili d'istanzaMetodi e selfto_s e inspectRipasso - Tessera della biblioteca4Incapsulamento
Metodi privatiMetodi protettiSetter privatiProteggere lo statoRiepilogo - Distributore automatico7Polimorfismo e Duck Typing
PolimorfismoDuck TypingMetodi astratticase e classiRiepilogo - Metodi di pagamento10Pattern di progettazione Parte 2
Delegazione con ForwardablePattern DecoratorPattern BuilderPattern State2Metodi di accesso e self
Metodi di lettura e scritturaSetter personalizzatiself nei metodiIdentità e uguaglianzaRiepilogo - Elenco contatti5Ereditarietà
SottoclassiRidefinizione dei metodiChiamare superis_a? e antenatiRiepilogo - Paghe del personale8Metodi speciali
Uguaglianza e hashMetodi degli operatoriIndicizzazione e appendCollezioni personalizzateRiepilogo - Frazioni11Progetto: Gestione della biblioteca
Libri e iscrittiPrendere in prestito i libri3Metodi e variabili di classe
Metodi di classeVariabili di istanza della classeCostantiMetodi factoryRiepilogo - Codici coupon6Moduli e mixin
Moduli e includeEstendere gli oggettiIl modulo ComparableIl modulo EnumerableRiepilogo - Lega sportivaEsercitati da solo: Compilatore Ruby online