PDA

View Full Version : سوال: چه روشی را پیشنهاد میکنید



ITJennifer
شنبه 20 اسفند 1390, 21:19 عصر
سلام
من چندین فرم در پروژه دارم بالای 50 عدد
میخوام بعضی پارامترها مثلا نام فایل باز شده با OpenDialog در شروع برنامه بین همه فرم ها قابل دسترسی باشد و در صورتی که یک پارامتر در یک فرم تغییر داده شد هنگام فراخوانی فرم های دیگر این تغییرات اعمال شده باشه بهترین پیشنهاد شما برای این منظور چیه؟

ma.rad
شنبه 20 اسفند 1390, 21:49 عصر
گر درست متوجه شده باشم 4راه دارید:
1- ذخیره پارامترها در بانک
2- ذخیره در فایل txt یا xml
3-ذخیره در setting
4- استفاده از کلاس (اگر هر بار که برنامه باز میشه بهش مفدار می دید)

mehdi zanjani
شنبه 20 اسفند 1390, 22:25 عصر
با تشکر از دوست خوبم ma.rad!

واسه پارامتر ها من به شخصه از Xml استفاده میکنم!! اسفاده از دیتابیس واسه ذخیره پارامتر ها زیاد مناسب نیست در ضمن دسترسی به xml راحت تر و بی دردسر تره!!

ITJennifer
شنبه 20 اسفند 1390, 23:15 عصر
واسه پارامتر ها من به شخصه از Xml استفاده میکنم!! اسفاده از دیتابیس واسه ذخیره پارامتر ها زیاد مناسب نیست در ضمن دسترسی به xml راحت تر و بی دردسر تره!!

لطفا یک مثال ساده
من تاحالا با یا این روش کار نکردم

mehdi zanjani
شنبه 20 اسفند 1390, 23:52 عصر
برای مثال شما تو فرم 1 ی فایل رو از طریق OpenDialog اجرا کردی میتونی fileName اون رو تو فایل Xml ذخیره کنی به این شکل که اسم هر فرم شما،یک گره ی پدر میشه و اسامی فایل هایی که از طریق اون فرم اجرا کردی گره های فرزند میشن بعد تو هر فرم که نیاز داشتی فایل هایی که از طریق مثلا فرم 1 اجرا شدن رو ببینی گره های فرزند اون فرم رو از فایل xml میخونی!

gwbasic
یک شنبه 21 اسفند 1390, 08:18 صبح
سلام
من چندین فرم در پروژه دارم بالای 50 عدد
میخوام بعضی پارامترها مثلا نام فایل باز شده با OpenDialog در شروع برنامه بین همه فرم ها قابل دسترسی باشد و در صورتی که یک پارامتر در یک فرم تغییر داده شد هنگام فراخوانی فرم های دیگر این تغییرات اعمال شده باشه بهترین پیشنهاد شما برای این منظور چیه؟

لطفا قبل از زدن تاپیک چند لحظه ای در مورد عنوان آن فکر کنید طوری که به طور خلاصه صورت سوال را مشخص کند.

در مورد سوالتون بطور ساده می شه گفت که می تونید از کلاس ها استفاده کنید و یکسری اطلاعاتی که لازم هست بین چند فرم مشترک باشد را در آن بصورت پراپرتی تعریف کنید و این شی ای از این کلاس را که در ابتدا مقدار دهی کردین بین فرم ها جابجا کنید.
اما در مورد مثالی که زدین (نگهداری نام فایل) ملاحظات دیگری هم می شه در نظر گرفت. سوال رو به صورت کلی مطرح کردین بنابراین نمی شه خیلی دقیق جواب داد. اگر این فایل قرار است فقط به عنوان ورودی باشد بنابراین دیگر نیازی به نگهداری نام آن نیست و بهتر است که کلاسی وجود داشته باشد به عنوان واسط که از طریق این کلاس با فایل ارتباط برقرار کنید و داده های آن را گرفته و در قالب "مدل شی ای" Object Model (یکسری کلاس) اطلاعات را در حافظه رم نگهداری کنید و ازین به بعد هر جا که لازم بود با این مدل شی ای کار کنید. و اگر فایل مذکور خروجی هم خواهد بود یعنی تغییرات باید در آن ذخیره شود. باز هم باید از آن کلاس واسط برای خواندن و نوشتن استفاده کنید ولی نام فایل را هم باید در حافظه (همان کلاس یا کلاسی دیگر بستگی به منطق تفکیک پذیری داره) نگهداری کنید. دقت کنی که بهتر است فایل همان ابتدا خوانده شود و همانطور که توضیح داده شد جایی نگهداری شود و در هنگام ذخیره این تغییرات در فایل ذخیره شود. نه اینکه شما نام فایل را بین فرم ها جابجا کنید و در هر فرمی در صورت نیاز یک بار دیگر اطلاعات این فایل را بخوانید!

