PDA

View Full Version : سوال: نوشتن برنامه Circuit Design و استفاده تمام مفاهیم شی گرایی قابل پیاده سازی در آن



EbiPenMan
سه شنبه 30 آذر 1389, 00:46 صبح
سلام به همگی

معرفی برنامه :
من می خوام یه برنامه طراحی مدارهای منطقی ساده بنویسیم. که کاملا شی گرا باشه.
قرار نیست این برنامه خیلی پیچیده باشه. فقط قراره چنتا گیت های منطقی کامل مثل AND , OR , NOT , XOR و مثلا یه LED و یه کلید و یه منبع تغذیه داشته باشه.

خوب حالا بریم سر اصل مطلب:
میخوام به من برای طراحی و چگونگی استفاده از مفاهیم شی گرایی در این برنامه کمک کنید.

اول بگم من چیکارا کردم:
## من هر کدوم از گیت ها رو با استفاده از User Controls پیاده سازی کردم.
## یه User Control والد دارم که تمام دیگر UC ها از اون ارث می برن.

فعلا کارای UC والدم اینا هست که همه UC ها اینا رو دارن:
## با نگه داشتن کلید چپ موس روی UC ، اون رو میتونه تو فرم جا به جا کنه
## با نگه داشتن کلید راست موس روی UC ، اندازه اون رو میتونه تغییر بده
** فعلا دیگه کارای مشترک دیگه ای رو نمی دونم که همه ازش ارث ببرن.

حالا نکاتی که با کمک شما حل میشه (ایشالا) :
## هر گیت بالاخره n تا ورودی و m تا خروجی دارن. حالا :
؟؟ به نظر شما چطور میشه ورودی و خروجی های هر گیت رو متغییر و تغییر تعدادشون و توسط کاربر گذاشت
** مثلا گیت NOT فقط یه ورودی و یه خروجی داره. ولی گیت OR یا AND میتونه چند ورودی و یه خروجی داشته باشه.
؟؟ شما چی میگید؟ اگه پیاده سازی متغییر بودن تعداد ورودی خروجی ها، سخت و پیچیده هست، اندازه شون و ثابت بزارم؟ ( میخوام ببینم اگه زیاد سخت نیست بزارم، واسه با حال تر شدن برنامه)

مشکل و سوال اصلی :
؟؟ مشکل من روی لینک دادن یه خروجی به یه ورودی هست.
؟؟ اصلا لینک و چطوری بدم؟
؟؟ وقتی لینک داده میشه چی ست بشه؟

این عکس گیت not هست : http://load.hostphotofree.com/c7a0507a81ca941714a8618b96578375/1.gif

موس که میره روش کادرش مشخص میشه. اینکه تابلو هست.
## اگه دقت کنید می بینید که ورودی و خروجی ها رو radioButton گذاشتم.
## اینطوری فکر کردم که کاربر با انتخاب یه RB خروجی و بعد انتخاب یه RB ورودی این دو بهم با یه خط که رو فرم رسم میشه (نقاشی) وصل بشه.
## واسه برنامه نویسی و گرفتن مقدار هم میشه واسه هر خروجی هر گیت یه متغییر ارتباط ( که مشخص کنه کدوم ورودی به کدوم گیت وصل شده) و یه متغییر که مقدار اون لینک رو نشون میده.

حالا شما منو راهنمایی کنید.
؟؟ واسه رسم ارتباط بین دو گیت استفاده از نقاشی و رسم خط رو فرم خوبه؟
؟؟ آیا میشه یه کنترل ساخت که خط بین دو لینک خودش کنترل باشه؟
؟؟ واسه فهمیدن اینکه کدوم خروجی گیت به کدوم ورودی وصل شده استفاده از متغییر ها مناسب هست؟

؟؟ کجا و چطور میشه از interface ها تو برنامه استفاده کرد؟

مهم تر از همه :
؟؟ برنامه باید توانایی ذخیره کردن و باز کردن دوباره مدار طراحی شده رو داشته باشه. چه روشی رو پیاده کنم؟

EbiPenMan
چهارشنبه 01 دی 1389, 02:51 صبح
کسی نیست یه نظری بده؟

tooraj_azizi_1035
چهارشنبه 01 دی 1389, 08:19 صبح
سلام،
دوست عزیز شما کلاً می خوای یه برنامه مثل Visio که توش اشیا با فلش می تونن به هم مرتبط بشن رو بنویسی. ابتدا باید کار با یک شی مثل مستطیل رو تست کنی یعنی اجازه بدی کاربر درگ کنه و شکل رو جابه جا کنه. بعد از انجام موفقیت آمیز این تست باید رو اتصالات کار کنی که شامل حرکت یک خط یا فلش می شه. باید از ابتدا کار رو ساده انجام بدی و از همون اول سخت نگیری. می تونی یکسری Event هم بنویسی برای هر شی گرافیکی که زمان برقراری اتصال کاری رو انجام بده. قسمت سخت کارت همون ایجاد اتصالات هست. سعی کن اول یک کار ساده انجام بدی و بعد اون رو به حالت های پیچیده تر گسترش بدی.
من تا به حال چنین کاری نکردم. شما باید مثال هایی از حرکت اشیای گرافیکی دو بعدی رو پیدا کنی.

EbiPenMan
سه شنبه 12 بهمن 1389, 12:10 عصر
دوستان برنامه رو نوشتم.
http://load.hostphotofree.com/10bf2d4ae20f59380fa1d8aaae67313c/untitled.JPG

فقط قسمت ذخیره کردن و باز کردنش مونده.

دوستان کد هاشو چون عجله داشتم، نتونستم خوب بنویسم. اگه در مورد الگوریتم هاش نظری داشتید که می تونه بهترش کنه ممنون می شم بگید.

فقط واسه save و open هم یه ایده بهم بدید.

یه راه اینکه تمام گیت های اضافه شده رو با اتصالاتشون به صورت متنی( مثلا XML) ذخیره کنم. فقط نمی دونم چطور باز می تونم از روی این متن گیت ها رو با لینک هاشون به برنامه اضافه کنم؟؟؟؟؟؟؟؟ :متفکر:

پروژه واسه C# 2008 هست. یادتون نره واسه ذخیره کردن و لود کردن بهم کمک کنید.

درضمن برنامه اش واسه یه بار دیدن ارزش دانلود داره.

EbiPenMan
سه شنبه 12 بهمن 1389, 16:35 عصر
منتظر نظراتون هستم

EbiPenMan
پنج شنبه 14 بهمن 1389, 10:47 صبح
سلام
مثل اینکه کسی نظری درباره ذخیره کردنش نداشت.

خودم یه چیزی نوشتم. واسه ذخیره کردن اول یه کلاس درست کردم و اطلاعات لازم واسه ذخیره هر گیت رو درونش مقدار میدم و بعد این کلاس و به صورت XML ذخیره کردم.

واسه بارگیری هم فایل xml رو خونده و کلاس و باز پر میکنم و بر اساس این کلاس گیت ها رو میسازم.

من سورس برنامه رو گذاشتم که نظرات تون رو واسه بهتر کردن الگوریتم هاش و یا شی گرایی تر کردنش بهم بگید