ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

جلسه سوم طراحی polymorphism

 
Post new topic   Reply to topic    ParsX.com Forum Index -> مهندسی نرم افزار
View previous topic :: View next topic  
Author Message
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 4:49 pm    Post subject: جلسه سوم طراحی polymorphism Reply with quote

نمودار کلاس
طراحی نرم افزار:
• عملیات :
[visibility]operationName[( {in|out|inout}ParaName : [Type ]=DefaultValue, …)][:returnType] [{property}]

منظور از in out یعنی پارامتر خروجی می باشد .
DefaultValue یعنی مقداری که بصورت پیشفرض می گیرد .
I= PersianDate.ToGregorian
در مثال فوق چون پارامتر نداده ایم مقدار پیشفرض به I ریخته می شود .



در قسمت فوق اگر جای property بنویسیم
Sequential یعنی فراخوانی باید به صورت متوالی باشد .
Guarded یعنی فراخوانی می تواند همزمان باشد ولی اجرا متوالی است .
Concurrent یعنی اجرای همزمان .



Isquery اگر انتخاب شود بدون تغییر در وضعیت شی کلاس می ماند.
مثلا Show از کلاس فرم isquery می باشد چرا که در وضعیت کلاس تاثیری نمی گذارد :

Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 4:51 pm    Post subject: Reply with quote

بنابراین برای مقداردهی به خصایص به شرح زیر عمل می کنیم :


• Navigation پیمایش :
بنابراین جهت فلش از person به mavitalType ربط دارد.
بنابراین ارتباط فاکتور به فلش به این صورت است که باید کدام رابطه وجود داشته باشد ؟ فاکتور برای مشتری است یا مشتری برای فاکتور ؟
در نتیجه جهت فلش از فاکتور به مشتری می رود.
درواقع navigation عبارتست از جهت اتصال، جهت دسترسی کلاس ها به یکدیگر یعنی کدام کلاس به کدام کلاس دسترسی دارد ؟ این به آن دسترسی دارد یا آن به این ؟
برای ایجاد ارتباط کلاس Person به Marital Type خصیصه status را پاک می کنیم و آن را روی Qualifier می نویسیم به شکل زیر:
Qualifier ویژگی ارتباط دهنده کلاس ها می باشد.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 4:54 pm    Post subject: Polymorphism Reply with quote

چندریختی : polymorphism
باید بحث توارث و Generalization داشته باشیم
فرض کنیم کلاسی به نام Line و Circle داریم.
خصایص Line مثل x1y1 , x2y2 داشته باشد.
خصایص Circle مثل x,y,r
در نتیجه این د و میتوانند از کلاسی به نام Shape که خصیصه Color دارند.ارث ببرند.
هر سه اینها عملیات Show دارند اما Show که مربوط به Shape می باشد حالت انتزاعی دارد چون واقعا Show وجود ندارد .
Dim c ac new Circle()
C.show();

حال اگر بگوییم Shape.Show نمی تواند بکشد چون شکل خیلی کلی می باشد در نتیجه کلاس Shape انتزاعی است.
حال برنامه نویس می تواند به شکل زیر عمل کند
Dim S As Shape
I f condition1 then
   S = new Circle()
Else
   S  = new Line();

البته چون Circle is a shape عملیات فوق درست است .
حال اگر بگوییم S.Show() در نتیجه هنگام runtime می توان فهمید که کدام Show اجرا میشود.
در نتیجه برنامه نویس می تواند بدون توجه به بلاک if به کار خود ادامه دهد .
در نتیجه برنامه نویس از این S چند ریخت استفاده می کند.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 4:54 pm    Post subject: Reply with quote

در نتیجه operation نیز می تواند abstract باشد.
در واقع چندریختی عبارتست از استفاده از یک شی کلی در جایگاه کلاس های اختصاصی.
درواقع بالایی Generalize شده پایینی Specialize (Circle,Line)می شود در جاوا می گویند Virtual هستند.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 5:14 pm    Post subject: Reply with quote

جلسه بعدی نمودارهای تعامل Interaction Diagrams

جلسه قبلی برنامه نو یسی چند لایه کلاس دیاگرام
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> مهندسی نرم افزار All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum