Skip to content

Instantly share code, notes, and snippets.

@roktas
Created May 24, 2012 17:45
Show Gist options
  • Save roktas/2783034 to your computer and use it in GitHub Desktop.
Save roktas/2783034 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
# encoding: utf-8
# DİKKAT! Fazla test edilmemiştir. İki çay/sigara arası yazılmıştır. Daha
# iyisini siz yazın. -- roktas
class Arac
attr_reader :hiz, :vites_konumu, :yolcu_sayisi
def initialize(yolcu=1)
sifirla_(yolcu)
end
def basla(yolcu=1)
sifirla_(yolcu)
end
def dur
sifirla_
end
def sifirla_(yolcu=1)
@hiz = 0
@yolcu_sayisi = yolcu
vitesle
end
def hizlan(miktar)
self.hiz = miktar.abs
end
def yavasla(miktar)
self.hiz = -miktar.abs
end
def yolcu_al(adet)
self.yolcu_sayisi = adet.abs
vitesle
end
def yolcu_birak(adet)
self.yolcu_sayisi = -adet.abs
end
def hiz=(miktar)
@hiz += miktar
@hiz = 0 if @hiz < 0
@hiz = self.class::MAKSIMUM_HIZ if @hiz > self.class::MAKSIMUM_HIZ
vitesle
end
def yolcu_sayisi=(n)
@yolcu_sayisi += n
@yolcu_sayisi = 0 if @yolcu_sayisi < 0
@yolcu_sayisi = self.class::MAKSIMUM_YOLCU if @yolcu_sayisi > self.class::MAKSIMUM_YOLCU
vitesle
end
def vitesle
@vites_konumu = (@hiz * @yolcu_sayisi / self.class::VITES_FAKTORU).round
@vites_konumu = 5 if @vites_konumu > 5
end
end
class Bisiklet < Arac
MAKSIMUM_YOLCU = 2
MAKSIMUM_HIZ = 20
VITES_FAKTORU = 20
end
class Motosiklet < Arac
MAKSIMUM_YOLCU = 2
MAKSIMUM_HIZ = 100
VITES_FAKTORU = 30
end
class Araba < Arac
MAKSIMUM_YOLCU = 5
MAKSIMUM_HIZ = 140
VITES_FAKTORU = 40
end
[Bisiklet.new, Motosiklet.new, Araba.new].each do |a|
a.basla
a.hizlan(30)
puts "Vites konumu: #{a.vites_konumu}"
a.dur
puts "Yolcu sayısı: #{a.yolcu_sayisi}"
a.basla
a.yolcu_al(2)
a.hizlan(60)
a.yavasla(20)
puts "Hız: #{a.hiz}"
puts "Vites konumu: #{a.vites_konumu}"
a.dur
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment