دوره مجازی #C (جلسه 12): لیست های Generic، فایل ها و Serialization

٢۵۶٨ visibility ١۴ mode_comment

در این با لیست های Generic، فایل ها و Serialization آشنا می شویم و با انجام تمرین های مختلف و انجام مثال های گوناگون کاربرد این مطالب را نیز بررسی می کنیم. علاوه بر آن به منظور تکمیل مطالب با فایل های xml هم به صورت ابتدایی و کاربردی آشنا می شویم و برای اولین بار، داده هایی را در این نوع فایل ها ذخیره خواهیم کرد.

مطالب آموزش داده شده در این جلسه به قرار زیر می باشند:

  • آشنایی با List و نحوه ی مقداردهی و پیمایش آن
  • آشنایی مقدماتی و پایه ای با توابع موجود برای لیست های Generic
  • آشنایی با صف (Queue) و نحوه ی قرار دادن و خواندن داده در آن
  • معرفی پشته (Stack) و نحوه ی قرار دادن و خواندن داده در آن
  • آشنایی با فایل ها و نحوه ی ذخیره و بازیابی داده در آن ها
  • آشنایی با متد های مهم کلاس File
  • معرفی و کار با کلاس های StreamWriter و StreamReader
  • آشنایی با مفهوم Serialization
  • معرفی Xml Serialization به عنوان یک راه برای ذخیره ی داده ها

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

info توجه

این مطلب یک جلسه از دورهدوره آموزش جامع #C - پایه تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره دوره آموزش #C

comment دیدگاه کاربران
Aria Banazadeh

سلام ببخشید اقای زارعی ازتون دو تا سوال داشتم اگه میشه1. لطفا ی کدی بگید که بتونم با اون stringi که از کاربر دریافت میکنم را به عدد تبدیل کنم و بعدا بتوانم ان را در حلقه ام چاپ کنم و 2. اینکه میخوام بدون نوشتن یک حلقه ی for بعد از هر stringi که در ارایه ام چاپ میکنم به خانه بعدی ارایه برود نمیدونم منظورمو فهمیدید یا نه 😐 با تشکر 😛

آرین زارعی

سلام. در مورد سوال اول، من این کار رو به کرّات در ویدیو ها انجام دادم به صورت زیر باید انجام بدهید:
int a = convert.toint32(console.readline());//be in shekl
متاسفانه سوال دوم رو متوجه نمی شم…

سلام آیا آخرین جلسه ی سی شارپ در فصل 2جلسه فردا است
بعد کلا تا چه موقع این دوره سی شارپ به پایان میرسد؟

آرین زارعی

سلام.
خیر یک جلسه دیگر هم برای این فصل هست.
با یک حساب سر انگشتی فکر می کنم حدود 4 ماه دیگر. البته در اواخر دوره سرعت جلسات بیشتر خواهد شد.

امید دهقان

سلام اگه میشه درباره کلمه کلیدی static یه توضیح بدید چون من دیدم که خیلی ازش استفاده میکنید.
و اگه میشه یه توضیح بدید که دقیقا کاربرد string.format چی هست و چه زمان باید ازش استفاده کنیم. ممنون استاد.

آرین زارعی

سلام.
ببینید static از نظر لغوی به معنای ثابت و ایستا هست. در جلسات آینده من کمی درباره این کلمه توضیح خواهم داد. ولی در کل وقتی در یک کلاس، یک متد را استاتیک در نظر میگیریم، این به این معناست که برای اجرای متد نیاز به ساختن شی از روی کلاس نیست. همین مساله برای فیلد ها و متغیر های استاتیک وجود دارد. از نظر مفهومی هم متد استاتیک یک رفتار است که فارغ از اشیا می باشد و رفتار کلی یک کلاس است.
string.format وقتی استفاده می شود که شما میخواهید یک سری داده ی مختلف را با یک فرمت درون یک رشته قرار دهید. مثلا اطلاعات یک دانشجو را به شکل «نام-نام خانوادگی-شماره دانشجویی***تاریخ تولد» درون یک رشته قرار دهید اما می دانیم که شماره دانشجویی و تاریخ تولد از نوع رشته ای نیستند . یک راه استفاده از این تابع استاتیک است.
موفق باشید

سید احسان عظیمی

ممنون واقعا این ویدیو عالی بود

Tarikhi Massud

سلام
استاد چطوری میشه یه کلاس جنریک مثل دیکشنری رو سریالایز کرد؟؟؟؟

آرین زارعی

سلام.
ببینید یه چند نکته باید توجه بشه. اول اینکه مراحل فرق نداره. نکته اینه که باید اون اتریبیوت که گفته شده در این قسمت رو کلاس مقصد داشته باشه. این لینک شاید کمکتون کنه:
http://www.codeproject.com/Articles/233908/Xml-serialization-using-generics

پژمان

