Created
August 4, 2014 18:25
-
-
Save andyweiss1982/06332cbe2409cc4448ef to your computer and use it in GitHub Desktop.
Quadrilaterals
This file contains 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
module Equilateral | |
def assign_sides(a) | |
@side1 = a | |
@side2 = a | |
@side3 = a | |
@side4 = a | |
end | |
def equilateral_sidelength | |
@side1 | |
end | |
end | |
class Quadrilateral | |
def initialize(a, b, c, d) | |
@side1 = a | |
@side2 = b | |
@side3 = c | |
@side4 = d | |
end | |
def perimeter | |
@side1 + @side2 + @side3 + @side4 | |
end | |
end | |
class Trapezoid < Quadrilateral | |
end | |
class Parallelogram < Quadrilateral | |
def initialize(a,b) | |
@side1 = a | |
@side2 = b | |
@side3 = a | |
@side4 = b | |
end | |
end | |
class Rhombus < Parallelogram | |
include Equilateral | |
def initialize(a) | |
assign_sides(a) | |
end | |
end | |
class Rectangle < Parallelogram | |
def area | |
@side1 * @side2 | |
end | |
end | |
class Square < Rectangle | |
include Equilateral | |
def initialize(a) | |
assign_sides(a) | |
end | |
end | |
def test_quadrilateral | |
quad = Quadrilateral.new(1,2,3,4) | |
puts quad.perimeter == 10 | |
end | |
def test_trapezoid | |
trap = Trapezoid.new(2,3,4,5) | |
puts trap.perimeter == 14 | |
puts trap.is_a? Quadrilateral | |
end | |
def test_parallelogram | |
para = Parallelogram.new(6,3) | |
puts para.perimeter == 18 | |
puts para.is_a? Quadrilateral | |
end | |
def test_rhombus | |
rhom = Rhombus.new(6) | |
puts rhom.perimeter == 24 | |
puts rhom.equilateral_sidelength == 6 | |
puts rhom.is_a? Parallelogram | |
puts rhom.is_a? Quadrilateral | |
end | |
def test_rectangle | |
rect = Rectangle.new(4,9) | |
puts rect.perimeter == 26 | |
puts rect.area == 36 | |
puts rect.is_a? Parallelogram | |
puts rect.is_a? Quadrilateral | |
end | |
def test_square | |
squa = Square.new(2) | |
puts squa.perimeter == 8 | |
puts squa.area == 4 | |
puts squa.equilateral_sidelength == 2 | |
puts squa.is_a? Rectangle | |
puts squa.is_a? Parallelogram | |
puts squa.is_a? Quadrilateral | |
end | |
def test_all | |
test_quadrilateral | |
test_trapezoid | |
test_parallelogram | |
test_rhombus | |
test_rectangle | |
test_square | |
end | |
test_all |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment