PDA

View Full Version : control class,entity class,boundary class



ali643
دوشنبه 18 تیر 1386, 17:58 عصر
سلام دوستان

انواع کلاس ها رو با تعریف شون رو اینجا نوشتم می خوام بدونم که آیا تعریفشون درسته یه مثال هم اگه میشه بنویسید

Control Class:کلاس های که کار یک UseCase رو انجام می دهند و کنترل می کنند.
سئوال من اینه که چیو کنترل میکنه؟؟؟ آیا وظیفش مثلBusiness logic layer هست؟؟؟؟

Entity Class:کلاس های هستند نشان دهنده موجودیت های اند که با سیستم در ارتباط هستند
اینو اگه میشه یه کم توضیح بدید؟آیا این کلاس کارش مثل DataAccess Layer هست؟

Boundary Class: اطلاعاتی که به درون کلاس وارد می شوند یا خارج می شوند را نشان می دهد.
آیا این وظیفش مثل همون لایه UserInterface هست؟؟؟


لطفا مسئاله رو بازش کنید .
مرسی

ali643
دوشنبه 18 تیر 1386, 23:36 عصر
مرسی از manager به خاطر جوابش
کلاس های کنترلی : تعریف شما کاملا غلطه !
در سیستم های اطلاعاتی عملیات هایی وجود دارد که ممکن است مربوط به چندین کلاس باشند. این عملیات در غالب کلاس هایی با عنوان کلاس های کنترلی گرد هم می آیند. لازم به ذکر است که ایم کلاس ها هیچ گونه Attribute ای ندارند( و یا اگر داشته باشند، سیستم مایل به ذخیره کردن آنها نیست.)

کلاس های Entity : تعریف شما ناقصه !
کلاس هایی هستند که سیستم اطلاعاتی مطابق با System Responsibilities تمایل به ذخیره کردن اطلاعات آن دارد. به عنوان مثال کلاس دانشجو در یک سیستم آموزشی و یا کلاس خودرو در یک سیستم مکانیزاسیون کارخانه خودرو سازی. در حقیق این کلاس ها کلاس های اصلی و اطلاعاتی سیستم هستند. مثال دات نتی بگم : کلاس User در یک سیستمی که یکی از وظایفش مدیریت اعضاست و در همین سیستم کلاس Response یا Cache یک کلاس کنترلی است.

کلاس های Boundary یا Interface : تعریف شما خیلی خیلی غلطه !
اگر در یک سیستم اطلاعاتی عملیات هایی وجود داشته باشد که به هیچ یک از کلاس ها مربوط نباشند در کلاس هایی با عنوان کلاس های Interface جمع می شوند. این کلاس ها مشابه کلاس های کنترلی شامل Attribute نیستند. همچنین در متدولوژی OOA-OOD گفته شده است که عملیات هایی که سیستم با Other Systems انجام می دهد در این کلاس ها جمع آوری می شوند.

smhoseyni
سه شنبه 19 تیر 1386, 14:24 عصر
در UML این کلاس ها برای use-case realization استفاده می‌شوند و بنابراین ارتباط نزدیکی با مفاهیم actor و use-case دارند.
Control Class : یک use-case را "اجرا" می کند. وظیفه اجرای مراحل flow of event یک use-case را بعهده دارد که با دو نوع کلاس دیگر ارتباط برقرار میکند و رفتار آنها را برای اجرای use-case هماهنگ میکند.معمولا برای تحقق بخشی هر use-case حداقل یک contorl class نیاز است. (مگر آنکه رفتار خیلی ساده ای داشته باشد).

Entity Class : به منظور مدل کردن داده‌های پایدار استفاده میشود. متناظر با موجودیت های داده‌ای که در use-case مورد استفاده قرار میگیرد. Entity ها معمولا بین چند use-case realization مشترک هستند و معمولا نیز غیر فعال (passive) هستند و خود شروع کننده عملیاتی نیستند.

Boundry Class : برای مدل کردن ارتباط با Actor ها استفاده می‌شوند تا از اثر تغییرات آنها در بقیه بخشهای برنامه جلوگیری کنند. برای هر زوج actor و use-case حداقل به یک کلاس boundry نیاز است.
چند نکته :
1- کلاس های تحلیلی کلی هستند؛ جزئیات در آنها بیان نمیشود و مستقیما پیاده سازی نمیشوند (از روی آنها کلاس های طراحی ساخته می‌شود).

2- کلا بر این رویکرد نقدهایی هم وارد است، زیرا تا حدود زیادی بامفهوم encapsulationکه از بنیادهای شیءگرایی است در تضاد است.

manager
سه شنبه 19 تیر 1386, 16:06 عصر
من یک مثال برای این دوستمون زدم، خواستم نظر شما رو هم بدونم : گفتم مثلا تو یک سیستم آموزشی، دانشجو یک کلاس Entity است. TermTimeChecking (کلاسی که عملیات هایی مثل انتخاب واحد و حذف درس و .. را با توجه به جدول زمانبندی ترم کنترل می کنه، مثلا می گه انتخاب واحد مجازه یا نه) یک کلاس کنترلی است. و همچنین تراکنش های مالی دانشجو یا کلاسی که این عملیات رو انجام می ده به عنوان یک کلاس Boundary می شه معرفی کرد.


کلا بر این رویکرد نقدهایی هم وارد است، زیرا تا حدود زیادی بامفهوم encapsulationکه از بنیادهای شیءگرایی است در تضاد است.می خواستم بدونم چه تضادی با Encapsulation وجود داره ؟ کجا ؟ چرا ؟مگر نه اینکه Encapsulation در طراحی نمود بیشتری پیدا می کنه ! حال آنکه ما تو تحلیل هستیم ؟ منظورم اینه مگه نه اینکه ما در تحلیل شیئ گرائی با مفاهیم عام شیئ و کلاس سرو کار داریم و در طراحی با مفاهیم خاص آن ؟

در پایان یک سوالم داشتم تو همین سیستم آموزش می تونید چندتا کلاس اینترفیس و کنترلی دیگه مثال بزنید ؟

ali643
سه شنبه 19 تیر 1386, 16:45 عصر
چند تا عکس رو از کتاب Apress.Use.Case.Driven.Object.Modeling.with.UML.Ja n.2007.pdf
گذاشتم کلاس های Boundary Class,Entity Class,Control Class رو تو شکل نشون میده

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

miimii
سه شنبه 19 تیر 1386, 17:27 عصر
سلام
میشه کمی در مورد کلاسهای تحلیلی و کلاسهای طراحی بیشتر توضیح دهید.
Boundry ، Control، Entity همگی از کلاسهای تحلیلی هستند.
کلاسهای طراحی چی هستد.میشه لطف کنید مثال بزنید

با تشکر

smhoseyni
چهارشنبه 20 تیر 1386, 09:49 صبح
خیلی خوشحالم که بعد از مدتها (و بعد از انبوه تاپیکهای درخواست انجام پروژه دانشجویی و ...) یک بحث خوب تو فروم شروع شده و امیدوارم برای همه ما قابل استفاده و مفید باشه.

من یک مثال برای این دوستمون زدم، خواستم نظر شما رو هم بدونم : گفتم مثلا تو یک سیستم آموزشی، دانشجو یک کلاس Entity است. TermTimeChecking (کلاسی که عملیات هایی مثل انتخاب واحد و حذف درس و .. را با توجه به جدول زمانبندی ترم کنترل می کنه، مثلا می گه انتخاب واحد مجازه یا نه) یک کلاس کنترلی است. و همچنین تراکنش های مالی دانشجو یا کلاسی که این عملیات رو انجام می ده به عنوان یک کلاس Boundary می شه معرفی کرد.

در مورد کلاس‌هایEntity نظرتون درسته، در مورد کلاس کنترل علاوه بر مواردی که برشمردید، وظیفه انتقال اطلاعات به/از کلاسهای Bondry و Entity به دیگر کلاس‌ها و هماهنگی میان عملیات آنها هم معمولا بعهده کلاسهای کنترل است (وظایف کلاس های کنترل محدود به بررسی یک سری شرایط و اعمال محدودیت‌ها نمی‌شوند).
در مورد کلاس Boundry احتیاج به توضیح است : اگر سیستم مالی بصورت یک نرم افزار خارج از سیستم ثبت نام باشه، بنابراین باید به صورت یک Actor مدل بشه و برای ارتباط با اون باید از کلاس Boundry استفاده کرد. بنابراین کلاس Boundry در اینجا عملیات مالی را انجام نمیدهد، بلکه فقط داده‌های مالی مرتبط با سیستم مالی را به آن ارسال می‌کند و احتمالا داده‌هایی را نیز از سیستم مالی دریافت می‌کند( که البته گمان می‌کنم منظور شما نیز تا حدود زیادی همین بوده است).
خوب است اشاره کنم که در این مورد یک کلاس Boundry دیگر برای ارتباط با Actor ی که عملیات ثبت نام را انجام می‌دهد (دانشجو یا کارمند آموزش) لازم است که در واقع فرم ثبت نام را مدل می‌کند.


می خواستم بدونم چه تضادی با Encapsulation وجود داره ؟ کجا ؟ چرا ؟مگر نه اینکه Encapsulation در طراحی نمود بیشتری پیدا می کنه ! حال آنکه ما تو تحلیل هستیم ؟ منظورم اینه مگه نه اینکه ما در تحلیل شیئ گرائی با مفاهیم عام شیئ و کلاس سرو کار داریم و در طراحی با مفاهیم خاص آن ؟

