סיכום - ליגת הספורט
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Ruby של Coddy. שיעור 31 מתוך 57.
אתגר
קשהבנו טבלת ליגה קטנה. Team כוללת את Comparable: קבוצה נחשבת טובה יותר כשיש לה יותר נקודות (3 על ניצחון, 1 על תיקו), אחר כך הפרש שערים טוב יותר, ואז שם שמופיע מוקדם יותר בסדר האלפביתי. record(scored, conceded) מעדכנת את הקבוצה, ו-to_s מחזירה את Reds 7 pts, +3. League כוללת את Enumerable: each מניבה את הקבוצות, play(line) מתעדת תוצאה כגון Reds 2-1 Blues עבור שתי הקבוצות (ויוצרת קבוצה בפעם הראשונה ששמה מופיע), ו-table מחזירה את הקבוצות מהטובה ביותר לגרועה ביותר באמצעות sort. המודול Rankable, עם leader (הקבוצה הטובה ביותר, שמתקבלת מ-max), נכלל ב-League.
הקוד שסופק מעביר כל שורת קלט אל play, ואז מדפיס את הטבלה עם המיקומים (1. Reds 7 pts, +3), את המובילה ואת הקבוצות שלא ניצחו באף משחק, שאותן מוצאים באמצעות select.
הקוד שלך יופיע בקבצים rankable.rb, team.rb ו-league.rb. הקובץ main.rb מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
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(", ")}"
כל השיעורים ביחידה תכנות מונחה עצמים
3מתודות ומשתנים של מחלקה
מתודות של מחלקהמשתני מופע של מחלקהקבועיםמתודות ליצירת מופעיםסיכום – קודי קופון6מודולים ומיקסינים
מודולים ו-includeהרחבת אובייקטיםהמודול Comparableהמודול Enumerableסיכום - ליגת הספורטתרגלו בעצמכם: קומפיילר Ruby אונליין