تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 36 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت علی (ع): هر چیزی زکات دارد ، و زکات علم نشر آن است!

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و سی و چهارم


 

به نام پروردگار جهان

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و سی و چهارم

سلام به همه کاربران وبسایت لندلرن

قسمت صد و صد و سی و چهارم


ادامه قسمت صد و سی و سوم.


يك روش اين است كه در خارج از تعريف كلاسها، بازاي هر كلاسي كه مي خواهيم اطلاعاتش در ديسك ذخيره شود يك نـسخه از متد را ايجاد كنيم .
براي مثال يك متد با نام Save ايجـاد كنـيم كـه پـارامتري از نـوع Financial دريافـت كنـد سـپس اطلاعات مهم شيئ اي كه به اين متد فرستاده مي شود را در ديسك ذخيره كنيم .
همچنين متد Save را سربار گـذاري كـرده تـا پارامتري از كلاس Employees دريافت كند و پياده سازي آن را نيـز بـه گونـه اي تغييـر دهـيم تـا اطلاعـات مهـم اشـياي Employees را ذخيره كند و به همين ترتيب اين كار را براي تمام كلاس هايي كه مي خـواهيم اطلاعـات شـان در ديـسك
ذخيره شود تكرار كنيم .

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

يك روش بهتر اين است كه در داخل هر كلاس متدي به نام RetrieveData ايجاد كنيم تا اطلاعات مهم مربوط بـه آن كلاس را كه بايد ذخيره شوند در قالب رشته برگرداند، سپس متد Save را در خارج از همه ي كلاسها، بـه گونـه اي بنويـسيم تـا بتواند هر شيئ اي كه داراي متد RetrieveData باشد را دريافت كند و اطلاعات برگشتي از اين متد را در ديـسك ذخيـره كند.
سپس هنگام استفاده كافي است تك تك اشيايي كه داراي متد RetrieveData هستند را به عنوان پـارامتر بـ ه متـد Save فرستاده تا اطلاعات شان در ديسك ذخيره شود .
اما سوال اينجاست كه چگونه مي توانيم به متد Save بگوييم كه “فقط اشيايي را به عنوان پارامتر دريافت كن كه داراي متد RetrieveData هستند.” ؟
در چندین قسمت قبل تر  مشاهده كرديد كه اگر يك متد، به پارامتري از نوع يك كلاس پا (يه مانند Car )نياز داشت، اشيايي كه از كلاسـهاي
مشتق شده از آن كلاس نمونه سازي مي شدند نيز (همانند اشياي نمونه سازي شده از كلاس SportsCar )مي توانستند بـه عنوان پارامتر به آن فرستاده شوند.
اين مورد به اين علت امكان پذير بود كه كلاس پايه تضمين مي كرد كلاس مشتق شده تمام متد ها و خاصيت هاي مورد نياز را داشته باشد .
اما مشخص است كه در متد Save نمي توانيم از اين روش استفاده كنيم، زيرا در ايـن برنامه كلاسهاي مختلفي وجود دارند كه وظايف گوناگوني را انجام مي دهند و نمي توان يك كلاس پايه براي همـه آنهـا مـشخص كرد تا متد Save را در آن كلاس پايـه قـرار دهـيم .
بـراي مثـال كـلاس Financial ممكـن اسـت از كلاسـي بـه نـام FinanBase مشتق شود، اما كلاس Employees ممكن است از كلاس EmpBase مشتق شود و يا حتي اصلاً از هيچ كلاسي مشتق نشود .

در اين گونه مـوارد بهتـرين راه، اسـتفاده از Interfaceهـا اسـت .
همـانطور كـه گفـتم هنگـامي كـه يـك كـلاس از يـك interface استفاده مي كند، در حقيقت تضمين مي كند كه تمام متد هـا، خاصـيت هـا و … كـه در آن interface تعريف شده است را در خود پياده سازي كند .
بنابراين مي توانيد متد RetrieveData(و هر متد و يا خاصيت ديگـري كـه ممكن است براي ذخيره سازي در ديسك مورد نياز باشد) را در يـك Interface بـه نـام IStorable قـرار دهيـد، سپس هر كلاسي كه بخواهد قابليت ذخيره شدن در ديسك را داشته باشد بايد از اين Interface استفاده كند .

در بخش امتحان كنيد قسمت صد و سی و پنجم  سعي مي كنيم برنامه اي كه در بالا توضيح داده شد را به صورتي ساده انجام دهيم تا با نحـوه اسـتفاده از Interfaceها در برنامه بيشتر آشنا شويد .
البته برنامه اي كه در زير ايجاد مي كنيم كاملاً خلاصه شده است، بـراي مثـال در كلاس Financial فقط از دو فيلد براي نگهداري درآمدها و هزينه ها استفاده مي كنيم .
در كلاس Employees نيـز فرض مي كنيم كه فقط به ذخيره كردن اطلاعات مختصري از يك كارمند نياز داريم .
اما مسلماً در يك برنامـه واقعـي ايـن كلاسـها بسيار بزرگتر هستند و جزئيات بيشتري را شامل مي شوند .

ادامه دوره را در قسمت صد و سی و پنجم دنبال کنید.

 


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