#!/usr/bin/env ruby # -*- coding: utf-8 -*- class Week def initialize(owner = "名なしの権兵衛") @week = Hash.new @days = %w(sun mon tue wed thu fri sat) setowner(owner) for day in @days @week[day] = "" end end def canonicalize_day(day) day[0,3].downcase end def set(day, plan) d = canonicalize_day(day) if @week.has_key?(d) then @week[d] = plan else STDERR.puts "#{day} という曜日はないのさ" nil end end def get(day) d = canonicalize_day(day) if @week.has_key?(d) then @week[d] else nil end end def getowner() @name end def setowner(name) @name = name end def display() printf("------ %sさんの予定 ------\n", @name) for d in @days do printf("%3s\t%s\n", d.capitalize, get(d)) end end end if $0 == __FILE__ # 「スクリプト単体で呼ばれた場合」の定石 taro = Week.new("太郎") hana = Week.new("花子") taro.set("Thursday", "焼き肉") taro.setowner("TALOW!") hana.set("Thursday", "花見") taro.display hana.display end