Created
November 28, 2011 14:38
-
-
Save ThawanFidelis/1400618 to your computer and use it in GitHub Desktop.
Soluções para os exercícios de Programação Orientada a Objetos (Ruby)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Retangulo | |
def initialize(base, altura) | |
raise(ArgumentError, "lado nao pode ser negativo, 0 ou nulo") unless e_valido?(base) and e_valido?(altura) | |
@base, @altura = base, altura | |
end | |
attr_reader :base, :altura | |
def alterar_base(nova_base) | |
if e_valido?(nova_base) | |
@base = nova_base | |
else | |
raise(ArgumentError, "lado nao pode ser negativo, 0 ou nulo") | |
end | |
end | |
def alterar_altura(nova_altura) | |
if e_valido?(nova_altura) | |
@altura = nova_altura | |
else | |
raise(ArgumentError, "lado nao pode ser negativo, 0 ou nulo") | |
end | |
end | |
def area | |
@base * @altura | |
end | |
def perimetro | |
@base * 2 + @altura * 2 | |
end | |
private | |
def e_valido?(lado) | |
(lado <= 0 or lado == nil) ? false : true | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require './retangulo.rb' | |
describe Retangulo do | |
it "Nao deve aceitar lado negativo, 0 ou nulo" do | |
expect{Retangulo.new(-2, -1)}.to raise_error(ArgumentError) | |
expect{Retangulo.new(0, 0)}.to raise_error(ArgumentError) | |
end | |
it "Deve ser capaz de trocar o valor dos lados" do | |
retangulo = Retangulo.new(2,3) | |
retangulo.base.should == 2 | |
retangulo.altura.should == 3 | |
retangulo.alterar_base(4) | |
retangulo.alterar_altura(5) | |
retangulo.base.should == 4 | |
retangulo.altura.should == 5 | |
expect{retangulo.alterar_altura(-2)}.to raise_error(ArgumentError) | |
end | |
it "Deve ser capaz de calcular a area" do | |
retangulo = Retangulo.new(2,3) | |
retangulo.area.should == 6 | |
retangulo = Retangulo.new(3.5,2) | |
retangulo.area.should == 7 | |
end | |
it "Deve ser capaz de calcular o perimetro" do | |
retangulo = Retangulo.new(2,3) | |
retangulo.perimetro.should == 10 | |
retangulo = Retangulo.new(3.5,2) | |
retangulo.perimetro.should == 11 | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Bola | |
def initialize(cor) | |
raise(ArgumentError, "Bola deve ter uma cor") if cor == nil or cor == "" | |
@cor = cor | |
end | |
attr_reader :cor | |
def trocar_cor(nova_cor) | |
raise(ArgumentError, "Bola deve ter uma cor") if nova_cor == nil or nova_cor == "" | |
@cor = nova_cor | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require './bola' | |
describe Bola do | |
it "Bola nao deve existir sem uma cor" do | |
expect{Bola.new()}.to raise_error(ArgumentError) | |
expect{Bola.new("")}.to raise_error(ArgumentError) | |
end | |
it "Deve retornar a cor da bola" do | |
bola = Bola.new("branco") | |
bola.cor.should == "branco" | |
end | |
it "Deve poder mudar a cor da bola" do | |
bola = Bola.new("preto") | |
bola.trocar_cor("azul") | |
bola.cor.should == "azul" | |
end | |
it "Cor da bola nao pode ser trocada para nil" do | |
bola = Bola.new ("verde") | |
expect{bola.trocar_cor(nil)}.to raise_error(ArgumentError) | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Quadrado | |
def initialize(lado) | |
raise(ArgumentError, "Quadrado nao pode ter lado 0 ou negativo") if lado <= 0 | |
@lado = lado | |
end | |
attr_reader :lado | |
def alterar_lado(novo_lado) | |
raise(ArgumentError, "Quadrado nao pode ter lado 0 ou negativo") if novo_lado <= 0 | |
@lado = novo_lado | |
end | |
def area | |
@lado * @lado | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require './quadrado.rb' | |
describe Quadrado do | |
it "Quadrado nao deve aceitar lado 0 ou negativo" do | |
expect{Quadrado.new(0)}.to raise_error(ArgumentError) | |
expect{Quadrado.new(-1)}.to raise_error(ArgumentError) | |
end | |
it "Deve ser capaz de mudar o valor do lado" do | |
quadrado = Quadrado.new(2) | |
quadrado.alterar_lado(3) | |
quadrado.lado.should == 3 | |
end | |
it "Deve ser capaz de calcular a area" do | |
quadrado = Quadrado.new(3) | |
quadrado.area.should == 9 | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment