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 

طراحی فرم ها - برنامه نویسی لایه ای

 
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: Sat May 28, 2011 9:48 am    Post subject: طراحی فرم ها - برنامه نویسی لایه ای Reply with quote

لایه ها : تقسیم بخش های نرم افزار بر اساس نوع کارکرد
حذف کردن قواعدی دارد . یعنی برای حذف یک کالا کنترلهایی چون permission و کد جای دیگری استفاده نشده باشد( قبلا نفروخته باشیم) . یا مثلا می توان پاک کرد به شرطی که یک سال قبل فروخته باشیم . یا شاید بگوییم حداقل برای شش ماه قبل و مبلغ آن نیز بیشتر از این مقدار نباشد.
به هرحال می توان این کار را در دولایه فرم یا بانک انجام داد .
یعنی ما برای فرم هایمان حداقل دو کلاس یکی برای فرم یکی برای بانک خواهیم داشت . این برنامه نویسی دو لایه است .
اما چک کردن قواعد ذکر شده در کلاس جداگانه ای انجام می شود . که ان کلاس یک اپریشن contentbeforeDel .
مثلا اسم این فرم را ProductControl می گذاریم . یک ProductForm یک ProductTable نیز داشتیم . که هر کدام در یک پکیج خواهند بود که نمایانگر لایه مربوطه می باشند.
یکی از مزایا maintenance راحت تر می باشد . یعنی اگر خواستیم بانک را عوض کنیم فقط لایه بانک را عوض می کنیم.
همچنین می توان بین این لایه ها نیز لایه اضافه کرد. اما معایبی چون کاهش سرعت خواهیم داشت . به هرحال تعداد لایه ها به نحوه چشم انداز برنامه دارد . یعنی اگر برنامه ای جزئی است نیازی به لایه بندی نداریم اصلا.
لایه presentation : یا user interface کلاسی چون ProductForm برای فرم ها، گزارش ها، جستجوها. این کلاس عملی چون btnDel_Click دارد.
لایه Application : این کلاس مثل ProductControl وظیفه کنترلها، گردش کار، محاسبات . منطق کار. این کلاس عملی چون ControlBeforDelete دارد.
لایه Data Access Layer : برای اتصال به دیتابیس کلاسی مثل ProductDataAccess در واقع ConnectionString در این لایه می باشد. در بحث اتصال و کار با دیتا بیس می باشد. این کلاس عملی چون Delete دارد
لایه DataService : مثل ProductTable این خود دیتابیس می باشد.
به این ترتیب چهار لایه خواهیم داشت .
در Logical چهار پکیج اضافه می کنیم با همین نام ها که هر کدام اقلا یک کلاس داشته باشد . به شرح فوق

ممکن است کلاسی پیدا کنید که جزو هیچ یک از این پکیج ها نباشد مثلا PersianDate که تقویم می باشد. خصیصه ای چون CurrentDate این کلاس عملی چون ConvertMiladiToShamsi داشته باشید .
در واقع نمی توان این کلاس را جزء لایه ها کرد . بنابراین با درست کردن پکیجی جداگانه کنار دست انهای دیگر به نام Common می سازیم.

ارتباط لایه ها بالا به پایین می باشد یعنی لایه بالایی از لایه پایینی استفاده می کند یعنی Dependent هستند که با فلش خط چین نمایش داده می شود . یعنی از Presentation به Application فلش خط دار

البته می توان لایه DDL را اضافه نکرد چون در مرحله طراحی هستیم و کاری به بانک اطلاعاتی نداریم .

برای مثال PersianDate را به Common می کشیم
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sat May 28, 2011 10:04 am    Post subject: Reply with quote

در این مرحله دسترسی یا Visibility را تعریف می کنیم .
این بحث در مورد نحوه نمایش attribute ها استفاده می کنیم . کلاس PersianDate را کلاس های دیگر استفاده می کنند .
چهار Level معروف داریم :
+Public همگانی (عمومی)
-Private خصوصی
#Protect در رابطه Generalization به نحوی که بچه ها نیز به آن دسترسی دارند . یعنی اگر فرزندی نداشته باشد با Private یکی است.
Friend ~ یعنی دوستانش نیز بتوانند از آن استفاده کنند . یعنی در یک پکیج هستند . ( سایر اعضای همان پکیج)
حال CurrentDate باید Public باشد . همینطور است در مورد ToGeogorian
کلاس ProductForm خودش از btnDelete استفاده می کند در نتیجه باید Private باشد.
کلاس ProductDA نیز باید Delete آن public باشد . یعنی لایه بالایی باید دسترسی به کلاس این لایه داشته باشد .
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sat May 28, 2011 10:06 am    Post subject: Reply with quote

