แแธแขแแแแแแแแแแ แแถแแแแแแปแแแแแแแแถแแแขแแแ
แแแแแทแแแพแขแแแแ แผแแแ แแแแปแแแถแแขแแทแแแแแแ แขแแแแแแแแแถแแถแแฎแขแแแธแแแแแถแแแ SOLIDแ แแฝแแแแขแแปแแแแถแแฑแแแขแแแแแแแแแแแแแแทแแธแแแแแแแผแแแแขแถแ แแถแแแ แแถแแแแแแแแแแแข แแทแแแถแแแแแฝแแแแแแถแ แแถแแฝแแฑแแแแแแแแแแถแแแแถแแแแปแแแถแแแแแแแแแแแแทแแธแแถแแแทแแธแแถแแแแแแแถแ แแแพแแขแแแธแแแแแขแแปแแแแแแถแแแถแแแถแแแแถแแแแฝแแฑแแแแถแแแแแนแแแแแผแแ แขแแแแฏแแแแแแแแแแแแแแถแแถแแแแแทแ แแทแแแถแแแแแแนแแแปแแแแแแถแขแแแธ "แแแแผแแแแแผแ" แแถแขแถแแแแแแแ แแพแแแแทแแแแแแแแแแแแปแแแแแแแถแแแแ แแแแแถแแแถแแแถแแแแแ แแแแทแแแแแแถแแแแแแถแแแ แแแแปแ SOLID แแแแผแแแถแแแแฝแแแแแแแขแแแแแแแถแแแแแพแแแแแถแแแขแแแแแแ แแแแ IT แ แแฝแแแแแถแแแแแถแแแถแ แแแปแ แ แถแแแแแแพแแแแแแถแแแแถแแแแ แกแพแ แแทแแแถแแขแแทแแแแแแแแถแแขแแปแแแแแแถแแแแแแแแแแแแถแแขแแทแแแแแแแแแแแขแแถแ แแแพแแ
แ
แผแแแพแแแแแแธแแแแแถแแแ SOLID แแทแแแแแแแแแแถแแฝแแแพแแ
Skillbox แแแแถแแ แแแแแแทแแแแถแแถแแแแแแแ
"แขแแแแขแแทแแแแแแแ แแแ PRO" .แแพแแแแแนแแ แแแแแถแแแขแแแแขแถแแแถแแแขแแแแ "Habr" - แแถแแแแแ แปแแแแแแ 10 rubles แแ แแแแ แปแแแแแแแแแแปแแแแแแแทแแแแถ Skillbox แแถแแฝแแแแแแแแพแแแแแผแแแแแแแแแแแถแ "Habr" แ
แแพ SOLID แแถแขแแแธ?
แแถแแแแแแแแบแแถแขแแแแแแถแแ แขแแแแแแธแแฝแแแแแแถแแแแแบแแถแแถแแ แถแแแแแแพแแแแแแแแแแแแแแแถแแแแแถแแแแถแแแแฝแแ
- Sแแแแแถแแแแแแแฝแแแปแแแแแผแแ แแแผแแปแแขแถแ แแถแแ แแแปแแแแฝแ แแทแแแแแฝแแแแแแแแแถแแแแถแแแแแถแแแแแแผแแ
แแแ Oแแแทแ / แแแแแถแแแแแทแ (แแแแแถแแแแแพแ/แแทแ)แ แแแแถแแ แแทแแแถแแปแแแแแแแแแแฝแแแแแพแแแแแแถแแแแแแแแแแแแแ แแแปแแแแแแทแแแแแแถแแแแถแแแแแแแแโแแแ Liskov แแแแแถแแแแแแแฝแ (แแแแแถแแแแแแแฝแ Liskov) แ แขแแปแแแแแแแแแแแพแแแแแแแแแแแฝแแแแขแถแ แแแแพแแแแแแแแแแแแแแแแแแผแแแแแถแแแแแแทแแแนแแแแแฝแแแแแ Iแแแแแถแแแแแแแ แแแ แแแปแ แแแแแถแแ โ (แแแแแถแแแแแแแแแ แแแปแ แแแแแถแแ) แ แขแแแแแถแแแแแแแทแแธแแทแแแฝแแแนแแแแขแแแแพแแทแแธแแถแแแแแแแแแแฝแแแแแทแแแแแพแแแแแแ Dแแแแแถแแแแแแแ แแแถแแแถแแฏแแแถแแแ (แแแแแถแแแแแแแถแแแแแ แแแถแแแถแแขแถแแแแแ) แ แแแผแแปแแแ แแแแแทแแแแแแแแทแแแฝแแแนแแแแขแแแแพแแแผแแปแแแ แแแแแทแแแถแแแแ
แแแแแถแแแแแแแฝแแแปแแแแแผแแแแแฝแ
โ
แแแแแถแแแแแแแฝแแแปแแแแแผแแแแแฝแ (SRP) แ
แแแแถแแแแถแแ แฌแแแผแแปแแแธแแฝแแแแ
แแแแปแแแแแแแทแแธแแฝแแแแแแฝแแแปแแแแแผแแ
แแแแแแแแแแแแแฝแแแแแปแแแถแแแแแแแแแแแทแแธแแแแ แแพแแแธแแแ แแถแแปแแแแแแฝแแแปแแแแแผแแแแแแฝแแแแแแแผแแแถแแ
แถแแแแถแแแแ
แแแแถแแแแแแแแฝแแแแแแแถแแ แแถแแถแแแถแแแแ
แถแแแแแ
แถแแแ
แแผแแถแแแแแแถแแแแแแแทแแแถแแแแแแแแ แขแแแแขแแทแแแแแแ แแทแแแถแแแแแถแแขแแแแแแแถแแแแแนแแแแขแแแแ SRP แแแ Robert S. Martin แแทแแแแแถแขแแแธแแถแแแแฝแแแปแแแแแผแแแถแ แแแปแแแแแแแถแแแแถแแแแแถแแแแแแผแแ แแพแแกแพแแแถแแแแถแแแแแพแแถแแแแแแแแถแแถแแปแแฝแแแแแถแแแถแแแแแแแถแแ "แแแแแถแแแแแแแถแแแ
แแถแแแแแแแแทแแแแแแป" แ แแแแทแแแแแแฝแแแแแ
แผแแแผแแแแแผแแแแถแแแแแแถแแแแถแ
แแแพแ แแแแแแแผแแแถแแแแแแแแธแแปแแแแ Tom DeMarco แ
แแแโแแแแทแโแแแโแแโแแฝแโแแแแ แผแโแแแแทแโแแถโแ แแแพแโแแแโแแแแแพแโแกแพแโแแแโแแแ David Parnasแ แ แแแปแ แแแแถแแแแธแแแบแแถแแแทแแแถแแ แแทแแแถแแแถแแแแแแแแถแแ Parnas แแถแแขแแขแถแแแถ แแถแแแแแ แแแแแแแแแแแแ แแถแแแผแแปแแแถแ แแแแแกแแ แแทแแแฝแแแแขแแแแพแแถแแแทแแถแแแแแแแถแแแแถแแแแแปแ แฌแแแ แผแแแแแแทแแแแแทแแแแแแ แแแผแแปแแแถแแฝแแแแแผแแแแแถแแแแแแแแแแถแแแถแแแแถแแแแฝแแแแแแแแแแแแแแแถแแขแแแแแแแถแแแแขแแทแแทแแแ
แแแแแทแแธแแแ แแแถแแธแแแถแแแแแแแงแแถแ แแแแแแแฝแแฑแแแ แถแแแขแถแแแแแแแแฝแแแถแแฝแแขแแแแแแแแแแแแแแถแแแแแแแแแแแแแปแแ แแปแแแฝแ (COO, CTO, CFO) แแแแแแแถแแแแแแแพแแแแแแทแแธแขแถแแธแแแแแแแถแแแแถแแแแแแแถแแแแแแแแแแแแแแแแแแแถแ แแถแแแแแแ แแฝแแแแขแถแ แขแแปแแแแแแถแแแแแถแแแแแแผแแแ แแแแปแแแแแแแทแแธแแแแแทแแแแแแถแแแแแแแแแแแแแแแแแแแแขแแแแแแแแแแแแแแแแแแแแแ
แแแแแปแแแแแแแถแ
แแผแ แแแแแแ แแทแแธแแแขแแแแปแแแพแแแแธแแแ แแ แแแแแแธ แแบแแแแผแแแพแแแถแแ แแแแปแแแแแแแแถแแ แแผแแแแแกแแแแพแแแแแแแแฝแแแแแแแแแทแแธแแแแแทแแขแแปแแแแแแถแแแแแแถแแแแแแแฝแแแปแแแแแผแแแแแฝแแ แแแแแบแแถแแผแ Ruby แแแแแแแแถแขแแแธแขแถแแแแแแทแแทแแถ แแทแแแแแแแแแแแแแแแถแแธแแแขแแแถแแ
แแทแแทแแแแแพแแงแแถแ แแแ แ แพแแแแแถแแถแแแแแแแแผแ
แแถแแแแแแแ
แแแแฝแแแปแแแแแผแแแแแแแแปแแถแแแแแแแแแแแแผแแแถแแแแแแถแแแ
แแแแปแแแแแถแแ SpaceStation แ
แขแแแแแแแแแแ แแแแถแ
แถแแแขแถแแแแแแแแนแแแแแแทแแแแแทแแถแแแแแแแแแถแแธแแแขแแแถแแ
class SpaceStation
def initialize
@supplies = {}
@fuel = 0
end
def run_sensors
puts "----- Sensor Action -----"
puts "Running sensors!"
end
def load_supplies(type, quantity)
puts "----- Supply Action -----"
puts "Loading #{quantity} units of #{type} in the supply hold."
if @supplies[type]
@supplies[type] += quantity
else
@supplies[type] = quantity
end
end
def use_supplies(type, quantity)
puts "----- Supply Action -----"
if @supplies[type] != nil && @supplies[type] > quantity
puts "Using #{quantity} of #{type} from the supply hold."
@supplies[type] -= quantity
else
puts "Supply Error: Insufficient #{type} in the supply hold."
end
end
def report_supplies
puts "----- Supply Report -----"
if @supplies.keys.length > 0
@supplies.each do |type, quantity|
puts "#{type} avalilable: #{quantity} units"
end
else
puts "Supply hold is empty."
end
end
def load_fuel(quantity)
puts "----- Fuel Action -----"
puts "Loading #{quantity} units of fuel in the tank."
@fuel += quantity
end
def report_fuel
puts "----- Fuel Report -----"
puts "#{@fuel} units of fuel available."
end
def activate_thrusters
puts "----- Thruster Action -----"
if @fuel >= 10
puts "Thrusting action successful."
@fuel -= 10
else
puts "Thruster Error: Insufficient fuel available."
end
end
end
แแถแแแทแแแแแถแแธแแแขแแแถแแแแแแแพแแแทแแแแแพแแแถแแแ (แแแแปแแแทแแแทแแแถแแแแปแแแนแแแแฝแแแถแแแถแแ แ แแผแแแแแแแแธ NASA แแแแแแแแแแแแแ) แแแปแแแแแแถแแขแแแธแแแแแแแผแแแทแแถแแแ แแธแแแแ
แแผแ แแแแ แแแแถแแ SpaceStation แแถแแแแแฝแแแปแแแแแผแแแแแแแแแแแถแแถแ แแแพแ (แฌแแถแแแทแ แแ )แ แแฝแแแถแแถแแแขแแแขแถแ แแแแผแแแถแแแแแ แแแแถแแแแแแแ
- แงแแแแแแ แถแแแแแแแถ;
- แแถแแแแแแแแแแแ (แแแแแถแแแแแแพแแแแถแแ);
- แฅแแแแแ;
- แงแแแแแแแแแแพแแแแแฟแแ
แแแแแธแแถแแแแถแแแทแแแแทแแแแแแแแแถแแธแแแแถแแแแถแแแแแแผแแแถแแ แถแแแแแแถแแแแฝแแแแแแ แแพแแขแถแ แแแแแแแถแแแแถแแแถแแแถแขแแแแแถแแถแขแแแแแแฝแแแปแแแแแผแแ แแแแแขแแแธแ แแถแแ แแแพแแแแแแแถแขแแแแแทแแแแถแแถแแแแแแแแแแแแแแแงแแแแแแ แถแแแแแแแถ แแแแแปแแถแแแแฝแแแปแแแแแผแแแแแปแแแถแแแแแแแแแแแแแแแถแ แแทแแแแแแแแฝแแแปแแแแแผแแแพแแถแแแแแแแแแแแแแแแแแฅแแแแแ แ แพแแขแแแแแพแแแแแถแขแแแแแแแฝแแแทแแทแแแแงแแแแแแแแแปแแ
แแพโแแพแโแขแถแ โแแทแแถแโแแถโแแแแแแทแแธโแแแโแแทแโแแแแโแแถแโแแแแแแ แแ แแแแแแธ แแ? แแแแถแแแ แพแแ แแแปแแแแแแแแถแแ SpaceStation แแบแแถ "แแแแแปแแแแ" แแแแแแถแแแแแนแแขแแแธแแแแแแแแแถแ แแทแแแแแพแขแแแธแแแแแแแแแถแแ แแแโแแถโแแแแผโแแแแแถแแโแแโแแแแถแแโแแแแปแโแแแแแแทแแธโแแแแแแโแแทแโแแแแแปแ แแแแแถแแแขแแแแ แถแแแแแแพแแแแแผแ แแแแแปแแแแแแแแทแแถแแแแแถแแแแแถแแแแถแแแ แแ แผแแแแแแแแแแแแแแแแแแทแแธแแบแแถแแแแแแถแแแแถแ แแแปแแแแแแแแแแแพแแแถแแพแแนแแแถแแขแแแธแแพแแกแพแแแแแแทแแแพแแพแแแแแแแแแปแแแถแแแแแธแแ แแแแ แแแแถแแแแถแแธแแแขแแแถแแแแแแแพแแแนแแแแแผแแแถแแแแแถแแธแแแแแแแ แฌแแแแแแแแแแแปแแ แ แพแแแปแแแถแแแถแแแแแ แแแพแ SpaceStation แแนแแแพแแกแพแแ แแถแแถแแแแแแพแแแถแแ แแแแแถแแงแแแแแแแแแแนแแแแแผแแแถแแแแแถแแแแถแแฝแแขแแแแแแ แแถแแแแแแแแแแถแแแแแแถแแแแผแแแนแแแถแแแแแแแแปแแแแแถแแ แแถแแแแแแแแพแแขแถแ แแแแถแแแแแแแแแทแแแแแทแแถแแแแงแแถแ แแแแงแแแแแแแแแแพแแแแแฟแแ แแแแแทแแแพแขแแแแแแแถแแแแแถแแแแแพแแปแแแถแแแแแถแแแแแแผแแงแแแแแแ แถแแแแแแแถ แแถแขแถแ แแแแแถแแแแแแแแแแแแแแแแแถแแแแแแแแแแแแแแถแแธแแแแถแแแแถแแแแขแ
แแถแแแแแถแแแแแแถแแแแแแแแแแแแแแแแแแแแแธแขแถแ แแแแแแฑแแแแผแแแแแแแแแแปแแแแแถแแแแแแแแแแแแแแแธ แแแปแแแแแแ แแธแแแแ แแ แแพแแแนแ "แ แถแแแแแแแแแถแ" แ แพแแแถแแนแแแแแถแแแ แแถแแถแแแแแถแแแแแถแแแแถแแแแแแปแแแถแแแแแแแแถแแทแแถแ แแแแแแแแถแแแแขแแถแแแ แแถแแถแแถแแแแขแแแแปแแแแแปแแแถแแแแแ แแแแแแแแทแแธแแ แแถแแแแแแแถแ แแแแแกแแแแแแผแ แแแแแแแแแแธแแฝแแแแแฝแแแปแแแแแผแแแแแปแแแถแแขแแปแแแแแแแแแทแแแแแทแแถแแแถแแแแถแแแแฝแแ แแแโแแธโแ แแแปแ โแแแ แ แผแโแแพแโแแแแผแโแแแแถแแ SpaceStationแ
แ แผแแ แแแ แถแแแถแแแแฝแแแปแแแแแผแ
แแถแแแพแแพแแแถแแแแแแแแแแแแแแแแแแแทแแแแแทแแถแแ แแแฝแแแฝแแแแแแแแผแแแถแแแแแแแแแแแแแแแแแถแแ SpaceStation แ แแพแโแแนแโแแปแโแแถโแแแแปแโแ แทแแแโแแแโแแแแพโแแถแโแแโแ แแแแ แแแแแผแแแแแแถแแแแแพแแ แแ แปแแแแแแแแถแแแแแผแแแแแถแแนแ SRP แแถแแแแแแแแแพแแ
class SpaceStation
attr_reader :sensors, :supply_hold, :fuel_tank, :thrusters
def initialize
@supply_hold = SupplyHold.new
@sensors = Sensors.new
@fuel_tank = FuelTank.new
@thrusters = Thrusters.new(@fuel_tank)
end
end
class Sensors
def run_sensors
puts "----- Sensor Action -----"
puts "Running sensors!"
end
end
class SupplyHold
attr_accessor :supplies
def initialize
@supplies = {}
end
def load_supplies(type, quantity)
puts "----- Supply Action -----"
puts "Loading #{quantity} units of #{type} in the supply hold."
if @supplies[type]
@supplies[type] += quantity
else
@supplies[type] = quantity
end
end
def use_supplies(type, quantity)
puts "----- Supply Action -----"
if @supplies[type] != nil && @supplies[type] > quantity
puts "Using #{quantity} of #{type} from the supply hold."
@supplies[type] -= quantity
else
puts "Supply Error: Insufficient #{type} in the supply hold."
end
end
def report_supplies
puts "----- Supply Report -----"
if @supplies.keys.length > 0
@supplies.each do |type, quantity|
puts "#{type} avalilable: #{quantity} units"
end
else
puts "Supply hold is empty."
end
end
end
class FuelTank
attr_accessor :fuel
def initialize
@fuel = 0
end
def get_fuel_levels
@fuel
end
def load_fuel(quantity)
puts "----- Fuel Action -----"
puts "Loading #{quantity} units of fuel in the tank."
@fuel += quantity
end
def use_fuel(quantity)
puts "----- Fuel Action -----"
puts "Using #{quantity} units of fuel from the tank."
@fuel -= quantity
end
def report_fuel
puts "----- Fuel Report -----"
puts "#{@fuel} units of fuel available."
end
end
class Thrusters
def initialize(fuel_tank)
@linked_fuel_tank = fuel_tank
end
def activate_thrusters
puts "----- Thruster Action -----"
if @linked_fuel_tank.get_fuel_levels >= 10
puts "Thrusting action successful."
@linked_fuel_tank.use_fuel(10)
else
puts "Thruster Error: Insufficient fuel available."
end
end
end
แแถแแแถแแแแแถแแแแแแผแแแถแ แแแพแ แแแแแแทแแธแแแแถแแแแถแแพแแแ แแแแแพแแแถแแฅแกแผแแแแแ แฅแกแผแแแแแแแแถแแ SpaceStation แแแแแแพแแแถแแแแแถแแแถแแปแแแบแแแแแถแแแแแ แแแพแแแแแแแแแทแแแแแทแแถแแแแแผแแแถแแแแแฝแ แแแแพแแแแแแถแแแแแแแแแแแแนแแแแขแแ แแฝแแแถแแแงแแแแแแ แถแแแแแแแถ แแแแแแแแแแแแแแแแแแแแแแขแถแ แแแแพแแแแถแแแแถแ แแปแแแถแแ แแทแแงแแแแแแแแแปแแ
แแแแแถแแแขแแแแแถแแฝแแฅแกแผแแแแแแถแแแแแถแแแแแแแแแผแแแแแถแ แงแแแแแแ แถแแแแแแแถ; SupplyHold; แแปแแแถแแ; แขแแแแแปแแ แแแถแแ
แแถแแแถแแแแแถแแแแแแผแแแแแถแแแแแฝแแ แแแฝแแแ แแแแปแแแแแแแแแผแแแแแ แ แแแปแ แแแแแบแแถแแปแแแถแแแธแแฝแแแแทแแแแแนแแแแแแแผแแแถแแแปแแแแแแแแ แแแแปแแแแแถแแแแแแแแฝแแแแแแปแแแแแแแ แแฝแแแแแแแผแแแถแแแแแ แแแถแแแแแแแแแขแถแ แแแแถแแแแแแถแ แแทแแแแแแ แแพแแแถแแแแถแแแแปแแแถแแปแแแแแถแแแปแแแถแแแแแแแแแแแถ แแพแแแแธแขแแปแแแแแแถแแแแแแถแแแแแแแถแแแแธแแแแแถแแแแแแถแ แฅแกแผแแแแ แแแแแทแแแพแแพแแแแแผแแแถแแแแแถแแแแแแผแแแแแแแแแแแแแแแแแแแแพแแแถแ แแแแแแแถแแแแแแผแแแธแแ แแถแแแแแแแแ hash แแ array แแแแแแแถแแแแแแแแพ SupplyHold class แแพแแแทแแ แถแแแถแ แแแแแแแผแแปแแแแแแแแแแแแ แแทแแธแแแ แแแแแทแแแพแแแแแแแธแแแแแปแแถแแแแแถแแแแแแผแแขแแแธแแฝแแแ แแแแปแแแแแแแแแแแแถแแ แแแแถแแธแแแแแแ แแแแแนแแแ แแแแแ แแแแปแแแแแธแแแ แแแแถแแ SpaceStation แแนแแแทแแแนแแขแแแธแแถแแแแแถแแแแแแผแแแแ
แแแแแแแธแแแแแแพแแแแแแแแพแแถแแแ แแแแถแแธแแแขแแแถแแแแแ แแแแถแแแแแถแแ แทแแแแ แแแแแแถแแแแแถแแแแแแผแแแแ แแธแแแแแแแฝแแแแขแถแ แแแแพแแปแแขแแแธแแแแแฝแแแแแแแผแแแถแแ แแผแแแแแแแแแถแแแแถแแผแแแถแแแทแแธแแถแแแแแแแผแ แแถ report_supplies แแทแ report_fuel แแแแแถแแแ แแแแปแแแแแถแแ SupplyHold แแทแ FuelTank แ แแพโแแนแโแแถแโแขแแแธโแแพแโแกแพแโแแแแแทแโแแพ Earth แแปแโแฑแแโแแแแถแแโแแแแผแโแแแแโแแถแแแถแแแ? แแแแถแแแแถแแแแธแแแบ SupplyHold แแทแ FuelTank แแนแแแแแผแแแถแแแแแถแแแแแแผแแ แ แปแโแแพโแขแแแโแแแแผแโแแแแถแแโแแแแผแโแแแแโแแนแโแแแแแผแโแฅแแแแแ แแทแโแแแแแถแแโแแแแพแแแแถแแ? แขแแแแแแแ แแแแถแแแแผแแแแแถแแแแแแผแแแแแถแแแแผแ แแแแถแแถแแแขแแแแแแแแแแ แ แพแโแแแโแแถโแแถแโแแแแถแโแแแแแถแแแโแแแแแแโแแแแแแแแธโแแฝแ โแแ โแ แพแแ แแแแแฝแแแปแแแฟแแแแแ
class SpaceStation
attr_reader :sensors, :supply_hold, :supply_reporter,
:fuel_tank, :fuel_reporter, :thrusters
def initialize
@sensors = Sensors.new
@supply_hold = SupplyHold.new
@supply_reporter = SupplyReporter.new(@supply_hold)
@fuel_tank = FuelTank.new
@fuel_reporter = FuelReporter.new(@fuel_tank)
@thrusters = Thrusters.new(@fuel_tank)
end
end
class Sensors
def run_sensors
puts "----- Sensor Action -----"
puts "Running sensors!"
end
end
class SupplyHold
attr_accessor :supplies
attr_reader :reporter
def initialize
@supplies = {}
end
def get_supplies
@supplies
end
def load_supplies(type, quantity)
puts "----- Supply Action -----"
puts "Loading #{quantity} units of #{type} in the supply hold."
if @supplies[type]
@supplies[type] += quantity
else
@supplies[type] = quantity
end
end
def use_supplies(type, quantity)
puts "----- Supply Action -----"
if @supplies[type] != nil && @supplies[type] > quantity
puts "Using #{quantity} of #{type} from the supply hold."
@supplies[type] -= quantity
else
puts "Supply Error: Insufficient #{type} in the supply hold."
end
end
end
class FuelTank
attr_accessor :fuel
attr_reader :reporter
def initialize
@fuel = 0
end
def get_fuel_levels
@fuel
end
def load_fuel(quantity)
puts "----- Fuel Action -----"
puts "Loading #{quantity} units of fuel in the tank."
@fuel += quantity
end
def use_fuel(quantity)
puts "----- Fuel Action -----"
puts "Using #{quantity} units of fuel from the tank."
@fuel -= quantity
end
end
class Thrusters
FUEL_PER_THRUST = 10
def initialize(fuel_tank)
@linked_fuel_tank = fuel_tank
end
def activate_thrusters
puts "----- Thruster Action -----"
if @linked_fuel_tank.get_fuel_levels >= FUEL_PER_THRUST
puts "Thrusting action successful."
@linked_fuel_tank.use_fuel(FUEL_PER_THRUST)
else
puts "Thruster Error: Insufficient fuel available."
end
end
end
class Reporter
def initialize(item, type)
@linked_item = item
@type = type
end
def report
puts "----- #{@type.capitalize} Report -----"
end
end
class FuelReporter < Reporter
def initialize(item)
super(item, "fuel")
end
def report
super
puts "#{@linked_item.get_fuel_levels} units of fuel available."
end
end
class SupplyReporter < Reporter
def initialize(item)
super(item, "supply")
end
def report
super
if @linked_item.get_supplies.keys.length > 0
@linked_item.get_supplies.each do |type, quantity|
puts "#{type} avalilable: #{quantity} units"
end
else
puts "Supply hold is empty."
end
end
end
iss = SpaceStation.new
iss.sensors.run_sensors
# ----- Sensor Action -----
# Running sensors!
iss.supply_hold.use_supplies("parts", 2)
# ----- Supply Action -----
# Supply Error: Insufficient parts in the supply hold.
iss.supply_hold.load_supplies("parts", 10)
# ----- Supply Action -----
# Loading 10 units of parts in the supply hold.
iss.supply_hold.use_supplies("parts", 2)
# ----- Supply Action -----
# Using 2 of parts from the supply hold.
iss.supply_reporter.report
# ----- Supply Report -----
# parts avalilable: 8 units
iss.thrusters.activate_thrusters
# ----- Thruster Action -----
# Thruster Error: Insufficient fuel available.
iss.fuel_tank.load_fuel(100)
# ----- Fuel Action -----
# Loading 100 units of fuel in the tank.
iss.thrusters.activate_thrusters
# ----- Thruster Action -----
# Thrusting action successful.
# ----- Fuel Action -----
# Using 10 units of fuel from the tank.
iss.fuel_reporter.report
# ----- Fuel Report -----
# 90 units of fuel available.
แแ แแแแปแแแแแแ แปแแแแแแแแแแปแแแแแแแแแทแแธแแแ แแแแฝแแแปแแแแแผแแแแแผแแแถแแแแแ แแแแ แแถแแแแถแแแแแแธแแธแแแบ FuelReporter แแทแ SupplyReporter แ แแฝแแแโแแถแแโแแธแโแแถแแโแแถโแแผแโแแแแปแโแขแแแโแแถแแแถแแแแ แแพแแแธแแแแแแ แแพแแแถแแแแแแแแขแแแ instance แแ แแแแถแแ SpaceStation แแผแ แแแแแแแแถแแแแแแแแ แแแแถแแขแถแ แแแแผแแแถแแ แถแแแแแแพแแแแแแทแแแพแ แถแแแถแ แแ แฅแกแผแแแแ แแแแแทแแแพแแแแแธแแแแแแ แ แทแแแแแแแถแแแแแแผแแขแแแธแแแแแแแแ แแแแแพแแแนแแแแแพแแถแแแแแถแแแแแแผแแแ แแพแแแแถแแแแ แ แพแแแทแแแแแแ แแพแแแแถแแแแแแแแแแ
แแถแแถแแแทแแแถแแ แแแแถแแแแแแแแแแแแพแแแ แแแขแถแแแแแแแแแถแแ แแทแแแ แแแ แแผแ แแแแ แแแแแป SupplyReporter แขแถแแแแแแแพ SupplyHold แ แพแ FuelReporter แขแถแแแแแแแพ FuelTank แ แแถแแถแแแทแแแถแแ แแแผแแแแแแแผแแแแแแแถแแแแ แแนแแแปแแแถแแแ แแแปแแแแแแ แแธแแแแขแแแธแแแแแแแแถแแแพแแแ แแแ แแแปแแแแแแฝแ แ แพแ แ แพแแแถแแแแแพแแถแแแแแถแแแแแแผแแแนแแแทแแแทแแถแแแถแแทแแแแแแแแ - แแถแแแแแแแแฝแแแผแแแแแแแแปแแฝแแแนแแแทแแแแแแถแแแแแถแแแแแถแแแแแแแแแแปแแฝแแแแแแแแแแแแแแแ
แแผแ แแแแแ แพแ แแพแแแถแแแแแแพแแแผแแแแผแแปแ แแแแแแแฝแแแปแแแแแผแแแแแแแแแแป/แแแแถแแแแธแแฝแแแแแแผแแแถแแแแแแแแแถแแแถแแแแถแแแ แแถแแแแแพแแถแแแถแแฝแแแผแแแแแแแแแทแแแแแแถแแแแ แถแแ แแถแแแแแแแแถแแถแแนแแแถแแทแ แแ แแถแแแถแแแแแ แแพแแแถแแแแแแแแ โแแแแแปแแแแแแแถแโ แแถแแแแผแแแ แแถ SRP แ
Skillbox แแแแถแแ
- แแแแแแทแแแแถแแถแแแแแแแแแแแแแแแธแแแแแถแ
"แแแแปแแแถแขแแแแแแแแพแแแแ แแแแแ PRO" .- แแแแแแทแแแแถแแถแแขแแธแแแบแแทแ
"แขแแแแขแแทแแแแแแ C# แแธ 0" .- แแแแแแทแแแแถแแถแแแแแแแแแแแถแ
"แขแแแแขแแทแแแแแแ PHP แแธ 0 แแแ PRO" .
แแแแแ: www.habr.com