เจ
เจจเฉเจตเจพเจฆเจ เจคเฉเจ: เจคเฉเจนเจพเจกเฉ เจฒเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจตเจฟเจเจพเจธ เจตเจฟเฉฑเจ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจธเฉฐเจญเจพเจตเจค เจคเฉเจฐ 'เจคเฉ เจ เฉเจธ เจธเจฟเจงเจพเจเจคเจพเจ เจฌเจพเจฐเฉ เจธเฉเจฃเจฟเจ เจนเฉเจตเฉเจเจพเฅค เจเจน เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ เจจเฉเฉฐ เจธเจพเจซเจผ, เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ เจขเจพเจเจเจพเจเจค เจ เจคเฉ เจเจธเจพเจจเฉ เจจเจพเจฒ เจธเจพเจเจญเจฃเจฏเฉเจ เจเฉเจก เจฒเจฟเจเจฃ เจฆเฉ เจฏเฉเจ เจฌเจฃเจพเจเจเจฆเฉ เจนเจจเฅค เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจเจพเจธ เจเฉฐเจฎ เจจเฉเฉฐ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเจฟเจตเฉเจ เจเจฐเจจเจพ เจนเฉ เจเจธ เจฒเจ เจเจ เจคเจฐเฉเจเฉ เจนเจจ. เจตเฉฑเจ-เจตเฉฑเจ เจฎเจพเจนเจฟเจฐเจพเจ เจฆเฉ "เจธเจนเฉ เจฎเจพเจฐเจ" เจฌเจพเจฐเฉ เจตเฉฑเจเฉ-เจตเฉฑเจเจฐเฉ เจตเจฟเจเจพเจฐ เจ เจคเฉ เจธเจฎเจ เจนเฉเฉฐเจฆเฉ เจนเฉ; เจเจน เจธเจญ เจนเจฐเฉเจ เจตเจฟเจ เจเจคเฉ เจฆเฉ เจ เจจเฉเจญเจต 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, SOLID เจตเจฟเฉฑเจ เจเฉเจธเจผเจฟเจค เจเฉเจคเฉ เจเจ เจตเจฟเจเจพเจฐเจพเจ เจจเฉเฉฐ IT เจญเจพเจเจเจพเจฐเฉ เจฆเฉ เจฒเจเจญเจ เจธเจพเจฐเฉ เจชเฉเจฐเจคเฉเจจเจฟเจงเจพเจ เจฆเฉเจเจฐเจพ เจธเจตเฉเจเจพเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจน เจฌเจนเฉเจค เจธเจพเจฐเฉ เจเฉฐเจเฉ เจตเจฟเจเจพเจธ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ เจญเจฟเจเจธเจพเจ เจฆเฉ เจเจญเจพเจฐ เจ เจคเฉ เจตเจฟเจเจพเจธ เจฒเจ เจธเจผเฉเจฐเฉเจเจคเฉ เจฌเจฟเฉฐเจฆเฉ เจฌเจฃ เจเจเฅค
เจเจ เจธเจฎเจเฉเจ เจเจฟ เจ เฉเจธ เจธเจฟเจงเจพเจเจค เจเฉ เจนเจจ เจ
เจคเฉ เจเจน เจธเจพเจกเฉ เจเจฟเจตเฉเจ เจฎเจฆเจฆ เจเจฐเจฆเฉ เจนเจจเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ: เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจฌเจพเจเจฒ เจกเจฟเจตเฉเจฒเจชเจฐ เจชเฉเจฐเฉ" .เจ เจธเฉเจ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจนเจพเจ: "Habr" เจฆเฉ เจธเจพเจฐเฉ เจชเจพเจ เจเจพเจ เจฒเจ - "Habr" เจชเฉเจฐเจเจพเจฐ เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจฟเจธเฉ เจตเฉ เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจเฉเจฐเจธ เจตเจฟเฉฑเจ เจฆเจพเจเจฒเจพ เจฒเฉเจฃ เจตเฉเจฒเฉ 10 เจฐเฉเจฌเจฒ เจฆเฉ เจเฉเจเฅค
SOLID เจเฉ เจนเฉ?
เจเจน เจธเจผเจฌเจฆ เจเฉฑเจ เจธเฉฐเจเฉเจช เจฐเฉเจช เจนเฉ, เจธเจผเจฌเจฆ เจฆเจพ เจนเจฐเฉเจ เจ เฉฑเจเจฐ เจเฉฑเจ เจเจพเจธ เจธเจฟเจงเจพเจเจค เจฆเฉ เจจเจพเจฎ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจนเฉ:
- Sเจธเฉฐเจเจ เจฟเจค เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉ เจธเจฟเจงเจพเจเจคเฅค เจเฉฑเจ เจฎเฉเจกเฉเจเจฒ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉ เจฆเจพ เจเฉฑเจ เจนเฉ เจเจพเจฐเจจ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค
The Oเจเจฒเจฎ/เจฌเฉฐเจฆ เจธเจฟเจงเจพเจเจค (เจเฉเฉฑเจฒเฉเจนเฉ/เจฌเฉฐเจฆ เจธเจฟเจงเจพเจเจค)เฅค เจเจฒเจพเจธเจพเจ เจ เจคเฉ เจนเฉเจฐ เจคเฉฑเจค เจเจเจธเจเฉเจเจธเจผเจจ เจฒเจ เจเฉเฉฑเจฒเฉเจนเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจ, เจชเจฐ เจธเฉเจง เจฒเจ เจฌเฉฐเจฆ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅคโThe Liskov เจฌเจฆเจฒเฉ เจฆเจพ เจธเจฟเจงเจพเจเจค (เจฒเจฟเจธเจเฉเจต เจฌเจฆเจฒ เจธเจฟเจงเจพเจเจค)เฅค เจฌเฉเจธ เจเจพเจเจช เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจตเจพเจฒเฉ เจซเฉฐเจเจธเจผเจจ เจฌเฉเจธ เจเจพเจเจช เจฆเฉ เจเจช-เจเจฟเจธเจฎเจพเจ เจจเฉเฉฐ เจเจพเจฃเฉ เจฌเจฟเจจเจพเจ เจตเจฐเจคเจฃ เจฆเฉ เจฏเฉเจ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅคThe Iเจเฉฐเจเจฐเจซเฉเจธ เจตเฉฑเจ เจเจฐเจจ เจฆเจพ เจธเจฟเจงเจพเจเจค โ (เจเฉฐเจเจฐเจซเฉเจธ เจตเฉฑเจ เจเจฐเจจ เจฆเจพ เจธเจฟเจงเจพเจเจค)เฅค เจธเจพเจซเจเจตเฉเจ เจฐ เจธเฉฐเจธเจฅเจพเจตเจพเจ เจจเฉเฉฐ เจเจนเจจเจพเจ เจคเจฐเฉเจเจฟเจเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจจเจนเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเฉ เจเจน เจจเจนเฉเจ เจตเจฐเจคเจฆเฉ เจนเจจเฅคThe Dเจจเจฟเจฐเจญเจฐเจคเจพ เจเจฒเจ เจธเจฟเจงเจพเจเจค (เจจเจฟเจฐเจญเจฐเจคเจพ เจเจฒเจเจฃ เจฆเจพ เจธเจฟเจงเจพเจเจค)เฅค เจเฉฑเจ เจชเฉฑเจงเจฐเจพเจ 'เจคเฉ เจฎเฉเจกเฉเจเจฒ เจนเฉเจ เจฒเฉ เจชเฉฑเจงเจฐ 'เจคเฉ เจฎเฉเจกเฉเจเจฒเจพเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจจเจนเฉเจ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅค
เจธเจฟเฉฐเจเจฒ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉ เจธเจฟเจงเจพเจเจค
โ
เจธเจฟเฉฐเจเจฒ เจฐเจฟเจธเจชเฉเจเจธเฉเจฌเจฟเจฒเจเฉ เจธเจฟเจงเจพเจเจค (SRP) เจเจนเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจเจฒเจพเจธ เจเจพเจ เจฎเฉเจกเฉเจเจฒ เจเจธ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจฆเฉ เจธเจฟเจฐเจซ เจเฉฑเจ เจนเจฟเฉฑเจธเฉ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจธ เจเจฟเฉฐเจฎเฉเจตเจพเจฐเฉ เจฆเฉ เจคเฉฑเจค เจเฉเจฐ-เจธเจฌเฉฐเจงเจค เจเจฒเจพเจธเจพเจ เจตเจฟเฉฑเจ เจเจฟเฉฐเจกเฉ เจเจพเจฃ เจฆเฉ เจฌเจเจพเจ เจเจนเจจเจพเจ เจฆเฉ เจเจชเจฃเฉ เจเจฎเจพเจค เจจเฉเฉฐ เจธเฉเจเจชเฉ เจเจพเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅค SRP เจฆเฉ เจกเจฟเจตเฉเจฒเจชเจฐ เจ
เจคเฉ เจฎเฉเฉฑเจ เจชเฉเจฐเจเจพเจฐเจ, เจฐเฉเจฌเจฐเจ เจเจธ. เจฎเจพเจฐเจเจฟเจจ, เจเจตเจพเจฌเจฆเฉเจนเฉ เจจเฉเฉฐ เจคเจฌเจฆเฉเจฒเฉ เจฆเจพ เจเจพเจฐเจจ เจฆเฉฑเจธเจฆเฉ เจนเจจเฅค เจเจธเจจเฉ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเจธ เจธเจผเจฌเจฆ เจจเฉเฉฐ เจเจชเจฃเฉ เจเฉฐเจฎ "เจเจฌเจเฉเจเจ-เจเจฐเฉเจเจเจเจก เจกเจฟเจเจผเจพเจเจจ เจฆเฉ เจธเจฟเจงเจพเจเจค" เจฆเฉ เจเฉฑเจ เจคเฉฑเจค เจตเจเฉเจ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจเฉเจคเจพ เจธเฉเฅค เจธเฉฐเจเจฒเจช เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจเจจเฉเจเจเฉเจตเจฟเจเฉ เจชเฉเจเจฐเจจ เจจเฉเฉฐ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจเฉ เจชเจนเจฟเจฒเจพเจ เจเฉเจฎ เจกเฉเจฎเจพเจฐเจเฉ เจฆเฉเจเจฐเจพ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค
เจเจธ เจธเฉฐเจเจฒเจช เจตเจฟเฉฑเจ เจกเฉเจตเจฟเจก เจชเจฐเจจเจพเจธ เจฆเฉเจเจฐเจพ เจคเจฟเจเจฐ เจเฉเจคเฉเจเจ เจเจ เจงเจพเจฐเจจเจพเจตเจพเจ เจตเฉ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจฆเฉ เจฎเฉเฉฑเจ เจนเจจ เจเจจเจเฉเจชเจธเฉเจฒเฉเจธเจผเจจ เจ เจคเฉ เจเจพเจฃเจเจพเจฐเฉ เจฒเฉเจเจพเจเจฃเจพเฅค เจชเจฐเจจเจพเจธ เจจเฉ เจฆเจฒเฉเจฒ เจฆเจฟเฉฑเจคเฉ เจเจฟ เจเฉฑเจ เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจตเฉฑเจเจฐเฉ เจฎเจพเจกเจฟเจเจฒเจพเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฃเจพ เจฌเจฒเจพเจ เจกเจพเจเจเฉเจฐเจพเจฎ เจเจพเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจซเจฒเฉ เจฆเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ 'เจคเฉ เจ เจงเจพเจฐเจค เจจเจนเฉเจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจเจฟเจธเฉ เจตเฉ เจฎเฉเจกเจฟเจเจฒ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจพเจธ เจนเฉฑเจฒ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเฉ เจเจพเจนเจเจพเจ เจจเฉเฉฐ เจเฉฑเจเฉ-เจเฉฑเจ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจคเจฐเฉเจเฉ เจจเจพเจฒ, เจฎเจพเจฐเจเจฟเจจ เจจเฉ เจเฉฑเจ เจเฉฐเจชเจจเฉ (เจธเฉ.เจ.เจ., เจธเฉ.เจเฉ.เจ., เจธเฉ.เจเฉฑเจซ.เจ.) เจฆเฉ เจธเฉเจจเฉเจ เจฐ เจฎเฉเจจเฉเจเจฐเจพเจ เจจเจพเจฒ เจเฉฑเจ เจฆเจฟเจฒเจเจธเจช เจเจฆเจพเจนเจฐเจฃ เจฆเจฟเฉฑเจคเฉ, เจเจฟเจจเฉเจนเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐ เจเฉฑเจ เจตเฉฑเจ-เจตเฉฑเจ เจเจฆเฉเจธเจผเจพเจ เจฒเจ เจเจพเจธ เจตเจชเจพเจฐเจ เจธเฉเจซเจเจตเฉเจ เจฐ เจตเจฐเจคเจฆเจพ เจนเฉเฅค เจจเจคเฉเจเฉ เจตเจเฉเจ, เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉเจ เจตเฉ เจฆเฉเจเฉ เจชเฉเจฐเจฌเฉฐเจงเจเจพเจ เจฆเฉ เจนเจฟเฉฑเจคเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจธเฉเจซเจเจตเฉเจ เจฐ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค
เจฌเฉเจฐเจนเจฎ เจตเจธเจคเฉ
เจนเจฎเฉเจธเจผเจพ เจตเจพเจเจ, SRP เจธเจฟเฉฑเจเจฃ เจฆเจพ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจคเจฐเฉเจเจพ เจนเฉ เจเจธ เจจเฉเฉฐ เจ เจฎเจฒ เจตเจฟเฉฑเจ เจฆเฉเจเจฃเจพเฅค เจเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจเฉฑเจ เจญเจพเจ เจจเฉเฉฐ เจตเฉเจเฉเจ เจเฉ เจธเจฟเฉฐเจเจฒ เจฐเจฟเจธเจชเจพเจเจธเฉเจฌเจฟเจฒเจเฉ เจธเจฟเจงเจพเจเจค เจฆเฉ เจชเจพเจฒเจฃเจพ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจน เจฐเฉเจฌเฉ เจเฉเจก เจนเฉ เจเฉ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจฆเฉ เจตเจฟเจนเจพเจฐ เจ เจคเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจธเจฎเฉเจเจฟเจ เจเจฐเฉ เจ
เจคเฉ เจนเฉเจ เจฒเจฟเจเจฟเจเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉ:
เจเจนเจจเจพเจ เจตเจธเจคเฉเจเจ เจฆเฉเจเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉเจเจ เจเฉ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจตเจฟเฉฑเจ เจเฉเจธเจผเจฟเจค เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจเฅค
เจเจฟเจนเฉเฉ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเฉ เจนเจจ.
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 เจคเฉเจ เจเฉฑเจ เจเจพเจฒ เจเจตเฉเจเฉ), เจชเจฐ เจเฉฑเจฅเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฒเจ เจเฉเจ เจนเฉเฅค
เจเจธ เจคเจฐเฉเจนเจพเจ, เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจฆเฉเจเจ เจเจ เจตเฉฑเจเจฐเฉเจเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉเจเจ (เจเจพเจ เจเฉฐเจฎ) เจนเจจเฅค เจเจนเจจเจพเจ เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจเจฟเจธเจฎเจพเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ:
- เจธเฉเจเจธเจฐ;
- เจธเจชเจฒเจพเจ (เจเจชเจญเฉเจเจคเจพ);
- เจฌเจพเจฒเจฃ;
- เจเจเจธเจฒเฉเจเจฐ
เจนเจพเจฒเจพเจเจเจฟ เจธเจเฉเจธเจผเจจ เจฆเฉ เจเจฟเจธเฉ เจตเฉ เจเจฐเจฎเจเจพเจฐเฉ เจจเฉเฉฐ เจเจฒเจพเจธ เจจเจนเฉเจ เจธเฉเจเจชเฉ เจเจ เจนเฉ, เจ เจธเฉเจ เจเจธเจพเจจเฉ เจจเจพเจฒ เจเจฒเจชเจจเจพ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ เจเจฟ เจเจฟเจธ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉเฅค เจเจผเจฟเจเจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจค เจคเฉเจฐ 'เจคเฉ, เจตเจฟเจเจฟเจเจจเฉ เจธเฉเจเจธเจฐเจพเจ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจฒเฉเจเจฟเจธเจเจฟเจเจธ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจธเจชเจฒเจพเจ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉ, เจเฉฐเจเฉเจจเฉเจ เจฐ เจฌเจพเจฒเจฃ เจฆเฉ เจธเจชเจฒเจพเจ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉ, เจ เจคเฉ เจชเจพเจเจฒเจ เจฌเฉเจธเจเจฐเจพเจ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉ เจ เจธเฉเจ เจเจนเจฟ เจธเจเจฆเฉ เจนเจพเจ เจเจฟ เจเจน เจชเฉเจฐเฉเจเจฐเจพเจฎ SRP เจ เจจเฉเจเฉเจฒ เจจเจนเฉเจ เจนเฉ? เจเฉ เจฌเจฟเจฒเจเฉเจฒ. เจชเจฐ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจเฉฑเจ เจเจฎ "เจฐเฉฑเจฌ เจตเจธเจคเฉ" เจนเฉ เจเฉ เจธเจญ เจเฉเจ เจเจพเจฃเจฆเจพ เจนเฉ เจ เจคเฉ เจธเจญ เจเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจน เจเจฌเจเฉเจเจ-เจ เจงเจพเจฐเจฟเจค เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจฐเจฎเฉเฉฑเจ เจตเจฟเจฐเฉเจงเฉ เจชเฉเจเจฐเจจ เจนเฉเฅค เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเฉ เจฒเจ, เจ เจเจฟเจนเฉเจเจ เจตเจธเจคเฉเจเจ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจนเฉเจฃ เจคเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉ, เจนเจพเจ, เจชเจฐ เจเจฒเจชเจจเจพ เจเจฐเฉ เจเจฟ เจเฉ เจนเฉเจตเฉเจเจพ เจเฉเจเจฐ เจ เจธเฉเจ เจจเจตเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจเฉเฉเจฆเฉ เจนเจพเจเฅค เจธเจผเจพเจเจฆ เจธเจพเจกเฉ เจชเฉเจฒเจพเฉ เจธเจเฉเจธเจผเจจ เจจเฉเฉฐ เจฎเฉเจกเฉเจเจฒ เจธเจเฉเจธเจผเจจ เจเจพเจ เจฎเฉเจเจฟเฉฐเจ เจฐเฉเจฎ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจ เจคเฉ เจเจฟเฉฐเจจเฉ เจเจผเจฟเจเจฆเจพ เจซเฉฐเจเจธเจผเจจ เจนเฉเจฃเจเฉ, เจเจจเจพ เจนเฉ เจเจผเจฟเจเจฆเจพ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจตเจงเฉเจเจพเฅค เจเฉเจฐ, เจเจฟเจเจเจเจฟ เจเจน เจธเจนเฉเจฒเจค เจนเฉเจฐเจพเจ เจจเจพเจฒ เจเฉเฉ เจเจพเจตเฉเจเฉ, เจชเฉเจฐเฉ เจเฉฐเจชเจฒเฉเจเจธ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจจเจพ เจนเฉเจฐ เจตเฉ เจฎเฉเจธเจผเจเจฒ เจนเฉ เจเจพเจตเฉเจเจพเฅค เจจเจคเฉเจเฉ เจตเจเฉเจ, เจ เจธเฉเจ เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจเจธเจฒเฉเจเจฐเจพเจ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจตเจฟเฉฑเจ เจตเจฟเจเจจ เจชเจพ เจธเจเจฆเฉ เจนเจพเจเฅค เจเฉเจเจฐ เจเฉเจ เจเฉเจเจเจฐเจคเจพ เจธเฉเจเจธเจฐเจพเจ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจพเจ เจฆเฉ เจฌเฉเจจเจคเฉ เจเจฐเจฆเจพ เจนเฉ, เจคเจพเจ เจเจน เจธเจเฉเจธเจผเจจ เจฆเฉ เจธเฉฐเจเจพเจฐ เจชเฉเจฐเจฃเจพเจฒเฉเจเจ เจจเฉเฉฐ เจฌเจนเฉเจค เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ เจชเฉเจฐเจญเจพเจตเจฟเจค เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค
เจเจธเจเจฐเจชเฉ เจธเจฟเจงเจพเจเจค เจฆเฉ เจเจฒเฉฐเจเจฃเจพ เจเจฐเจจ เจจเจพเจฒ เจฅเฉเฉเฉเจนเฉ เจธเจฎเฉเจ เจฒเจ เจฐเจฃเจจเฉเจคเจ เจเจฟเฉฑเจค เจฎเจฟเจฒ เจธเจเจฆเฉ เจนเฉ, เจชเจฐ เจ เฉฐเจค เจตเจฟเฉฑเจ เจ เจธเฉเจ "เจเฉฐเจ เจนเจพเจฐ เจเจพเจตเจพเจเจเฉ", เจ เจคเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจ เจเจฟเจนเฉ เจฐเจพเจเจธเจผ เจจเฉเฉฐ เจเจพเจเจฎ เจฐเฉฑเจเจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจเจฒ เจนเฉ เจเจพเจตเฉเจเจพเฅค เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเฉเจก เจฆเฉ เจตเฉฑเจเจฐเฉ เจญเจพเจเจพเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฃเจพ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจนเฉ, เจเจฟเจจเฉเจนเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐ เจเฉฑเจ เจเจพเจธ เจเจพเจฐเจตเจพเจ เจเจฐเจจ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉเฅค เจเจธ เจจเฉเฉฐ เจธเจฎเจเจฆเฉ เจนเฉเจ, เจเจ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจจเฉเฉฐ เจฌเจฆเจฒเฉเจเฅค
เจเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉ เจตเฉฐเจกเฉเจ
เจเฉฑเจชเจฐ เจ เจธเฉเจ เจเจพเจฐ เจเจฟเจธเจฎเจพเจ เจฆเฉ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจนเฉ เจเฉ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจฆเฉเจเจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจฐเฉเจซเฉเจเจเจฐเจฟเฉฐเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจ เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเจพเจเจเฉเฅค เจ เฉฑเจชเจกเฉเจ เจเฉเจคเจพ เจเฉเจก 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
เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจนเจจ, เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเจฟเจธเจผเจเจค เจคเฉเจฐ 'เจคเฉ เจนเฉเจฃ เจฌเจฟเจนเจคเจฐ เจฆเจฟเจเจพเจ เจฆเฉ เจฐเจฟเจนเจพ เจนเฉเฅค เจนเฉเจฃ เจธเจพเจกเฉ เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจเฉฑเจ เจเฉฐเจเฉเจจเจฐ เจฌเจฃ เจเจ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจธเฉฐเจตเฉเจฆเจเจพเจ เจฆเจพ เจเฉฑเจ เจธเฉเฉฑเจ, เจเฉฑเจ เจเจชเจคเจฏเฉเจ เจธเจชเจฒเจพเจ เจธเจฟเจธเจเจฎ, เจเฉฑเจ เจฌเจพเจฒเจฃ เจเฉเจเจ, เจ เจคเฉ เจฌเฉเจธเจเจฐเจพเจ เจธเจฎเฉเจค เจจเจฟเจฐเจญเจฐ เจนเจฟเฉฑเจธเจฟเจเจ เจฒเจ เจธเฉฐเจเจพเจฒเจจ เจธเจผเฉเจฐเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจเจฟเจธเฉ เจตเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจฒเจ เจนเฉเจฃ เจเฉฑเจ เจ เจจเฉเจธเจพเจฐเฉ เจธเจผเฉเจฐเฉเจฃเฉ เจนเฉ: เจธเฉเจเจธเจฐ; เจธเจชเจฒเจพเจ เจนเฉเจฒเจก; เจซเจฟเจเจฒ เจเฉเจเจ; เจฅเจฐเจธเจเจฐเจธเฅค
เจเฉเจก เจฆเฉ เจเจธ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ เจเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจฌเจฆเจฒเจพเจ เจเฉเจคเฉ เจเจ เจนเจจเฅค เจฌเจฟเฉฐเจฆเฉ เจเจน เจนเฉ เจเจฟ เจตเจฟเจ เจเจคเฉเจเจค เจซเฉฐเจเจธเจผเจจเจพเจ เจจเฉเฉฐ เจจเจพ เจธเจฟเจฐเจซเจผ เจเจนเจจเจพเจ เจฆเฉ เจเจชเจฃเฉ เจตเจฐเจเจพเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจธเฉฐเจเจ เจฟเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจญเจตเจฟเฉฑเจเจฌเจพเจฃเฉ เจ เจคเฉ เจเจเจธเจพเจฐ เจฌเจฃ เจธเจเจฃเฅค เจ เจธเฉเจ เจคเจพเจฒเจฎเฉเจฒ เจฆเฉ เจธเจฟเจงเจพเจเจค เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฐเจจ เจฒเจ เจธเจฎเจพเจจ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจตเจพเจฒเฉ เจคเฉฑเจคเจพเจ เจฆเจพ เจธเจฎเฉเจน เจเจฐเจฆเฉ เจนเจพเจเฅค เจนเฉเจฃ, เจเฉเจเจฐ เจธเจพเจจเฉเฉฐ เจธเจฟเจธเจเจฎ เจฆเฉ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจคเจฐเฉเจเฉ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจเฉฑเจ เจนเฉเจธเจผ เจขเจพเจเจเฉ เจคเฉเจ เจเฉฑเจ เจเจฐเฉ เจตเจฟเฉฑเจ เจเจพเจฃ เจฒเจ, เจธเจฟเจฐเจซเจผ เจธเจชเจฒเจพเจเจนเฉเจฒเจก เจเจฒเจพเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ; เจธเจพเจจเฉเฉฐ เจนเฉเจฐ เจฎเฉเจกเฉเจเจฒเจพเจ เจจเฉเฉฐ เจเฉเจนเจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค เจเจธ เจคเจฐเฉเจนเจพเจ, เจเฉ เจฒเฉเจเจฟเจธเจเจฟเจ เจ เจซเจธเจฐ เจเจชเจฃเฉ เจธเฉเจเจธเจผเจจ เจตเจฟเฉฑเจ เจเฉเจ เจฌเจฆเจฒเจฆเจพ เจนเฉ, เจคเจพเจ เจฌเจพเจเฉ เจธเจเฉเจธเจผเจจ เจฌเจฐเจเจฐเจพเจฐ เจฐเจนเฉเจเจพ. เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจจเฉเฉฐ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฌเจพเจฐเฉ เจตเฉ เจชเจคเจพ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพเฅค
เจธเจชเฉเจธ เจธเจเฉเจธเจผเจจ 'เจคเฉ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจธเจพเจกเฉ เจ เจงเจฟเจเจพเจฐเฉ เจคเจฌเจฆเฉเจฒเฉเจเจ เจคเฉเจ เจธเจผเจพเจเจฆ เจเฉเจธเจผ เจนเจจ เจเจฟเจเจเจเจฟ เจเจน เจเจจเฉเจนเจพเจ เจฆเฉ เจฒเฉเฉ เจฒเจ เจฌเฉเจจเจคเฉ เจเจฐ เจธเจเจฆเฉ เจนเจจเฅค เจงเจฟเจเจจ เจฆเจฟเจ เจเจฟ เจเฉเจก เจตเจฟเฉฑเจ เจธเจชเจฒเจพเจเจนเฉเจฒเจก เจ เจคเฉ เจซเจฟเจเจฒเจเฉเจเจ เจเจฒเจพเจธเจพเจ เจตเจฟเฉฑเจ เจฐเจฟเจชเฉเจฐเจ_เจธเจชเจฒเจพเจเจเจผ เจ เจคเฉ เจฐเจฟเจชเฉเจฐเจ_เจซเจฟเจเจฒ เจตเจฐเจเฉ เจคเจฐเฉเจเฉ เจนเจจเฅค เจเฉ เจนเฉเจตเฉเจเจพ เจเฉเจเจฐ เจงเจฐเจคเฉ เจจเฉเฉฐ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจจ เจฆเฉ เจคเจฐเฉเจเฉ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฒเจ เจเจฟเจนเจพ เจเจพเจตเฉ? เจฆเฉเจตเฉเจ เจเจฒเจพเจธเจพเจ, เจธเจชเจฒเจพเจ เจนเฉเจฒเจก เจ เจคเฉ เจซเจฟเจเจฒ เจเฉเจเจ, เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจเจงเจจ เจ เจคเฉ เจเจชเจคเจเจพเจฐเจพเจ เจจเฉเฉฐ เจกเจฟเจฒเฉเจตเจฐ เจเจฐเจจ เจฆเฉ เจคเจฐเฉเจเฉ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจคเจพเจ เจเฉ เจนเฉเจตเฉเจเจพ? เจคเฉเจนเจพเจจเฉเฉฐ เจธเจผเจพเจเจฆ เจธเจพเจฐเฉเจเจ เจเจนเฉ เจเจฒเจพเจธเจพเจ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฆเจฒเจฃเฉเจเจ เจชเฉเจฃเจเฉเจเจเฅค เจ เจคเฉ เจเจน เจชเจนเจฟเจฒเจพเจ เจนเฉ SRP เจธเจฟเจงเจพเจเจค เจฆเฉ เจเจฒเฉฐเจเจฃเจพ เจนเฉเฅค เจเจ เจเจธเจจเฉเฉฐ เจ เฉเจ เจเจฐเฉเจเฅค
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.
เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจเจธ เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ, เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉเจเจ เจจเฉเฉฐ เจฆเฉ เจจเจตเฉเจเจ เจธเจผเฉเจฐเฉเจฃเฉเจเจ, เจซเจฟเจเจฒเจฐเจฟเจชเฉเจฐเจเจฐ เจ เจคเฉ เจธเจชเจฒเจพเจเจฐเจฟเจชเฉเจฐเจเจฐ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจนเฉเฅค เจเจน เจฆเฉเจตเฉเจ เจฐเจฟเจชเฉเจฐเจเจฐ เจเจฎเจพเจค เจฆเฉ เจฌเฉฑเจเฉ เจนเจจเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจ เจธเฉเจ เจธเจชเฉเจธเจธเจเฉเจธเจผเจจ เจเจฒเจพเจธ เจตเจฟเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจนเจจ เจคเจพเจ เจเฉ เจฒเฉเฉเฉเจเจฆเฉ เจธเจฌเจเจฒเจพเจธ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ เจเจพ เจธเจเฉเฅค เจนเฉเจฃ, เจเฉเจเจฐ เจงเจฐเจคเฉ เจเฉเจ เจนเฉเจฐ เจฌเจฆเจฒเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจเจช-เจเจฒเจพเจธเจพเจ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจพเจ เจเจฐเจพเจเจเฉ, เจจเจพ เจเจฟ เจฎเฉเฉฑเจ เจธเจผเฉเจฐเฉเจฃเฉ เจตเจฟเฉฑเจเฅค
เจฌเฉเจธเจผเฉฑเจ, เจธเจพเจกเฉเจเจ เจเฉเจ เจเจฎเจพเจคเจพเจ เจ เจเฉ เจตเฉ เจเฉฑเจ เจฆเฉเจเฉ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจนเจจเฅค เจเจธ เจคเจฐเฉเจนเจพเจ, SupplyReporter เจเจฌเจเฉเจเจ SupplyHold 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉ, เจ เจคเฉ FuelReporter FuelTank 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจฌเฉเจธเจเจฐ เจฌเจพเจฒเจฃ เจเฉเจเจ เจจเจพเจฒ เจเฉเฉเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจ. เจชเจฐ เจเฉฑเจฅเฉ เจธเจญ เจเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจคเจฐเจเจชเฉเจฐเจจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจ เจคเฉ เจคเจฌเจฆเฉเจฒเฉเจเจ เจเจฐเจจเจพ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจฎเฉเจธเจผเจเจฒ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ - เจเฉฑเจ เจตเจธเจคเฉ เจฆเฉ เจเฉเจก เจจเฉเฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเจจเจพ เจฆเฉเจเฉ เจจเฉเฉฐ เจฌเจนเฉเจค เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉเจ เจเจฐเฉเจเจพ.
เจเจธ เจคเจฐเฉเจนเจพเจ, เจ เจธเฉเจ เจเฉฑเจ เจฎเจพเจกเจฟเจเจฒเจฐ เจเฉเจก เจฌเจฃเจพเจเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจนเจฐ เจเฉฑเจ เจเจฌเจเฉเจเจ/เจเจฒเจพเจธ เจฆเฉเจเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉเจเจ เจจเฉเฉฐ เจ เฉเจ เจคเจฐเฉเจนเจพเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจ เจเจฟเจนเฉ เจเฉเจก เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉ, เจเจธ เจจเฉเฉฐ เจเจพเจเจฎ เจฐเฉฑเจเจฃเจพ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเฉฐเจฎ เจนเฉเจตเฉเจเจพเฅค เจ เจธเฉเจ เจธเจพเจฐเฉ โเจฌเฉเจฐเจนเจฎ เจตเจธเจคเฉโ เจจเฉเฉฐ SRP เจตเจฟเฉฑเจ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจนเฉเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ:
- เจฆเฉ เจธเจพเจฒเจพ เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจตเฉเฉฑเจฌ เจกเจฟเจตเฉเจฒเจชเจฐ เจนเจพเจ" .- Onlineเจจเจฒเจพเจเจจ เจเฉเจฐเจธ
"0 เจคเฉเจ C# เจกเจฟเจตเฉเจฒเจชเจฐ" .- เจชเฉเจฐเฉเจเจเฉเจเจฒ เจธเจพเจฒ เจฆเจพ เจเฉเจฐเจธ
"0 เจคเฉเจ PRO เจคเฉฑเจ PHP เจกเจฟเจตเฉเจฒเจชเจฐ" .
เจธเจฐเฉเจค: www.habr.com