Scope حوزه:
دو نوع داریم
Instance نمونه : یعنی هر نمونه ویژگی و عملیات مخصوص به خود را داشته باشد.
Classified یا shared
برای مثال کلاسی داریم به نام Textbox با خصایصی چون BackColor آیا این ویژگی برای هر instance هست یا هر کلاس یعنی آیا اگر دو textbox داشته باشیم هر کدام می توانند یک backcolor دیگر داشته باشند . بلی بنابراین instance می باشد.
Dim T1 as TextBox
Dim T2 as TextBox
T1.BackColor = Color.Red
بنابراین برای Shared می گوییم همه نمونه ها ویژگی و عملیات مشترک دارند . یعنی مربوط به کلاس می باشند نه instance مثل DefaultBackColor که از نوع shared می باشد .در واقع این خصیصه یک underline هم در نمایش خواهد گرفت.
TextBox.DefaultBackColor = Color.White
در واقع دستور فوق کلیه کلاس های Textbox را شامل می کند .

فرض کنید کلاسی مثل انسان داریم دارای خصایصی چون نام، سن، جنسیت همگی instance می باشند .
مثلا خصیصه تعداد از نوع shared میباشد که زیرش هم خط می کشیم . یا مثلا متوسط طول عمر این گونه خصایص مربوط به کلیه انسان ها می باشد .
درواقع در کلاس PersianDate خصیصه CurrentDate نیز Shared می باشد . همچنین ToGregorian که تبدیل می کند به میلادی نیز همینطور است.
درکلاس Math خصیصه pi که نمایشگر عدد پی می باشد shared می باشد. همچنین sin نیز همینطور است چون فرقی نمی کند سینوس 90 درجه در کجا باشد در کدام شی باشد یا نباشد .
Dim m as Math
I=m.sin(45)
Dim n as Math
I = Math.Sin(45)
مقدار i در هر دوحالت یکی می باشد.

به شکل زیر در میآید :
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Tue May 31, 2011 2:25 pm    Post subject: Reply with quote

چندی Multiplicity
پیشفرض *..0 می باشد.
تعداد اشیایی یک کلاس را نمایش می دهد .
مثلا فرض کنید کلاس textbox را می توان حداقل از صفر تا حداکثر n تا می شود .
- Singleton یگانه 1..0 یعنی کلاسی حداکثر از آن میتوان یک instance داشت .
-

که به شکل زیر در می آید :

- Zero Instance یعنی کلاسی که همه ویژگی ها و عملیات آن بصورت shared باشد .
utility
-  
این کلاس باید تمامی ویژگی ها و عملیاتش shared باشد :


- Root ریشه
- Leaf برگ
- کلاس انتزاعی Absract
ابتدا باید یک رابطه Generalization داشته باشیم : مثلا برای دو فرم ProductForm و CustomerForm می توان به این نتیجه رسید که DataEntryForm هستند .
یا مثلا DialogForm ها می توانند همگی یکی یک btnCancel داشته باشد .
سپس یک General بسازیم که تمامی ویژگی های DialogForm و DataEntryForm و باقی را داشته باشد .
مثلا نام آن را SalesForm می گذاریم که همگی یکی یک می گذاریم که همگی یکی یک btnHelp دارند.



بازدن دکمه Inherited Constraints می توان Attribute های پدر نیز در لیست فرزندان اضافه می شود:



Statusbar کلاس فوق زیر را Protected می کنیم چون کلاس های زیرین باید بتوانند به آن دسترسی داشته باشند.

چون loginForm دیگر توارث ندارد و می دانیم دیگر هرگز به زیر آن فرمی تحت عنوان فرزند اضافه نمی شود آن را leaf می کنیم.



ولی مثلا فرم customer شاید بعدا یک زیرفرم company به آن اضافه شود که در نتیجه leaf نیست .
تعریف ریشه : کلاسی که نباید پدر داشته باشد را root گویند. در مثال فوق نمی توان گفت که salesform روت می باشد چون می تواند از form ارث ببرد.
جهت قطع کردن توارث یعنی عقیم کردن ان مثلا در c# به این روش Sealed گویند یعنی مهرموم شده در vb گویند not inheritable که در واقع قابلیت توارث دیگر ندارد این کلاس .
Abstract class کلاسی است که نمونه ندارد . در نتیجه فقط می توان از آن به ارث برد . مثلا در کلاس های فوق کاربر فقط فرم های productform و customerform را می بیند ولی DataEntryForm و SalesForm و DialogForm دیگر به درد کاربر واقعی نمی خورند و به درد برنامه نویس می خورند . در واقع باید از آن ها باید بارث ببریم.
به این کلاس ها در c# می گویند Abstract در vb گویند mustInheritrs .
کلاس های انتزاعی بطور کلی فایلده ای ندارند در نتیجه نام آن هارا italic می گذارند . یعنی این کلاس ها انتزاعی هستند .


برای این کار روی کلاس rightclick می کنیم و تیک abstract را می زنیم .
• ویژگی
کلاس PersianDate ویژگی CurrentDate داشت و بعلاوه کنار آن یعنی دسترسی آن .
اولین چیزی که نوشته می شود [visibility] است که چون داخل کروشه است یعنی مختاریم.
بنابراین فرمت آن به شکل زیر است
[visibility]name[min..max][:type][=initial value][{property}]
+phones[0..*]:string


بازدن دکمه const قسمت Readonly اضافه می شود . یا کلمه دیگری مثل Frozen یعنی یک بار قابل تغییر است .
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

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

جلسه بعدی طراحی و Polymorphism

جلسه قبلی Activity Diagram
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