どのようなプログラム言語でも変数のタイプ(型)には文字と数字があります。そしてオブジェクト指向ではない言語を使用していると、ある不都合に遭遇します。
例えば、1週間後に誕生日を迎えるお客様にバースデーカードを送るプログラムを作ろうとします。今日が2011年01月20日だったとして8桁の数字が保管できる変数に'20110120'を入れて+7をすれば1週間後の日付が'20110127'とわかります。でも、今日が2011年01月25日の場合、+7した変数は'20110132'というありえない日付になってしまいます。
そこで、日付を扱う場合、日付を年、月、日と分解して4,6,9,11月は30日でひと月繰り上がり、2月ではうるう年か判断し28日か29日でひと月繰り上がり、それ以外の月は31日でひと月繰り上がるようにし、更に月は12でひと年繰り上がるようコーディングしなければなりません。
このように、オブジェクト指向ではないプログラム言語では、人間の感覚として当たり前の事が当たり前に出来ない不都合に遭遇します。こういったコーディングは本当にやりたいことを阻害するためストレスが溜まる作業です。本当にやりたかったことは「1週間後の日付を求める」たったそれだけなのです。
でも、Rubyのようなオブジェクト指向言語ならば1週間後の日付を求めるのはとても簡単です。
require 'date'
#1週間後の求め方
sendday = Date.today
sendday = sendday + 7
#または、
sendday = Date.today + 7
これだけで、senddayには1週間後の日付が求められ入れられます。月による日付の繰り上がりや、うるう年の判断もする必要ありません。そしてsenddayはただの変数ではなくDateオブジェクトなので、新たに日数を足しても正しい日付になります。senddayは「日付」なのです。