اگه دقت کنید در اینجا ما داده‌ها را در کلاس Entity قرار می‌دهیم، عملیات بر روی آنها را در کلاس Control و نمایش آنها را در Boundry. در صورتی که Encacsulation به ما رهنمود می‌دهد که داده و همه اعمالی که بر روی آن اعمال می‌شود را در یک کلاس قرار دهیم. البته بعضی هم در برابر این نقد، می‌گویند که سطح تجرید در این مورد بالا تر از کلاس است و ... خلاصه بحث همچنان باقی است.


در پایان یک سوالم داشتم تو همین سیستم آموزش می تونید چندتا کلاس اینترفیس و کنترلی دیگه مثال بزنید ؟
در مورد کلاس Boundry که مثال زدم (فرم ثبت نام). در مورد کلاس کنترل هم می‌توانید یک کلاس کنترل اصلی در نظر بگیرید (Registeration) که وظیفه اجرای کل ثبت نام (با همکاری بقیه) را دارد : اطلاعات فرم ثبت نام را به کلاس کنترل زمان می‌دهد، اطلاعات را از Entity ها میگیرد، اطلاعات مالی را به کلاس Boundry مرتبط با سیستم مالی می‌دهد و نتیجه را میگیرد .. تا ثبت نام پایان پذیرد.

manager
چهارشنبه 20 تیر 1386, 10:14 صبح
... در مورد کلاس کنترل علاوه بر مواردی که برشمردید، وظیفه انتقال اطلاعات به/از کلاسهای Bondry و Entity به دیگر کلاس‌ها و هماهنگی میان عملیات آنها هم معمولا بعهده کلاسهای کنترل است
...
خوب است اشاره کنم که در این مورد یک کلاس Boundry دیگر برای ارتباط با Actor ی که عملیات ثبت نام را انجام می‌دهد (دانشجو یا کارمند آموزش) لازم است که در واقع فرم ثبت نام را مدل می‌کند.

اگه دقت کنید در اینجا ما داده‌ها را در کلاس Entity قرار می‌دهیم، عملیات بر روی آنها را در کلاس Control و نمایش آنها را در Boundry. در صورتی که Encacsulation به ما رهنمود می‌دهد که داده و همه اعمالی که بر روی آن اعمال می‌شود را در یک کلاس قرار دهیم. البته بعضی هم در برابر این نقد، می‌گویند که سطح تجرید در این مورد بالا تر از کلاس است و ... خلاصه بحث همچنان باقی است.

در مورد کلاس Boundry که مثال زدم (فرم ثبت نام). در مورد کلاس کنترل هم می‌توانید یک کلاس کنترل اصلی در نظر بگیرید (Registeration) که وظیفه اجرای کل ثبت نام (با همکاری بقیه) را دارد : اطلاعات فرم ثبت نام را به کلاس کنترل زمان می‌دهد، اطلاعات را از Entity ها میگیرد، اطلاعات مالی را به کلاس Boundry مرتبط با سیستم مالی می‌دهد و نتیجه را میگیرد .. تا ثبت نام پایان پذیرد.
قبل از اینکه سوال های بعدیم رو بپرسم ازتون تشکر می کنم آقای حسینی.
خوب در رابطه با کلاس های کنترلی مشکلی نیست، پس به صورت خلاصه می تونیم بگیم، اگر عملیاتی هایی در سیستم اطلاعاتی ما وجود داشته باشد که این عملیات ها مربوط به چندین کلاس باشند، آنها را در کلاس های کنترلی بسته بندی می کنیم ؟! مثل عملیت محاسبه صورت حساب آب مصرفی در یک سیستم مکانیزه سازمان آب.

اما در مورد کلاس های Boundary یا اینترفیسی اوضاع پیچیده تره شد برام ! منظور شما از فرم ثبت نام کدام کلاس است ؟ مثلا کلاس MyForm که از کلاس Form به ارث می برد و شامل کنترل های ثبت نام است ؟ در همان سیستم آموزش Actoreها چگونه کلاس های اینترفیسی رو تشکیل می دهند ؟ مثلا چگونه دانشجو و یا مسئول آموزش رو به صورت کلاس اینترفیسی در نظر بگیرم ؟ سوالم رو کلی تر کنم چگونه یک Actore یک کلاس اینترفیسی رو می سازه به طوری که شامل هیچ گونه Attribute ای نباشه !؟؟

smhoseyni
چهارشنبه 20 تیر 1386, 10:35 صبح
اما در مورد کلاس های Boundary یا اینترفیسی اوضاع پیچیده تره شد برام !

