Ulasan: Liga Olahraga
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 31 dari 57.
Tantangan
SulitBuat tabel liga kecil. Team menyertakan Comparable: sebuah tim dianggap lebih unggul jika memiliki lebih banyak poin (3 untuk kemenangan, 1 untuk hasil seri), lalu selisih gol yang lebih baik, lalu nama yang lebih awal secara alfabetis. record(scored, conceded) memperbarui tim, dan to_s mengembalikan Reds 7 pts, +3. League menyertakan Enumerable: each menghasilkan tim-tim, play(line) mencatat hasil seperti Reds 2-1 Blues untuk kedua tim (membuat tim saat namanya muncul untuk pertama kali), dan table mengembalikan urutan tim dari yang terbaik hingga terburuk menggunakan sort. Module Rankable dengan leader (tim terbaik, dari max) disertakan dalam League.
Kode yang disediakan meneruskan setiap baris input ke play, lalu mencetak tabel dengan posisi (1. Reds 7 pts, +3), pemimpin, dan tim-tim yang belum pernah menang dalam pertandingan apa pun, yang ditemukan dengan select.
Tulis kodemu di rankable.rb, team.rb, dan league.rb. main.rb berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# Kode input/output yang disediakan: biarkan apa adanya
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(", ")}"
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode Kupon6module dan mixin
module dan includeMemperluas objectmodule Comparablemodule EnumerableUlasan: Liga OlahragaLatihan sendiri: Compiler Ruby online