سعی کنید که تفکر شی گرا داشته باشید و اطلاعات به هم مرتبط را در یک یا چندین کلاس نگهداری کنید.

موفق باشید

mehdi zanjani
یک شنبه 21 اسفند 1390, 09:16 صبح
یعنی چی کلاس واسط ؟؟؟

gwbasic
یک شنبه 21 اسفند 1390, 13:29 عصر
یعنی چی کلاس واسط ؟؟؟

کلاس واسط نام کلاس خاصی نیست منظور کلاسی هست که تمام کارهای مرتبط با فایل مذکور را (بطور مثال خواندن و نوشتن اطلاعات) انجام می دهد و واسط بودن آن به این دلیل هست که هیچ کلاسی حق کار مستقیم با فایل را ندارد و فقط از طریق سرویسهای این کلاس هست که با فایل ارتباط دارد.
در این کلاس می تواند اعضای زیر وجود داشته باشد:
1- متد Load که اطلاعات فایل را می خواند و بر می گرداند
2- متد Save که تغییرات را ذخیره می کند

مزیت این کلاس این است که تمام منطقی که در فایل وجود دارد فقط این کلاس مدیریت می کند (مثلا فرمت فایل) و در صورت تغییرات ساختاری در فایل فقط این کلاس هست که تغییر می کند

mehdi zanjani
یک شنبه 21 اسفند 1390, 13:43 عصر
کلاس واسط نام کلاس خاصی نیست منظور کلاسی هست که تمام کارهای مرتبط با فایل مذکور را (بطور مثال خواندن و نوشتن اطلاعات) انجام می دهد و واسط بودن آن به این دلیل هست که هیچ کلاسی حق کار مستقیم با فایل را ندارد و فقط از طریق سرویسهای این کلاس هست که با فایل ارتباط دارد.
در این کلاس می تواند اعضای زیر وجود داشته باشد:
1- متد Load که اطلاعات فایل را می خواند و بر می گرداند
2- متد Save که تغییرات را ذخیره می کند

مزیت این کلاس این است که تمام منطقی که در فایل وجود دارد فقط این کلاس مدیریت می کند (مثلا فرمت فایل) و در صورت تغییرات ساختاری در فایل فقط این کلاس هست که تغییر می کند

به نظر شما کار با XML اشتباهه؟؟

gwbasic
یک شنبه 21 اسفند 1390, 13:59 عصر
به نظر شما کار با XML اشتباهه؟؟

XML برای ساختار خود فایل انتخاب خوبی هست. هنگام Load داده ها هم می توان بصورت ساختار XML ای Load کرد (و با استفاده از Linq to XML به راحتی کوئری های مورد نظر رو اجرا کرد) و یامی توان به صورت Object Model و مجموعه ای از کلاس داخل Ram نگهداری کرد بستگی به نیاز داره.
اما برای یکسری داده که هنگام اجرا نیاز هست مثل نام فایل جاری نام کاربر شاید بهتر باشد از یک کلاس مثلا کلاس استاتیک استفاده کرد.

به نظر من برنامه نویس اول باید به لحاظ فنی خود را آماده کند و طرق ممکن را امتحان کند در مرحله بعد است که این توانایی فنی در بدست آوردن راهکار بهتر و بهینه تر راهگشا خواهد بود

موفق باشید

mehdi zanjani
یک شنبه 21 اسفند 1390, 14:16 عصر
بله موافقم هر برنامه نویس دست خط مخصوص به خودش رو داره ولی خب اسفاده از نظرات اساتید مفیده!!!

مرسی - موفق باشید ///