فکر کنم قبلا باید در مورد Boundry و مفهوم Interface توضیح بدهم. کلاس‌های Boundy از آنجاییکه وظیفه ارتباط با Actor را بعهده دارند به نوعی واسط (Interface) برای آنها هستند ولی این مطلب را نباید به هیچ وجه با مفهوم Interface دیگری که وجود دارد و به معنی تعریف مجموعه‌ای از خصوصیات رفتاری است که توسط یک (یا چند ) کلاس Realize می‌شود یکی کرد (که این مورد اخیر دقیقا به همین صورت در Java و C# نیز پیاده سازی شده است).
در واقع Interface مجموعه‌ای از تعریف چند Method است که برای توصیف یک مجموعه خصوصیات رفتاری استفاده می‌شود ( و کاربرد آن بیشتر در معماری و طراحی است) و کلاس Boundry برای ارتباط با Actor استفاده می‌شود و اتفاقا Attribute هم دارد(مثلا می‌توان برخی بخش‌های یک فرم را بصورت صفات کلاس Boundry متناظر مدل کرد) و در Analysis استفاده می‌شود.



منظور شما از فرم ثبت نام کدام کلاس است ؟ مثلا کلاس MyForm که از کلاس Form به ارث می برد و شامل کنترل های ثبت نام است ؟ در همان سیستم آموزش Actoreها چگونه کلاس های اینترفیسی رو تشکیل می دهند ؟ مثلا چگونه دانشجو و یا مسئول آموزش رو به صورت کلاس اینترفیسی در نظر بگیرم ؟ سوالم رو کلی تر کنم چگونه یک Actore یک کلاس اینترفیسی رو می سازه به طوری که شامل هیچ گونه Attribute ای نباشه !؟؟


Actor ها کلاس‌های Boundry را نمی‌سازند، بلکه کلاس‌های Boundry به منظور ارتباط با Actor ها استفاده می‌شود. در همان مورد مثال، کلاس RegisterationForm برای ارتباط با دانشجو ساخته می‌شود، دانشجو پس از ورود اطلاعات در این فرم و زدن دکمه "ثبت نام" منجر به فراخوانی متد register() از همین کلاس می‌شود. این متد هم متدی در کلاس Control را فراخوانی میکند و ...

manager
چهارشنبه 20 تیر 1386, 14:10 عصر
ممنون من منظورم از کلاس های اینترفیسی همون Boundary بود(که البته نام دیگر این نوع کلاس ها هم فکر کنم همینه).

می شه در مورد خود Actore هم بگید که چه طور مدل می شه ؟ یعنی چه اطلاعاتی (Attributes) از یک Actore در سیستم ثبت می شه و یا چه عملیاتی(Behaviors or Operations) یک Actore می تونه انجام بده ؟ مثلا در مثال معروف عابر بانک.

ali643
پنج شنبه 21 تیر 1386, 00:25 صبح
این عکس رو ببینید تو یک صفحه خیلی چیزا رو مشخص کرده از هون کتاب پست قبلیم هست.

http://m1.freeshare.us/158fs126945_th.jpg (http://m1.freeshare.us/view/?158fs126945.jpg)


نرم افزاری که (قوانین)این نمودار ها رو چک میکنه رو پیدا نکردم.دوستان لینکی دارند ازش؟؟؟

whitehat
پنج شنبه 21 تیر 1386, 08:30 صبح
می شه در مورد خود Actore هم بگید که چه طور مدل می شه ؟ما قرار نیست که Actor ها را مدل کنیم ، Actor ها عوامل خارجی هستند که با سیستم ما در تعامل می باشند ، چیز هایی که برای ما مهم است این است که از طریق یک Actor چه داده هایی وارد سیستم ما می شوند،(در صورت لزوم عامل ها باید بصورت جداگانه تحلیل و طراحی شوند)
در کل می دانیم که ما دو دیاگرام کلا س داریم :دیاگرام تحلیل و دیاگرام طراحی. معمولا در دیاگرام تحلیل بیشتر به نمایش فلوها و مواردی که از فاز تحلیل بدست آمده می پردازیم و در کلاس دیاگرام طراحی ما کلاس هایی که باید پیاده سازی شود را می سازیم که در این مرحله به بیان Attribute ها و Method های یک کلاس می پردازیم (بیان جزئیات) عملا کلاس های مرزی ،کنترلی و موجودیت در کلاس دیاگرام طراحی معنای ندارد (دلیلش را آقای حسینی اشاره کردند)


نرم افزاری که (قوانین)این نمودار ها رو چک میکنه رو پیدا نکردم.دوستان لینکی دارند ازش؟؟؟
نرم افزار Enterprise Architecture این کار را برای شما انجام می دهد.

mohamad100000
یک شنبه 25 فروردین 1392, 15:22 عصر
با سلام فكر كنم جواب اكثر سوالات دوستان تو اين اين فايل آموزشي پيدا شه
http://mohamad100000.persiangig.com/Stereotype.pdf