Моя программа собирается построить много домов. Спецификация для каждого дома основана на определенной схеме, и каждый дом должен быть построен в определенном порядке. Я представляю, что у меня будет строительная бригада. Эта команда может сделать все,
class crew
blueprint
fn frame_house
fn get_wood
fn_drive_to_store
fn do_framing
get_wood
do_framing
fn carpet_house
fn buy_carpet
fn install carpet
buy_carpet
do_framing
-
и тогда я могу дать им стопку чертежей и сказать им, чтобы они приступили к работе ...
each blueprint
laborers = new crew(blueprint)
laborers.frame_house
laborers.carpet_house
-
Или я хочу, чтобы мои работники были более точными?
class FrameCrew inherits Crew
fn get_wood
fn drive_to_store
fn do_framing
get_wood
do_framing
-
и тогда я смогу ....
foreach blueprint
#send crews to work with the blueprint
Или я мог бы использовать их в проекте, в котором есть и проект, и конструктор, выполняющий роль мастера?
class Project
blueprint
fn construct
#create and deploy crews
class FrameCrew
class CarpetCrew
, а затем просто спроецируйте каждый проект.
Кажется, что, как я думаю об этом, я получу программу, которая выглядит следующим образом:
-
-
-
-
-
-
-
-
-
-
-
-
с каждой внутренней функцией, зависящей от завершения и результатов функции перед ней, и в действительности не нуждающейся в выполнении каждой задачи более одного раза (не требуется дом в кадре дважды). Мне кажется, что это не сильно отличается от процедурного стиля, за исключением того факта, что я определяю и вызываю функции в разных местах, что просто кажется дополнительной работой. Наверное, я спрашиваю, есть ли способ построить объектно-ориентированную систему, которая предлагает решающее преимущество (организация, простота использования, гибкость и т. Д.) Над процедурной системой? Я очень запутался в этом вопросе. Я запустил программу процедурным способом, и она быстро стала очень отвратительной. Я начал переделывать его (что, вероятно, является моим плохим представлением) объектно-ориентированным способом, и он все еще кажется таким же отвратительным. Если кто-нибудь может дать какой-либо совет о том, как организовать эти проекты более управляемым образом, я был бы очень признателен.
спасибо,
Брэндон