نمایش نتایج 1 تا 8 از 8

نام تاپیک: آپدیت دو طرفه و شی گرای Front End و Back End

  1. #1

    Angry آپدیت دو طرفه و شی گرای Front End و Back End

    چونکه سی شارپ یک زبان شی گراست میخوام برنامه نویسی شی گرا انجام بدم باهاش.
    مساله رو با مثالی مطرح میکنم. گرچه قبلا هم مسائل مشابهی مطرح کردم که آخرش یک جواب شی گرا کسی به من نداد. آدم کم کم شک میبره نکنه هنوز دارند روش ماژولار رو به اسم کلاس و سی شارپ مینویسند!

    مثال:
    فرمی داشته باشم با یک اجرایی مثلا گرید . تولبار . لیست باکس و ...
    مثلا گرید اطلاعاتش شامل سفارشات یک قلم کالا باشه . ( بدیهیست که کالا یک شی تعریف میشه) و داره اونها رو نمایش میده .
    حالا مثلا یکی از سفارشات رو کنسل کنم . بنابراین باید تغییراتی هم در front end هم در back end رخ بده . مثلا تراکنشی انجام بشه . تولباری فعال بشه . پیغامی نمایش داده بشه . لیست باکسی رفرش بشه و ...

    خب ! یک طراحی شی گرا برای این چی میتونه باشه؟ اینکه مثلا برم بنویسم Toolbar1.disabled !!! که نشد برنامه نویسی شی گرا!!!

    اگر پاسخی به نظرتون میرسه بیان کنید تا بررسی کنیم.

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

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    كرج
    پست
    44

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    سلام دوست عزيز
    با برداشتي كه من از صورت مسئله داشتم به نظر خيلي ساده مياد. و فكر مي كنم نداشتن تسلط كامل به كد نويسي در NET. مشكل شما باشه.
    اگه خواستي يه سناريو كامل تر از مسئله بگو تا واست انجام بدم.

  3. #3

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    نقل قول نوشته شده توسط JaguarXF مشاهده تاپیک
    چونکه سی شارپ یک زبان شی گراست میخوام برنامه نویسی شی گرا انجام بدم باهاش.
    مساله رو با مثالی مطرح میکنم. گرچه قبلا هم مسائل مشابهی مطرح کردم که آخرش یک جواب شی گرا کسی به من نداد. آدم کم کم شک میبره نکنه هنوز دارند روش ماژولار رو به اسم کلاس و سی شارپ مینویسند!

    مثال:
    فرمی داشته باشم با یک اجرایی مثلا گرید . تولبار . لیست باکس و ...
    مثلا گرید اطلاعاتش شامل سفارشات یک قلم کالا باشه . ( بدیهیست که کالا یک شی تعریف میشه) و داره اونها رو نمایش میده .
    حالا مثلا یکی از سفارشات رو کنسل کنم . بنابراین باید تغییراتی هم در front end هم در back end رخ بده . مثلا تراکنشی انجام بشه . تولباری فعال بشه . پیغامی نمایش داده بشه . لیست باکسی رفرش بشه و ...

    خب ! یک طراحی شی گرا برای این چی میتونه باشه؟ اینکه مثلا برم بنویسم Toolbar1.disabled !!! که نشد برنامه نویسی شی گرا!!!

    اگر پاسخی به نظرتون میرسه بیان کنید تا بررسی کنیم.

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

    فکر میکنم شما معنی شی ء گرایی رو درست نمیدونید(شایدم بلعکس).
    سی شارپ یه زبون 100 درصد شی گراء نیست ولی شی گرایی به وضوح درش معلومه.

  4. #4

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    داستانش به این سادگی نیست که یک گرید رو به یک جدول وصل کنم و بعد چند تا دکمه هم برای کنسل کردن سفارشات و غیره!

    سفارشات خودشون کلاس دارند . یک سری اطلاعاتشون قابل دخیره هست در دیتابیس که اونها رو مثلا در گرید نمایش میدیم .. ولی یک سری رفتار هم دارند که اونها رو از دیتای محض به شی تبدیل کرده.

    حتی ساده ترین حالتش که کنسل کردن یک سفارش باشه رو هم کمی دوراندیشی! کنیم به همین سادگی نیست. یک خط کد بنویسم که کنسل بشه؟ بعد یک خط هم بنویسم که فلان دکمه غیرفعال بشه ؟ یک خط هم یک جای دیگه بنویسم که فلان گرید رفرش بشه ؟ بعد این میشه شی گرا یا ماژولار؟!؟!؟! ..... حالا دو سال بعدش یه تیم دیگری بخواد برنامه دیگه ای بنویسه که از قسمت سفارشات من هم استفاده میکنه ... اونوقت باید بیان دربدر داخل هزاران خط بگردند تا ببینند یا نبینند! کنسل کردن یک سفارش چه تاثیراتی روی سایر موارد باید داشته باشه؟!؟! یا اینکه نه ! یک design pattern براش ازبین الگوهای موجود پیدا کنم یا اینکه خودمون بنویسیم که بیاد این موارد رو به زیبایی! داخل اون کلاس Orders پیاده سازی کنه و همه کاری که اونها باید انجام بدهند استفاده از کلاس Orders و الگوی طراحیش در برنامه خودشون باشه .

    من سوالهای ساده تری هم پرسیده بودم که جواب خوبی نگرفتم. واسه همینه میگم شک دارم که کسی داره برنامه شی گرا مینویسه!
    مثلا :» https://barnamenevis.org/showthread.php?t=167488
    یا این یکی : که آخرش به Model View Controller براش نوشتم و حالا میتونم بگم برنامه شی گرا دارم .
    https://barnamenevis.org/showthread.php?t=154276

  5. #5

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    سی شارپ یه زبون 100 درصد شی گراء نیست ولی شی گرایی به وضوح درش معلومه.
    دوست عزیز #C یک زبان Pure object oriented هستش، این نظر رو از رو چی میگین؟
    این حرف رو میشه واسه جاوا گفت(نوع داده ای int یه مثال نقضه). در مورد abstract data type ها در جاوا سرچ بزنید.

    JaguarXF:
    در اول توصیه میکنم در مورد RUP مطالبی بخونید، تا کارتون راحت پیش بره.
    از روی یک سناریو فرضی(Use-case): یک آبجکت basket دارم که لیستی از LineItem ها رو داره(لیست از نوع Hashtable). آبجکت های LineItem من ، آبجکتی است که از Stuff به ارث رسیده و یک فیلد تعداد خرید و متدی به اسم SubTotalPrice داره. این متد تعداد رو * قیمت فی میکنه و بر میگردونه(تخفیف رو لحاظ نکردم). در آبجکت Basket متدی دارد به اسم AddStuff برای اضافه کردن یک قلم کالا و متدی به اسم RemoveStuff برای حذف کالا.
    خب حالا سناریو شما: تو فرم، Basket رو Instantiate میکنم.چند تا تکسباکس دارم که مقادیر ورودی رو از GUI می خونه و با اونها از کلاس Stuff یدونه می سازه و به basket اضافه میکنه. خب حالا میخایم یدونه پاک بکنیم چی؟
    من فرض می کنم که تو یه فرم دیگه موجودی های سبد رو نشون میدم تا حذف بکنیم یا قیمت کل(و درنهایت فاکتور و ...) رو انجام بدیم. واسه این کار آبجکت سبد رو از فرم قبلی پاس میدیم به فرم فعلی. یه متد به سبد اضافه میکنیم به اسم GetList که مقدار برگشتیش از نوع Datatable هستش، این متد رو تو فرم لود به Gridview وصل می کنیم. یک Label هم میزاریم واسه نوشتن مجموع قیمت و متدی تو سبد اضافه میکنم به اسمtotalPrice. تو این متد از لیست کالاهایی که اضافه شده متد subTotalPrice رو فراخوانی میکنم و جمع میزنم.
    خب حالا میخوایم یکی رو حذف کنیم: یک نمونه از LineItem با اطلاعات خونده شده از Datagrid درست می کنم و متد RemoveStuff سبد رو باهاش فراخوانی میکنم. همین.

    در مورد Design Pattern های هم Facade حتما لازمه و یک دوتا از الگوهای Creational هم لازم میشه.
    موفق باشید.

  6. #6

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    ممنون. باید یکی دو مرتبه دیگه جوابتون رو فکر کنم روش تا نظر بدم یا تکمیلش کنیم.

    ولی در مورد الگوهای لازم : Observer بیشتر به کار ما نمیاد؟ یعنی Orders این الگو رو داشته باشه

  7. #7

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    ببینید، استفاده از الگو یه چیزه اجباری نیست، بسته به تعامل آبجکتها و تطابقشان با یکی از الگوها، میشه از یکی استفاده کرد.
    توصیه میکنم کتاب معروف لارمن به اسم Applying UML and Patterns رو بخونید(در مورد OOAD هستش) علاوه بر اون کتاب Judith bishop به اسم(اگه اشتباه نکنم) design patterns in C#‎ 3.0 رو هم بخونید.
    در ضمن اینکه از کدوم الگو اینجا استفاده بکنیم هم باید بگم که من اینرو از رو یه سناریوی فرضی نوشتم. شما یک UseCae کامل از سیستم در یک تاپیک جدید ایجاد کنید تا مراحل بعدی(Domain model diagram و ...) رو در بیاریم.

  8. #8
    کاربر دائمی آواتار Ali_Mor
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کره خاک، البته بصورت موقتی
    پست
    259

    نقل قول: آپدیت دو طرفه و شی گرای Front End و Back End

    فرمی داشته باشم با یک اجرایی مثلا گرید . تولبار . لیست باکس و ...
    مثلا گرید اطلاعاتش شامل سفارشات یک قلم کالا باشه . ( بدیهیست که کالا یک شی تعریف میشه) و داره اونها رو نمایش میده .
    حالا مثلا یکی از سفارشات رو کنسل کنم . بنابراین باید تغییراتی هم در front end هم در back end رخ بده . مثلا تراکنشی انجام بشه . تولباری فعال بشه . پیغامی نمایش داده بشه . لیست باکسی رفرش بشه و ...
    چیزی که به ذهن من میرسه:
    وقتی سفارشی کنسل میشه، متدی از سفارش که مسئول کنسل نمودن است، یک event رو مبنی بر کنسل شدن سفارش Raise کند. حال در رویدادی از فرم که این اونت رو هندل می کنه، عناصری که حالاتشون وابسته به وضعیت سفارش هست(مثل تولبار و ...) رو تغییر حالت بدید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •