چکِیده: از حدود سالهای 1375 مبحث آموزش مجازی در کشور مورد توجه قرار گرفته است و طرح ملی توسعه آموزش مجازی در وزارت علوم تحقیقات و فناوری با حمایت دانشگاه های بزرگی مانند دانشگاه صنعتی شریف آغاز شده است.
در حال حاضر بسیاری از دانشگاه های کشور آموزش مجازی را شروع نموده اند و این جدای از دانشگاه پیام نور است که کلا با سیاست آموزش از راه دور تشکیل شده است و امروزه تا مقاطع دکترا در رشته های مختلف دانشجو میپذرد.
و بسیاری از دانشگاه ها و موسسات آموزش عالی در کنار آموزش معمول خود دانشگاه مجازی نیز تاسیس نموده اند و تا مقطع کارشناسی ارشد دانشجو میپذیرند.
درس مجازی بمعنای ایجاد یک سری محتواهای درس و ارائه در سامانه آموزش مجازی و رها نمودن دانشجویان تا خود مطالب را بهر صورتی که میخواهند مطالعه نمایند، نیست و بایستی تعامل مناسبی میان استاد و دانشجویان در طول ترم برقرار باشد.
در همین راستا اعضای هیات علمی موظفند شرایط زیر را در ارائه یک درس مجازی رعایت نمایند: تایید ابتدایی محتواهای تولید شده توسط کمیته علمی یا مسوول آموزش مجازی دانشگاه از نظر رعایت حداقل ها رهگیری مناسب دانشجویان در طی درس براساس تقدم و تاخر مطالب درسی ایجاد تکالیف برای دانشجویان و بررسی و ارزیابی نتایج و اعلام نظر به دانشجو مقدمه: اگرچه سالهاست کامپیوتر درتمام سطوح علمی وصنعتی مورداستفاده قرار میگیرد اما درسال های اخیر این علم بسیار پیشرفت کرده و در تمامی شاخه ها نفوذ کرده است بطوریکه عدم استفاده ازآن مشکلات زیادی را درپیشبرد اهداف ایجاد خواهد کرد.
با توجه به اینکه علم انفورماتیک به حدی در دنیای امروز پیشرفت کرده که در تمامی سازمانها ادارات شرکت ها و محیط های دیگر سیستم ها مکانیزه شده است لذا سعی کردیم از طریق سایت مذکور در مورد آموزش مجازی اطلاعاتی را برسانیم مقدمه ای بر C# سی شارپ در سال 2001 توسط شرکت مایکروسافت به همراه بسته دات نت برای اولین بار مطرح و ارائه شد.
که بعد ها به عنوان یک زبان برنامه نویسی استاندارد توسط ECMA و ISO مورد تائید قرار گرفت.
زبان برنامه نویسی سی شارپ توسط تیمی به مدیریت اندرز هایلزبرگ که قبلا تجربه ارائه زبان های برنامه نویسی موفقی همچون توربو پاسکال و دلفی رو داشت ایجاد شد.
هایلزبرگ سی شارپ را یک زبان برنامه نویسی شی گراء که از زبان های برنامه نویسی بزرگ (همچون دلفی , جاوا و اسمال تاک( تاثیر پذیری داشته معرفی میکند Syntax زبان سی شارپ شبیه به C++ میباشد والبته تفاوت های بسیاری هم دارد.
دات نت فریم ورک (NET Framework) یه بسته نرم افزاری شامل راه حل بسیاری از نیازهای توسعه نرم افزاری (Base Class Library) و همچنین امکان توسعه و اجرای برنامه های تولید شده برای این فریم ورک میباشد.
برنامه های تولید شده برای دات نت فریم ورک توسط Common Language Runtime اجرا میشوند CLR یا همان Common Language Runtime سرویس هایی مهمی از قبیل Garbage Collection , Memory Managementو Exception Handlingرا ارائه میدهد.
Garbage Collection: در زبان برنامه نویسی سی شارپ دیگر نگرانی از جهت مدیریت اشیاء در حافظه وجود ندارد به این معنی که وقتی شما شیء ایجاد میکنید بعد از اینکه دیگر از آن شی ء استفاده نکردید آن شیء به طور اتوماتیک از حافظه پاک خواهد شد.
این کار توسط GC یا همان Garbage Collectoانجام میشود.روش کار GC به این ترتیب است که تا موقعی که Referenceی به یک object وجود داشته باشد آن شیء در حافظه باقی خواهد ماند اما در صورتیکه Referenceی به آن شیء وجود نداشته باشد بعد از یک بازه زمانی نامشخص آن شیء به صورت اتوماتیک از حافظه پاک خواهد شد.
برخلاف زبان های برنامه نویسی دیگر وقتی کد شما در زبان برنامه نویسی سی شارپ (یا هریک از زبان های دیگر دات نت) کامپایل میشود به یک زبان دیگری به نام Intermediate Language یا همان IL تبدیل میشود.
و در موقعی که درخواست برای اجراء آن داده میشود توسط یک مکانیزمی به نام Just In Time Compiler که در CLR موجود است به زبان خاص آن ماشین تبدیل شده و اجراء میگردد.
سی شارپ یک زبان شیء گراست به این معنی که هرآنچه که در سی شارپ وجود دارد در غالب دو مفهوم کلاس (Class) و شیء (Object) و روابط بین آنها خلاصه میشود.
کلاس(Class): در واقع یک ایده (Concept) یا ذهنیت میباشد.
مثلا یک نجار چه ذهنیتی نصبت به یک "میز" دارد؟
خوب مسلما یه صفحه , چهار پایه و....
این ذهنیتی است که یک نجار نسبت به "میز" دارد.
این دقیقا مفهوم کلاس است.
یعنی تا موقعی که آن میز ساخته نشه فقط یک ذهنیت یا در واقع کلاس است.
شیء(object): اشیاء موجودیت هایی هستند که از کلاس ها (ذهنیت) ساخته میشوند.
باز برای مثال همان نجار وقتی ذهنیتش رو به واقعیت تبدیل میکنه در واقع یک میز میسازه یا یک شیء(object) ایجاد کرده است.
کلاس های پایه دات نت (dot net base class library): دات نت فریم ورک حدود 2500 کلاس دارد.
Namespace چیست؟
پیدا کردن یک کلاس بین 2500 کلاس پایه و احتمالا کلاس هایی که خودتان نامگذاریشان میکنید احتمالا کار سختی خواهد بود!
Namespace ها در حقیقت این امکان رو به شما میدهند که بتوانید کلاس های خودتان را دسته بندی کنید و هر کلاس را داخل دسته مورد نظر خودشان قرار بدهید.
به عنوان مثال ما کلاسی داریم به نام SqlConnection و همینطور کلاس دیگری به نام SqlDataAdapter و غیره برای همین یک Namespace به نام System.Data.SqlClient ایجاد شده که کلاس هایی که مربوط به System و کار با داده ها (Data) و در نهایت مختص Sql Server هستند رو داخل این namespace قرار میدهیم.
توی این تصویر تعدادی از namespace های عمومی دات نت نشان داده شده اند.
این نکته را هم بیاد داشته باشید که اسم کامل یک کلاس شامل اسم به همراه نام namespace آن است.
System.Data.SqlClient.SqlConnection اسم کامل آن (qualified name) کلاس sql connection میباشد.
using اما اگر قرار باشد برای استفاده از یک کلاس همیشه اسم کاملش را بنویسیم.
برای همین شما میتوانید با یکبار نوشتن اسم Namespace آن کلاس (یا کلاس هایی که میخواهید استفاده کنید) با استفاده از یک keyword به نام using از تکرارآن جلوگیری کنید.
به عنوان مثال ما در یک مثال میخواهم ده ها بار از کلاس Console و دستوراتش استفاده کنیم.
برای همین بالای کدمان یک بار using System را ذکر میکنیم تا از نوشتن کلمه System برای دفعات مکرر جلوگیری کنیم.
Visual studio.net 2005: نسخه 8 Visual Studio شرکت مایکروسافت که خیلی راحت میتوانید از بازار تهیه کنید.
بعد از اینکه مراحل نصب تمام شد.
از منوی Start --> All Programm --> Microsoft Visual Studio 2005 روی Microsoft Visual Studio 2005 کلیک کنید تا پنجره مقابل برایتان باز شود.
مطابق شکل زیر Start page میباشد نسخه 8 Visual Studio شرکت مایکروسافت که خیلی راحت میتوانید از بازار تهیه کنید.
مطابق شکل زیر Start page میباشد اگر دقت کنید سمت چپ بالا دو تا گزینه Open و Create که امکان ایجاد یا باز کردن پروژه یا وب سایت را به شما میدهد وجود دارد.
روی گزینه Create Project کلیک کنید(می توانید این کار رو با استفاده از کلید های Shift + Ctrl + N هم انجام بدهید).
در پنجره مقابل روی گزینه Visual CSharp کلیک کنید تا انواع پروژه هایی که میشود با زبان سی شارپ تولید کرد را ببینید.
در قسمت پائین صفحه داخل قسمت Name نام پروژه خود را بنویسید و در قسمت Location مسیر پروژه خود را مشخص کنید و در نهایت اسم Solution را وارد نمائید.
به صورت پیش فرض اسم Solution همان اسم پروژه شماست.
دقت کنید که در دات نت برای هر پروژه یک Folder ایجاد خواهد شد.
البته در صورتیکه شما گزینه Create directory for solution را هم تیک بزنید یک Folder هم برای Solution ایجاد خواهد شد.
Solution چیست؟
Solution یا به معنای فارسی راه حل بالاترین سطح دسته بندی در محیط ویژوال استودیو دات نت است.
یک Solution میتواند یک یا چند پروژه و هم این طور فایل را در کنار هم دسته بندی نماید.اصولا وظیفه Solution نگهداری اطلاعات روابط بین پروژه هاست که یک فایل با پسوند sln میباشد.
و دارای تاثیر در خروجی پروژه نخواهد بود.
در مقابل Project یا همان پروژه ها دارای خروجی مستقیم با توجه به نوعشان هستند.
به عنوان مثال Console Application ها دارای خروجی با پسوند exe به معنای executable یا همان فایل های قابل اجراء میباشند.
بعد از اینکه کلید OK را کلیک کردید پروژه شما ایجاد میشود و برای شما یک فایل به نام Programm.cs را باز مینماید.
این فایل به صورت پیش فرض محلی است که نرم افزار شما از داخل آن شروع خواهد شد.
حالا فقط برای اینکه شروع کرده باشیم داخل این فایل و مطابق شکل زیر شروع به تایپ کردن نمایید.
Console.WriteLine("Hello World - C# Tuning!"); و در نهایت برای اینکه نرم افزار را بتوانید تست کنید کافی است که کلید Ctrl + F5 رو بزنید تا این نتیجه مقابل را بگیرید: ابتدا کدی را که قبلا نوشتیم را بررسی کنیم.
Console.WriteLine("Hello World - C# Tuning"); این خط در حقیقت همان جمله Hello World - C# Tuning را برای ما چاپ میکند.
در حقیقت کلاس Console دارای یک رفتار (Method) میباشد که امکان چاپ بر روی صفحه رو به ما میدهد.
این متد writeline میباشد.
پس اگر شما هر چیز دیگری داخل پرانتز و بین " " قرار دهید همان را برای شما چاپ خواهد کرد.
Method چیست؟
در واقع Method ها همان رفتار هایی هستند که ما از کلاس ها انتظار داریم.
در مثال بالا نوشتن بر روی تصویر را میتوانیم با استفاده از متد WriteLine بر روی کلاس Consol استفاده کنیم.
ایجاد متغییر ها در c#: برای ایجاد یک متغییر در سی شارپ باید ابتدا نوع داده ای آن و سپس نام متغییر را وارد نمائیم و در انتها ; را تایپ کنیم: کد: int MyNumber = 1000; Console.WriteLine(MyNumber); در مثال بالا از نوع داده ای int که یک نوع داده ای عددی است استفاده شده است.
پس میتوانیم مقادیر عددی رو داخل این متغییر قرار دهیم.
و مثل کد بالا با استفاده از WriteLine چاپش کنیم.
نوع های داده ای در c#: نوع های داده ای را میتوان بسته به محل قرار گیریشان در حافظه به سه دسته تقسیم کرد: Values Types Reference Types Pointer Types اگرحافظه را به دو قسمت Stack و Heap تقسیم کنیم.
مقادیر تمامی متغییر های نوع اول در حافظه Stack قرار میگیرد و به همین جهت دارای رفتارهای خاصی میشود مقادیر متغییر های نوع دوم در حافظه Heap قرار میگیرند.
:Value Types همان طور که گفتیم مهمترین خاصیت این نوع متغییر ها قرارگیری مقادیر آن ها در حافظه Stack میباشد که به همین دلیل رفتارهای خاصی خواهند داشت.
این نوع متغییر ها شامل Primitive Types یا همان نوع های بدوی Enum ها و Structها میباشند.
umeric Types , Boolean , Char نوع هایی هستند که به آن ها Primitive Types میگوییم.
نوع های عددی شامل int , double decimal, long , short , byte و...
که مقادیر مختلفی از اعداد را داخل خودشان نگه میدارند.boolean ها متغییر هایی هستند که فقط مقدار True و False به معنی مثبت یا منفی رو داخل خوشان نگه میدارند.
و در نهایت Char ها همان کاراکتر ها هستند.
کد: bool married = false; int myNumber = 1000; char c = 'c'; دقت داشته باشین که برای مقدار دهی char از ' یا همان Single Quotation استفاده کردیم.
و برای bool فقط مقدار true یا false امکان پذیر است.
گفتیم که ValueType ها دارای رفتار خاصی هستند.
اما چه رفتاری؟
وقتی یک متغییر از یکی از نوع های Value Type مثل int ایجاد میکنیم مقدار آن داخل حافظه Stack قرار میگیرد و وقتی از آن متغییر یک کپی میگیریم مقدار متغییر قبلی داخل متغییر جدید کپی شود.یعنی اگر مقدار متغییر دوم را عوض کنیم تاثیری روی مقدار متغییر اول نخواهد گذاشت.
این رفتار در مورد تمامی ValueType ها صدق مینماید: وقتی مقدار متغییر دوم را تغییر دهیم مقدار متغییر اول دست نخورده باقی ماند Enumerations: فرض بفرمائید که شما میخواهید یک کلاس تعریف کنید به نام انسان.
وقتی خواص انسان رو تحت بررسی دارین به جنسیت میرسید.
حالا میخواهیم روی کلاس انسان یک متغییر برای نشان دادن جنسیت تعریف کنیم.
به نظر شما جنسیت رو از چه نوعی باید در نظر گرفت؟
bool یا int؟اگر bool در نظر گرفتیم false به معنی مرد خواهد بود یا true؟
اگر int در نظر گرفتیم چه عددی بیانگر مرد و چه عددی بیانگر زن میباشد؟
و اگر کاربر شماعددی به غیر اعداد انتخابی شما وارد کرد چه طور؟
گاهی اوقات در توسعه نرم افزار ها ما به جنس (Type)هایی نیاز داریم که بتوانیم مقدار شان را محدود کنیم.
مثلا همین جنسیت.
با استفاده از Enumeration ها میتوانیم مقدار متغییر جنسیت رو به مرد یا زن محدود کنیم.
برای ایجاد یک Enumeration باید در یک فایل با پسوند cs که بیانگرسی شارپ است از Syntax زیر استفاده کنیم: کد: public enum eSex { Male, Female } دقت کنید که وقتی متغییری از این جنس بسازیم به هیچ وجه مقداری به غیر از مرد یا زن نمی توانیم اختصاص دهیم: کد: eSex Sex; // ایجاد متغییر از جنس یک enum Sex = eSex.Male; // مقدار دهی متغییر حالا میبینیم که چطور با استفاده از enum میتوانیم مقدار دهی یک متغییر را به مقادیر محدودی نسبت دهیم.
در دات هم مثال های متعددی از استفاده از enum ها وجود دارد.
مثلا یک enum به نام Keys تمامی کلید های صفحه کلید رو در خود جای داده است.
یا enumی با نام ConnectionState وضعیت های امکان پذیر یک Connection رو نشان میدهد.
کلاس ها: قبل از این تعریف کلاس را با هم بررسی کردیم.
اما حالا چطور میتوان یک کلاس تولید کرد.
فرض بفرمائید مفهومی مثل انسان را میخواهیم در غالب یک یک کلاس تعریف کنیم.ابتدا یک پروژه جدید از نوع Console Application با یک نام دلخواه در مسیر دلخواه تان ایجاد کنید.
سپس یک فایل با نام Prgoramm.cs خواهید داشت که در مثال قبلی دیده بودیم.
حالا باید یک کلاس جدید به پروژه اضافه کنیم.
برای این کار باید از منوی View گزینه Solution Explorer رو انتخاب کنیم یا میتوانیم از کلید های Alt + Ctrl + L استفاده نمائیم.Solution Explore در واقع یک نمایش مبنتی بر فایل از پروژه یا Solution شماست که به صورت یک درخت واره (TreeView) میباشد.
راس آن Solution شماست و سپس پروژه و Properties و Reference و در نهایت کلاس ها و آیتم های دیگر پروژه شماست.
روی Project یعنی دومین آیتم از این درخت واره راست کلیک کرده و گزینه Add و بعد New Item رو کلیک مینمائیم.
در پنجره ای که باز میشود یک Class را انتخاب و در قسمت پایین اسم فایل رو مشخص مینمائیم.
نکته ای که لازم است در نامگذاری فایل ها متدها و...
رعایت کنید این است که نام گذاری کلاس ها بهتر است به ترتیبی باشد که حرف اول هر کلمه با حروف بزرگ (Upper Case) و ما بقی با حروف کوچک باشد.
به عنوان مثال کلاس Person که P با حروف بزرگ و ما بقی کوچک میباشد.
یا کلاس SqlConnection حروف اول هر کلمه یعنی S و C با Upper case نوشته میشوند.
وقتی اسم رو تایپ کردین و گزینه Add رو زدید.
سپس یک فایل به Solution Explorer اضافه خواهد شد و همزمان برای شما نمایش داده میشود.
متن داخل فایل به این ترتیب است: کد: using System; using System.Collections.Generic; using System.Text; namespace CSharpTuning.Samples { class Person { } } قبل از این در مورد کلمه using و namespace صحبت کرده ایم.
همانطور که میدانید یک namespace یک دسته بندی برای کلاس هاست.
حالا ما داریم یک namespace به نام CSharpTuning.Samples برای مثال های خود تولید میکنیم و کلاس Person را داخل این namespace قرار میدهیم.
دقت کنین که هر namespace دارای یک block از کد میباشد که با استفاده از علامت } شروع و بعد با { پایان مییابد و هر آنچه که داخل این علامت باشد داخل آن namespace قرار خواهد گرفت.
ایجاد کلاس در c#: برای ایجاد یک کلاس در سی شارپ شما باید داخل یک namespace از کلمه کلیدی class و سپس نام کلاس استفاده کنین.
مثال با برای ایجاد کلاس Person داخل namespaceی به نام CSharptuning.Samples جمله فوق یعنی class Person رو به همراه یک block از کد برای این کلاس ایجاد میکنیم.
دقت کنین که شما تا به اینجا دو علامت } و دو علامت { دیده اید یعنی شما دو block از کد دارید که یکی برای namespace و دیگری برای کلاس Person میباشد.
هر آنچه که داخل {} علامت مربوط به کلاس Person قرار گیرد متعلق به کلاس Person است.
فیلد ها درc#: تا ایجای کار کلاس ما هنوز هیچ عضوی ندارد اما ما میتوانیم از این کلاس استفاده کنیم.
حالا باید داخل این کلاس اطلاعات مورد نظرمان را تعریف کنیم.
من میخواهم Field های Name و Age رو برای این کلاس تعریف کنم.
به این معنا که هر انسان (Person) دارای نام و سن میباشد برای تعریف یک Field با داخل block کلاس مورد نظر ابتدا کلمه public و سپس نوع داده ای و سپس نام متغییر را وارد نمائیم.
پس من داخل block کلاس Person این دو جمله را تایپ مینمایم کد: public string Name; public int Age; توجه داشته باشین که فعلا فقط از کلمه public استفاده مینمائیم.
پس تا اینجا کلاس ما باید به این شکل باشد: حالا میتوانیم از این کلاس شی ء بسازیم و به اشیایی که ایجاد کردیم مقادیر Name و Age را ست کنیم.
بعد از اینکه یک کلاس رو ایجاد کردیم باید بتوانیم از آن کلاس استفاده کنیم.
اصولا برای استفاده از یک کلاس میتوانیم از آن کلاس یک شیء بسازیم و سپس به آن شیء اطللاعات ست کنیم و از رفتار های آن کلاس استفاده کنیم رو میتوان به دو قسمت Stack و Heap تقسیم کرد.
برای ساختن یک شیء (object) باید ابتدا یک متغییر از جنس کلاس مورد نظر ایجاد کنیم: کد: Person p; در حقیقت متغییر p یک رابطه (Reference) به شیء مورد نظر خواهد بود.
پس یک شیء رو به آن متغییر نسبت میدهیم.
دقت داشته باشین که reference شما در حاقظه Stack و خود شیء شما در حافظه Heap ساخته خواهد شد: کد: p = new Person(); دقت داشته باشین که در حقیقت p یک refernce است و نه objcet اما بدون آن reference ما به آن object دسترسی نخواهیم داشت اگرobject را یک تلویزوین در یک محلی عمومی مثل فرودگاه در نظر بگیرین بدون داشتن remote control نمی توانین کانال تلویزیون رو عوض کنین.
پس این reference یا متغییر p در نقش یک remote control برای شیء است که ما در حافظه heap داریم خطوط بالا را میتوان در یک خط خلاصه کرد و همان موقع که یک reference میسازیم همان موقع هم با یک object جدید مقدار دهی نمائیم: کد: Person p = new Person(); p.Name = "Ali"; p.Age = 20; به شکل زیر دقت کنید: این در واقع اتفاقی است که با توجه به خط بالا میافتد , یعنی یک متغییر در حافظه Stack و یک شیء در حافظه Heap.
اما با استفاده reference که داریم (p) میتوانیم مقادیر object مورد نظرمان را ست کنیم و...دقت داشته باشین که وقتی شما از کلمه new و سپس اسم کلاس با استفاده از پرانتز استفاده میکنین, در واقع یک شیء جدید در حافظه ساخته میشود و اگر این شیء رو به یک متغییر مثل p که قبلا ساخته شده بود مقدار دهی کنید یک رابطه جدید و در نتیجه مقادیرتان را از دست خواهید داد: کد: Person x = new Person(); x.Name = "Reza"; x.Age = 44; x = new Person(); Console.WriteLine(x.Age); // خروجی این خط صفر خواهد بود x.Name = "Ali"; شکل زیر اتفاقاتی که در خطوط با میافتد را تفسیر مینماید دقت نمائید که objectی که مقادیر Reza و 44 را داشته است توسطGarbage collection به دلایلی که قبلا توضیح دادیم از حافظه حذف خواهد شد.
کد: Person myPerson = new Person(); myPerson.Name = "Masoud"; myPerson.Age = 33; Person yourPerson = myPerson; yourPerson.Name = "Amir"; yourPerson.Age = 23; Console.WriteLine("myPerson Info: Name:{0}, Age:{1}",myPerson.Name,myPerson.Age); Console.WriteLine("yourPerson Info: Name:{0}, Age:{1}",yourPerson.Name,yourPerson.Age); خروجی که این چند خط کد دارند باید به شکل زیر باشد: کد: myPerson Info: Amir, Age: 23 yourPerson Info: Amir, Age: 23 به دلیل آنکه: Refrence کپی در c#: کد: Person yourPerson = myPerson; در حقیقت در کدی که نوشته شده یک کپی از یک شیء به نام myPerson ایجاد شده و نام آن را yourPerson نهاده ایم.
دقت کنین که در سی شارپ رفتار پیش فرض کپی از اشیاء reference copy است.
وقتی ما از myPerson یک Reference copy تهیه میکنم در حقیقت فقط آدرس حافظه myPerson رو در متغییر yourPerson قرار میدهم و نه خود شیء را.
البته این یک نوع ازانواع کپی ها (نوع پیش فرض ) میباشد.
Place holders: کد: Person p = new Person(); p.Name = "Ali"; p.Age = 20; Console.WriteLine("MyName is {0} and I 'm {1} years old.",p.Name,p.Age); اگر به کدی که در خط بالا نوشته شده است دقت کنین یک سری عدد داخل متن رشته ای که در متد WriteLine استفاده شده است میبینیند.
اعداد در داخل دو علامت {} قرار گرفته اند و از 0 تا n میباشند.
در واقع این اعداد جای نگهدار (PlaceHolder)هایی هستند که باید با مقادیر متغییر هایی که به ترتیب بعد از متن رشته ای قرار میگیرند جایگزین شوند.
در واقع خروجی کد بالا متن زیر خواهد بود.
که متغییر p.Name یا همان "Ali" جایگزین {0} شده و مقدار متغییر p.Age که 20 بود نیز جایگزین {1} شده است.
کد Html: MyName is Ali and I 'm 20 years old.
متدها در c#: در واقع رفتار های کلاس ها (یا همان اشیاء شان) از طریق متد ها پیاده سازی میگردد.
به این معنی که اگر کلاس Person توانمندی چاپ اطلاعاتش را نیازداشته باشد باید یک متد برای این کار ایجاد کند.برای ایجاد یک متد در سی شارپ کافی است از Syntax زیر استفاده کنیم: کد AccessModifier returnType MethodName([parameter type parameter name]) { } در صورتیکه متد شما باید مقدار برگرداند (شبیه function ها در (vb) باید جنس متغییر خروجی را مشخص کنیم.
مثلا اگر متد شما دو عدد رو با هم جمع میزند و یک حاصل رو در غالب یک عدد بر میگرداند نوع آن را int تعریف میکنیم.
اگر متد شما خروجی ندارد و فقط یک سری کار را انجام میدهد (subroutine)ها در (vb) نوع خروجی آن را void تعریف میکنیم.
MethodName که اسم متد شماست.
در صورتیکه متد شما دارای ورودی (parameter) است کافیه که به ترتیب نوع داده ای پارامتر و سپس نام آن را تایپ میکنیم.
اگر تعداد پارامتر ها بیش از یکی است از , برای جدا کردن آن ها استفاده میکنیم.
دقت کنید که هر متد دارای یک block of code برای خودش میباشد.
پس حتما {} رو قرار میدهیم و کد هایی که نیاز داریم را ما بین این دو علامت مینویسیم محل قرار گیری متد ها در block of code کلاس است.
حالا به متد ShowInfo که برای نمایش اطلاعات اشخاص در داخل کلاس Person مینویسم دقت کنید: کد: public void ShowInfo() { Console.WriteLine("Name: {0},Age: {1}",Name,Age); } برای استفاده از متد ها هم کافیه که بعد از اسم شیء (object) نام متد را به همراه پرانتز استفاده کنیم.
دقت کنید که اگر متد شما دارای ورودی است مقادیر ورودی داخل پرانتز قرار میگیرد.
کد: Person p = new Person(); p.Name = "ali"; p.age = 20; p.ShowInfo(); یک مثال هم از متدی که دو عدد را گرفته و حاصل جمعشان را بر میگرداند: کد: publc class Calc { public int Add(int num1,int num2) { return num1 + num2; } } و استفاده از آن: کد: Calc c= new Calc(); int result = c.Add(10,50); Console.WriteLine("Result of {0} + {1} is: {2}",10,50,result); فصل دوم تجزیه وتحلیل سیستم 1)مطالعه و شناخت سیستم 1-2) تعریف: آموزش مجازی چیست؟
عبارت" آموزش مجازی " به هر گونه فرایند یادگیری اشاره میکند که در یک واقعیت مجازی ویا یک کلاس درس مجازی رخ میدهد.
موقعیتی که در انجا این یادگیری اتفاق میافتد "مجازی "نامیده میشود زیرا آن موقعیت در فضای واقعی وجود ندارد.
اینترنت بعنوان بعنوان کلاس مجازی رسانه بسیار خوبی است زیرا به دانش آموزان وآموزشگران امکان ارتبط متقابل در سراسر د نیا را میدهد.
از آنجائیکه "آموزش مجازی " نوع غیر سنتی آموزش است دانش آموزان ومربیان باید با انواع مختلف یادگیری آشنا شوند 2-2) روند کاردرسیستم: روند کار به این صورت میباشد که کاربر صفحه اول سایت را مشاهده میکند که از طریق آن میتواند فرم ثبت نام را پرکند و به وسیله user name و password خود از امکانات آموزشی سایت استفاده کند.
رشته های مجود تعریف شده و دروس آن مشخص شده است دانشجو پس از ورود میتواند انتخاب واحد نماید.
استاد راهنما نیز میتواند با رمز خود وارد سایت شده و ساعات تدریس و لیست دانشجویان و نمرات را مشاهده نماید اطلاعات بیشتر راجع به منوهای سیستم در فصلهای آینده به تفضیل بحث خواهدشد 3-2) ویژگی های سیستم: 1-2-3) امنیت سیستم: در سیستم موجود نحوه کد کردن کلمه عبور امنیت سیستم تعریف میشود.
2-2-3) اطلاع رسانی از طریق مقالات و اخبار موجود 3-2-3) امکان حذف و اخذ درس و دیدن وضعیت تحصیلی 4-2-3) امکان توسعه سایت و اضافه نمودن رشته های جدید 5-2-3) جداول موجود: جدول دانشجو جدول دانشجو، درس جدول درس جدول پسورد جدول استاد جدول استاد، درس جدول استاد، دانشجو پس از انجام مراحل ابتدایی وتجزیه وتحلیل پروژه طراحی اصلی آغاز میشود اولین مساله درطراحی بالا به پایین است.
برای تشخیص روابط داده ای بین زیرسیستم احتیاج به نمودار ساخت یا(structure chart) سیستم بود که با در نظر گرفتن اطلاعات در دست ما و مراحل قبل در پروژه طراحی شد.
دومین مساله طراحی منوهای سیستم است که شکل اولیه نرم افزار را درذهن ما ایجاد کرد.طراحی خروجی های سیستم وورودی های سیستم مرحله بعدی کار ما را تشکیل داد که در اسناد پروژه دریک بخش واحد آمده است.
تعریف منوها و زیر منوها بطور کامل در فوصول بعد خواهد بود چرا که تعریف منوها در فصل طراحی ممکن است باعث ناخوانایی فصل گردد.
شرح DFD: پردازش های سیستم شامل پنج مرحله میباشد که هر کدام از این مراحل در منو های جدا از هم آورده شده است.
فرایند های اصلی سیستم شامل فرایند های زیر میبا شد ورود ثبت نام تعاریف اطلاع رسانی گزارشات که در نمودار برخی از این فرایند ها ترکیب شده اند.
مدلسازی معنایی داده ها با روش (ER): داده های ذخیره شدنی در پایگاه داده ها ابتدا باید در بالاترین سطح انتزاع مدلسازی معنایی شوند.
مدلسازی معنایی داده ها یعنی ارائه مدلی از محیط عملیاتی یا خرد جهان واقع (بخشی از یک محیط واقعی شامل واقعیات یا: بوده ها، شده ها، هست ها ) با توجه به معنای داده ها به کمک مفاهیمی مستقل از جنبه های مربوط به نمایش منطقی و نمایش فیزیکی داده ها.
از روش های کلاسیک رایج در مدلسازی معنایی داده ها روش موسوم به موجودیت ارتباط (ER) یا مدل موجودیت – ارتباط است.
در روش (ER) سه مفهوم معنایی وجود دارد و معنای داده های هر محیطی به کمک همین سه مفهوم نمایش داده ها میشودند: نوع موجودیت صفت خاصه یا خصیصه نوع ارتباط نوع موجودیت عبارتست از مفهوم کلی شی، چیز، پدیده و به طور کلی هر آنچه که میخواهیم در موردش اطلاع داشته باشیم و دانش خود را در موردش افزایش دهیم، اعم از اینکه وجود فیزیکی یا ذهنی داشته باشد.
هر نوع موجودیت از نظر کاربر نام و معنای مشخص دارد.
می توان از طریق سه ضابطه یک نوع موجودیت را تشخیص داد: یک نوع موجودیت از یک محیط معمولا نمونه هایی متمایز از یکدیگر دارد هر چند نوع موجودیت تک نمونه ای هم میتواند مطرح باشد.
هر نوع موجودیت یک نام با یک معنای مشخص دارد.
معمولا حالت کنشگری یا کنشپذیری دارد.
صفت در واقع خصیصه یا ویژگی یک نوع موجودیت است و هر نوع موجودیت مجموعه ای ار صفات دارد که حالت یا وضع آن را توصیف میکند.
هر صفت از نظر کاربران یک نام و یک نوع و یک معنای مشخص دارد.
نوع ارتباط عبارتست از اندرکنش بین (n) نوع موجودیت و ماهیتا نوعی بستگی بین انواع موجودیتهاست.
هر نوع ارتباط یک معنای مشخص دارد و با یک نام بیان میشود.
و نیز میتوان گفت که نوع ارتباط عملی است که انواع موجودیتها جاری بوده، هست و یا خواهد بود.
مراحل مدلسازی معنایی در مدلسازی معنایی داده ها مراحل زیر باید انجام شوند: مطالعه، تحلیل و شناخت محیط برآورد خواسته ها و نیازهای اطلاعاتی و پردازشی همه کاربران ذیربط محیط (مهندسی نیاز ها ) و تشخیص محدودیتهای معنایی و قواعد فعالیتهای محیط بازشناسی انواع موجودیت های مطرح و تعیین وضع هر نوع موجودیت و جنبه های هر صفت بازشناسی انواع ارتباطات بین انواع موجودیت ها، تشخیص الزامی بودن یا نبودن مشارکت در آنها و تشخیص چندی هر ارتباط رسم نمودار (ER) به صورت واضح و خوانا فهرست کردن پرسشهایی که پاسخ آنها از نمودار بدست میآید وارسی مدلسازی انجام شده، تا اطمینان حاصل شود که مدلسازی، پاسخگوی نیازهای کاربران است شرح ERD: نمودار مدیریت رابطه ها جهت معرفی موجویت ها و ارتباط آنها با یکدیگر و سیستم رسم میشود و در فاز پیاده سازی به بانک اطلاعاتی تبدیل میگردد این طراحی شامل (4) موجودیت و (4) رابطه میباشد: موجودیت دانشجو موجودیت استاد موجودیت درس موجودیت سایت موجودیت سایت به این دلیل در نظر گرفته شده است که اطلاعات دروس و رشته ها از آن گرفته میشود و تصمیم گیری در مورد این موارد به عهده مدیریت سایت میباشد.
از آنجایی که سیستم آموزش مجازی است لذا نیازی به موجودیت کتاب درسی و گروه آموزشی نمی باشد فصل سوم پیاده سازی سیستم مقدمه در این فصل نحوه ساختن فرم ها توضیح داده خواهد شد.
برای ساختن فرم به شکل زیر عمل میکنیم.
ابتدا پنجره visual studio را باز کرده و سپس در قسمت solution راست کلیک کرده کادری مطابق شکل قبل ظاهر خواهد شد.
بر روی add new item کلیک کرده و کادری مطابق شکل زیر ظاهر خواهد شد.
گزینه web form را انتخاب کرده در قسمت name نام صفحه ای را که میخواهیم ایجاد کنیم مینویسیم سپس در قسمت Language نام زبا مورد نظر را که در اینجا C# است را انتخاب میکنیم.و دکمه add را کلیک میکنیم و فرم مورد نظر ایجاد میشود.
برای طراحی این فرم visual studio اشیا مختلفی را در اختیارما قرار میدهد برای راحتی کار قبل از قرار دادن اشیا در صفحه بهتر است صفحه را به سلول هایی تقسیم کنیم تا مدیریت کردن اشیا و طراحی صفحه راحتر صورت گیرد برای تقسیم صفحه از table استفاده میکنیم برای این کار روی گزینه table در نوار ابزار بالای صفحه کلیک کرده و گزینه insert table را انتخاب کرده کادری مانند شکل زیر ظاهر خواهد شد.
در این کادر کاربر میتواند جدولی مطابق خواسته خود ایجاد کند در دو کادر بالای آن تعداد سطرها و ستون ها مشخص میشود.در کادر پایین آن میتوان Alignment جدول مورد نظر را تعیین کرد و سپس میتوان برای جدول Border و یا background نیز گذاشت.با کلیک کردن دکمه ok جدول با مشخصات مورد نظر ساخته میشود.