Etkinlik Planlayıcı
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 56 / 57.
Görev
ZorBu bölümdeki özel metotları kullanarak bir etkinlik zamanlayıcısı oluşturun. Event.new(title, day, start, finish) dört alanın tümü için okuyuculara sahiptir. Comparable modülünü içerir ve gün, ardından başlangıç saati, ardından başlığa göre sıralama yapar. İki etkinlik, aynı gün aynı başlığa sahip olduklarında ==, eql? ve hash ile eşit kabul edilir (aynı etkinliğin iki kez girilmesi). to_s, iki basamaklı saatlerle day 3 09-11 standup döndürür. overlaps?(other), aynı gün içinde her bir etkinlik diğerinin bitişinden önce başlıyorsa true değerini döndürür. Scheduler#add(event), eşit bir etkinlik için duplicate, çakışan ilk saklanmış etkinlik (sırasına göre) için conflicts with review döndürür; aksi takdirde etkinliği saklar ve added döndürür. Scheduler, Enumerable modülünü içerir; each metodu saklanan etkinlikleri sırasıyla yield eder. busiest_day, en fazla planlanmış saate sahip günü (eşitlik durumunda daha erken günü) busiest day 3: 5h biçiminde döndürür veya no events döndürür.
Sağlanan kod, etkinlikleri title,day,start,finish satırları olarak okur ve her biri için yanıtı, ardından each aracılığıyla tüm etkinlikleri sırasıyla ve en yoğun günü yazdırır.
Kodunuz event.rb ve scheduler.rb dosyalarına gitmelidir. main.rb sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'event'
require_relative 'scheduler'
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input = []
while (line = gets)
input << line.chomp
end
scheduler = Scheduler.new
input.each do |line|
title, day, start, finish = line.split(",")
puts scheduler.add(Event.new(title, day.to_i, start.to_i, finish.to_i))
end
scheduler.each { |event| puts event }
puts scheduler.busiest_day
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıf TanımlamaÖrnek DeğişkenleriMetotlar ve selfto_s ve inspectÖzet - Kütüphane Kartı7Çok Biçimlilik ve Ördek Tiplemesi
Çok BiçimlilikÖrdek TiplemesiSoyut Metotlarcase ve SınıflarTekrar - Ödeme Yöntemleri2Erişimciler ve self
Okuyucular ve YazıcılarÖzel Setter'larMetotlarda selfKimlik ve EşitlikTekrar - Kişi Listesi5Kalıtım
Alt sınıflarMetotları geçersiz kılmasuper çağrısıis_a? ve üst sınıflarTekrar - Personel Maaşları8Özel Metotlar
Eşitlik ve hashOperatör Metotlarıİndeksleme ve EklemeÖzel KoleksiyonlarTekrar - Kesirler11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç Alma3Sınıf Metotları ve Değişkenleri
Sınıf MetotlarıSınıf Örnek DeğişkenleriSabitlerFabrika MetotlarıTekrar - Kupon KodlarıKendi başına pratik yap: Online Ruby derleyicisi