سلام جناب زارعی. برای آنالیز و رسم دقیق کلاس دیاگرام یک پروژه در ابعاد کوچک و بزرگ و تشخیص بهتر رفتارهای یک موجودیت که در قالب یک کلاس در زبان شی گرا پیاده سازی میشود و ارتباط کلاسها با یکدیگر و بعد از آن انتخاب استراتژی پیاده سازی کلاسها (بصورت جنریک باشند یا خیر، بصورت اینترفیس و در حالت سلسله مراتب توارث پیاده سازی شوند یا خیر.. ، تشخیص اینکه از کلاسها و متدهای جنریک آماده net framework در کجا و کدام کلاس یا متد استفاده باید بشود و… ) و در نهایت راه حل بهینه و پیاده سازی الگوریتم برای حل مسئله ای که در قالب متدی از یک کلاس خاص پیاده سازی میشود. چه باید کرد. آیا میتوان فرمول بخصوصی را تعیین کرد و فرمهایی از پیش آماده کرد که بر اساس یک ساختار و چارچوب معین جلو رفت و منظم و کنترل شده با پروژه برخورد کرد تا جایی که حتی بتوان زمان لازم برای انجام پروژه را ولو تقریبی به مشتری اعلام کرد؟ آیا رفرنسی برای طراحی گام به گام این مراحل وجود دارد؟ که مثلا در گام اول تعداد موجودیتها و رفتارها و ارتباطاتشان را تشخیص دهیم در گام دوم اینکه هر رفتار در قالب یک متد از چه الگوریتمی برای پیاده سازی پیروی میکند و در گام مثلا سوم استراتژی پیاده سازی کلاسها و ارتباطشان و متدهاشون چگونه باید باشد. آیا میتوان این گامها رو فرمول بندی کرد و یک چاچوب کلی برای انجام پروژه ها از پیش بر ای خودمون تعیین کنیم و سپس به فراخور نوع و امکانات پروژه بند ها و تبصره هایی به آنها اضافه کرد؟ نمیدونم آیا تونستم منظورم رو به خوبی برسونم. در واقع منظورم این هست وقتی کسی برای انجام پروژه ای به شما مراجعه میکند مراحل انجام آن رو به چه شکل چیدمان میکنید و استراتژی حل پروژه رو آماده میکنید؟ ممنون و ببخشید که زیاد شد حقیقتش این موضوع سختترین قسمت برنامه نویسی هست که مدتهاست ذهن منو مشغول کرده و کسی پاسخ درستی به من نداده متاسفانه یا نخواسته استراتژیشو لو بده.

آرین زارعی

در پاسخ به این سوالات بهتر هست که کتاب های مهندسی نرم افزار رو به دقت مطالعه فرمایید.

پژمان

جناب زارعی متاسفانه ذهن من به شدت فلسفه گرا یا به نوعی اصول گراست یعنی یا همه چیز یا هیچ چیز. وقتی وارد مبحثی شدم باید صفر تا صدش رو متوجه بشم(از بیخ و بن ریشه هاشو پیدا کنم. باور میکنید که گاهی ساعتها به روی یه مثالی که در جلسه ای از دوره مطرح کرده اید مثل مینی پروژه سرچ در جلسه سیزدهم ساعتها بررسی کرده ام که چرا مثلا شما فلان متغیر رو از نوع لیست جنریک معرفی کرده اید و با مثالهای مشابه قبلیش میسنجم که آیا میشه راه دیگه ای پیدا کرد؟ تا بتونم ذهن بازتری برای یافتن استراتژی حل مسئله پیدا کنم)لطفا یه رفرنس خوب و کاربردی برای مهندسی نرم افزار و طراحی الگوریتم حل مسائل و احیانا موارد دیگر پیرامون یافتن استراتژی پیاده سازی پروژه و حل مسائل موجود در آن، معرفی بفرمایید، طوری که گیج نشم بین منابع مختلف و گام به گام راهنماییم کنه در واقع مکمل خوبی برای دوره شما باشه. ممنون از شما

آرین زارعی

دقت خیلی مساله ی خوبی است ولی مثال های ساده ی ما نیازمند این دقت نیست. پیشنهاد میکنم انرژیتون رو برای کارای سنگین تر و پروژه های بزرگتر صرف کنید. در باره ی کتاب هم شما میتونید برای الگوریتم ها اگر علاقه مندید کتاب مقدمه ای بر الگوریتم های CLRS رو مطالعه بفرمایید. دیگه از این کتاب سنگین تر و جامع تر در این زمینه وجود نداره. البته که مباحثش فقط به درد کارای خاص میخوره و در بازار کاربردی نداره. شما در حد نیاز بازار در این دوره الگوریتم یاد گرفتید. درباره ی تحلیل و مهندسی نیاز ها و … در پایان دوره با جستجو در وب منابع مناسبی رو پیدا میکنید.

پژمان

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.