Created
March 11, 2015 21:24
-
-
Save jdmorlan/4604a2e074ed29029022 to your computer and use it in GitHub Desktop.
Aero Components - Ingersoll Rand
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 Model | |
attr_reader :model_number | |
def initialize(model_number) | |
@model_number = model_number | |
@aeros = [] | |
end | |
def create_aero(part_number, horsepower, pressure) | |
aero = Aero.new(part_number, horsepower, pressure) | |
@aeros << aero | |
return aero | |
end | |
def aeros | |
@aeros | |
end | |
end | |
class Part | |
attr_reader :part_number, :list_price, :standard_cost | |
def initialize(part_number) | |
@part_number = part_number | |
@children = [] | |
end | |
def add_child(child) | |
if child.kind_of?(Part) | |
@children << child | |
end | |
end | |
def material_cost | |
sum = 0 | |
@children.each do |child| | |
sum += child.standard_cost | |
end | |
return sum | |
end | |
def children | |
@children | |
end | |
def set_list_price(list_price) | |
@list_price = list_price | |
end | |
def set_standard_cost(std_cost) | |
@standard_cost = std_cost | |
end | |
end | |
class AeroComponent < Part | |
attr_reader :component_type, :stage | |
def initialize(part_number, component_type, stage) | |
@component_type = component_type | |
@stage = stage | |
super(part_number) | |
end | |
end | |
class Aero < Part | |
attr_reader :horsepower, :pressure | |
def initialize(part_number, horsepower, pressure) | |
@horsepower = horsepower | |
@pressure = pressure | |
super(part_number) | |
end | |
def add_component(aero_component) | |
if aero_component.kind_of?(AeroComponent) | |
self.add_child(aero_component) | |
return aero_component | |
end | |
end | |
def components | |
self.children | |
end | |
end | |
model = Model.new('TA-2000') | |
aero = model.create_aero('AAMB795115-00707', 150, 100) | |
aero.add_component(AeroComponent.new('AAP1793842-00108', :impeller, 1)) | |
aero.add_component(AeroComponent.new('AAP1793841-00210', :impeller, 2)) | |
aero.add_component(AeroComponent.new('AAP1793840-00210', :impeller, 3)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment