PDA

View Full Version : بهم ایده بدین این برنامه رو بنویسم



hard engineer
جمعه 26 دی 1393, 01:38 صبح
سلام فقط ایده میخوام مثلن بگین با فلان درخت پیاده سازی کنمش:
طراحي ساختمان داده اي براي تشکيل و شناسايي روابط فاميلي افراد همراه با حوادث زندگي يعني تولد، ازدواج، بچه دار شدن، طلاق، ازدواج مجدد و مرگ.
- برنامه بايد صفحه اي براي ايجاد و تولد اشخاص جديد داشته باشد.
در ابتدا افرادي بدون پدر و مادر متولد مي شوند (وضعيت آغاز جهان) در ادامه افرادي با يکديگر ازدواج مي‎کنند؛ ميتوان اين طور در نظر گرفت که صفحه اي براي ويرايش وضعيت هر فرد داريم و در آن يک گزينه براي ازدواج خواهيم داشت که در آن همسر را مشخص مي‎کنيم (زن و شوهر از جنس مخالف هستند و در نتيجه بايد جنس مرد/ زن بودن فرد را نيز براي هر فرد در زمان ايجاد تعيين کنيد!).
ميتوان اينطور در نظر گرفت که هر فرد تنها ميتواند يک همسر داشته باشد! در هرحال براي افراد جديد مي‎توان والدين را تعيين کرد؛ در اينجا پدر و مادر حتماً بايد با هم ازدواج کرده باشند تا فرد جديد بتواند فرزند آنها باشد.
ساير موارد، به صورت پيش فرض بر اساس عرف و قانون جامعه در نظر گرفته شود.
همچنين به دليل امکان وجود اسامي تکراري از id و سريالي براي تمايز دادن آنها استفاده کنيد.
- داده هاي هر فرد پس از مرگ نيز حفظ شود. براي اينکار ممکن است بخواهيد از يک برچسب گذاري روي هر شخص مرده (براي مثال يک بولين) استفاده کنيد!
- يک زوج امکان طلاق از يکديگر را دارند و هر يک از افرادي که طلاق گرفته اند ممکن است دوباره ازدواج کنند در نتيجه ممکن است فرزاندان ناتني داشته باشيم. شناسايي پدر و مادر ناتني از نکات مهم در برنامه است.

مغزم قفل کرده لطفا ایده بدین
تشکر

plus
جمعه 26 دی 1393, 02:29 صبح
خوب، من فقط فرصت دارم یک شروع رو براتون بگم بقیه‌ش با خودتون.نمی‌دونم چقدر دیدی شی‌گرایی دارین، من از این منظر مدل رو طراحی میکنم.مدل ما، شامل یک (و در حالت بهتر یک یا چند) جهان (World)، تعدادی انسان (Human) و تعدادی رویداد تشکیل شده که هر رویدادی به یک یا چند انسان مرتبط هست.
World
جهان، تعدادی انسان و رویدادهای مربوط به اونها رو شامل میشه.میشه مشخصه ای به عنوان اینکه جهان در وضعیت شروع هست یا نه تعیین کرد.با شروع جهان دو انسان زن و مرد متولد میشن.

class World {
Human[] humans;
Event[] events;
bool initalized;

void DoEvent(Event event);
};

انسان
هر انسان مشخصه هایی مثل جنسیت، پدر، مادر، وضعیت حیات (زنده/مرده)، وضعیت تاهل داره.وضعیت همسر جاری/قبلی رو میشه از روی رویدادهای مربوطه بدست آورد.البته برای دسترسی راحتر میشه به عنوان مشخصه اضافه کرد ولی من اضافه نکردم.

class Human {
bool alive;
Human father;
int gender;
Human mother;
};


رویدادها
رویداد های جهان از نوع های شروع جهان، تولد، ازدواج، طلاق و مرگ هستن.با ثبت کامل رویدادها میشه به کلیه اطلاعات مورد نیاز دسترسی پیدا کرد.

abstract class Event {
DateTime dateTime;
};
class Generation : Event {
Human adam;
Human ave;
};
class Marrage : Event {
Human female;
Human male;
};
class Birth : Event {
Human baby;
};
class Death : Event {
Human human;
};
class Divorce : Event {
Human female;
Human male;
};

متاسفانه وقت لازم برای کامل کردنش رو ندارم فکر میکنم ایده رو گرفته باشین فقط این رو بگم که در این طرح، بررسی شرایط و قوانین رو در رویداد DoEvent با بررسی رویداد مربوطه باید اعمال کنید. برای دریافت اطلاعات از جهان هم باید از رویدادها و انسان های جهان Query بگیرین.
در ضمن کدها بیشتر حالت سودوکد داره و زبان خاصی مد نظرم نبوده.