مفهوم Get و Set در واقع مثل یک «نگهبان» برای متغیرهای کلاس عمل میکنند.
- Get:
یعنی «خواندن» یا «گرفتن» مقدار.
- Set:
یعنی «نوشتن» یا «مقداردهی» به متغیر.
در سیشارپ به اینها میگوییم Property (ویژگی).
یک مثال بسیار ساده (کلاس ماشین)
فرض کنید میخواهیم نام یک ماشین را ذخیره کنیم:
View Source Code
چرا از Get و Set استفاده میکنیم؟ (داستان نگهبان)
اگر فقط از متغیر ساده استفاده کنیم، هر کسی میتواند هر مقداری (حتی غلط) به آن بدهد. اما با
getو
setمیتوانیم شرط بگذاریم. به این مثال با شرط دقت کنید: View Source Code توضیح ساده: وقتی مینویسید user.Age = 25; بخش set اجرا میشود و عدد ۲۵ در متغیر ذخیره میشود. وقتی مینویسید Console.Write(user.Age); بخش get اجرا میشود تا عدد را به شما نشان دهد. کلمه
valueدر بخش set، همان عددی است که شما میخواهید به متغیر بدهید (در اینجا همان ۲۵). خلاصه: get: برای دیدن (خروجی). set: برای گذاشتن (ورودی). این مفهوم در لیستها هم خیلی کاربرد دارد؛ مثلاً وقتی میخواهید لیستی از «اشیاء» (مثل لیستی از ماشینها) بسازید. دوست دارید بدانید چطور یک لیست از کلاسها بسازیم؟
این کد یک مثال استاندارد و کامل از برنامهنویسی شیءگرا (OOP) در سیشارپ است. در اینجا شما به جای کار با متغیرهای ساده (مثل فقط یک نام یا فقط یک عدد)، یک موجودیت به نام «شخص» (Person) ساختهاید.
بیایید این کد را به ۵ بخش اصلی تقسیم کنیم:
۱. قالببندی (The Class Definition)
View Source Code
اینجا شما یک نقشه یا الگو کشیدهاید. میگویید: «هر کسی که در برنامه من یک Person محسوب میشود، حتماً باید یک کد شناسایی (Id)، یک نام (Name) و یک سن (Age) داشته باشد.»
* get/set: یعنی این ویژگیها قابل خواندن و تغییر دادن هستند.
۲. ایجاد ظرف اصلی (The List)
View Source Code
این خط یک لیست خالی ایجاد میکند. اما تفاوتش با لیستهای قبلی این است که این لیست فقط و فقط اشیائی از نوع
Personرا قبول میکند. ۳. روش سنتی افزودن (Traditional Way) View Source Code این روش طولانیتر است: ابتدا یک شیء خام به نام
p1میسازید. تکتک ویژگیهایش را پر میکنید. در نهایت آن را به لیست
peopleاضافه میکنید. ۴. روش سریع و مدرن (Object Initializer) View Source Code این روش بسیار محبوب است. شما همزمان که دارید شیء را میسازید (
new Person)، مقادیر آن را هم داخل
{} مشخص میکنید و مستقیماً به متد Addمیفرستید. کد شما کوتاهتر و خواناتر میشود. ۵. استخراج اطلاعات (Iteration) View Source Code در این حلقه:
personنمایندهی یکی از آن آدمهایی است که در لیست ذخیره شدهاند. با علامت
$(String Interpolation) خیلی راحت متغیرها را وسط متن چاپ کردهاید. * در هر بار چرخیدن حلقه، برنامه سراغ *Property*های آن شخص میرود و مقادیر را برای چاپ کردن "Get" میکند (میخواند). خلاصه کاربردی: این کد به شما اجازه میدهد دادههای مرتبط را دسته بندی کنید. مثلاً اگر بخواهید سن "Sara" را تغییر دهید، میدانید که دقیقاً باید سراغ
Ageدر آن ردیف خاص بروید، بدون اینکه به نام یا آیدی او آسیبی برسد. یک پیشنهاد: آیا میخواهید یاد بگیرید چطور یک کد بنویسید که فقط افرادی را چاپ کند که سن آنها بالای ۲۵ سال است؟ (شرط گذاشتن روی لیست اشیاء).
کد شما یک برنامه کنسولی است که وظیفهاش دریافت نام و قیمت کالا از کاربر، ذخیره آنها، انجام محاسبات آماری و نمایش نتایج است. مراحل اجرای برنامه به ترتیب عبارتند از:
ابتدا یک کلاس به نام PriceItem تعریف شده است که شامل دو ویژگی است: نام کالا (رشته) و قیمت کالا (عدد اعشاری).
سپس لیستی از این آیتمها ساخته میشود تا آیتمهایی که کاربر وارد میکند داخل آن ذخیره شود.
پیام راهنمایی به کاربر نمایش داده میشود تا نام و قیمت کالا را وارد کند و اگر بخواهد تمام کند، نام را خالی بگذارد.
در هر بار اجرای حلقه، ابتدا نام کالا از کاربر گرفته میشود. اگر نام خالی بود، برنامه وارد بخش محاسبات میشود و حلقه تمام میشود.
سپس با حلقهای مجزا، از کاربر قیمت کالا دریافت میشود؛ به گونهای که اگر کاربر عدد صحیح وارد نکند، پیام خطای قرمز رنگ نمایش داده شده و دوباره قیمت درخواست میشود. این باعث میشود ورودی قیمت فقط عدد صحیح قبول شود.
پس از اینکه قیمت معتبر وارد شد، یک نمونه جدید از PriceItem با نام و قیمت مشخص شده ساخته شده و به لیست افزوده میشود.
پس از پایان ورود دادهها، مجموع کل قیمتها محاسبه میشود.
سپس میانگین قیمتها محاسبه میشود، البته این کار فقط وقتی انجام میشود که لیست حداقل یک مورد داشته باشد؛ در غیر این صورت میانگین صفر خواهد بود.
تعداد کل آیتمهای وارد شده نیز شمارش میشود.
سپس تمام آیتمها همراه با قیمتهایشان به صورت مرتب و قابل خواندن در کنسول نمایش داده میشوند. قیمتها به صورت سه رقمی جدا شده نمایش داده میشوند (مثلاً 1,000).
در ادامه، مجموع، میانگین و تعداد کل آیتمها نمایش داده شده و در نهایت برنامه منتظر فشردن یک کلید توسط کاربر میماند تا پنجره بسته نشود.
این روند باعث میشود کاربر بتواند دادهها را به درستی وارد کند و برنامه به طور ایمن و دقیق آنها را پردازش و نمایش دهد.
ConsolePrice.zip
حجم:
450.9K
به شما دو پروژه دادم که با ۶۰ نفر بازدید به من پیام دهید که پروژه چکار می کند و چه فرقی با هم دارند دو پروژه را یک جا زیپ کردم
Admin: @alialirezapanahi
برنامه نویسی سی شارپ
تولید اعداد تصادف
کد شما یک برنامه کنسولی کامل در زبان #C است که وظیفه تولید رشتههای تصادفی (مانند رمز عبور یا کد فعالسازی) را بر عهده دارد. در ادامه، بخشهای مختلف این کد را به زبان ساده توضیح میدهم:
۱. بخش تنظیمات اولیه و کتابخانهها
در خط اول از System.Globalization استفاده شده تا برنامه بتواند از تقویم فارسی (PersianCalendar) استفاده کند. همچنین شیء
rndبرای تولید اعداد تصادفی در ابتدای برنامه تعریف شده است. ۲. حلقه بینهایت (
while (true)) این حلقه باعث میشود برنامه پس از یک بار تولید کد بسته نشود و کاربر بتواند به دفعات کد جدید ایجاد کند، مگر اینکه کلمه exit را تایپ کند. ۳. دریافت ورودی از کاربر نوع کد: برنامه از کاربر میپرسد که کد شامل چه کاراکترهایی باشد (فقط عدد، ترکیب با حروف یا همراه با نماد). طول کد: در این بخش یک بررسی هوشمندانه انجام دادید. اگر کاربر عددی خارج از بازه ۴ تا ۳۲ وارد کند یا متنی غیر عددی بنویسد، برنامه به صورت خودکار طول ۸ را در نظر میگیرد تا از بروز خطا (Crash) جلوگیری کند. _نکته فنی: در کد شما در خط شرط
ifعلامتهای منطقی
||(یا) جا افتاده است که باید به صورت
length < 4 || length > 32اصلاح شود. ۴. منطق انتخاب کاراکترها (
switch) با استفاده از دستور مدرن
switch expressionدر سیشارپ، بر اساس انتخاب کاربر، مجموعهای از حروف و اعداد (رشته
chars) آماده میشود. این رشته منبع اصلی برای انتخاب تصادفی است. ۵. تولید رشته تصادفی (LINQ) این خطِ جذاب و حرفهای: string result = new string(Enumerable.Range(0, length) .Select(_ => chars[_rnd.Next(chars.Length)]).ToArray()); به تعدادِ "طول" انتخاب شده، به صورت تصادفی از میان کاراکترهای منبع (
chars) دستچین میکند و در نهایت آنها را به یک رشته واحد تبدیل میکند. ۶. مدیریت زمان و تاریخ در این بخش، زمانِ لحظهای سیستم (DateTime.Now) گرفته شده و به دو صورت فرمتدهی میشود: میلادی: با فرمت استاندارد YYYY/MM/DD. * شمسی: با استفاده از کلاس
PersianCalendarکه سال، ماه و روز را به صورت مجزا استخراج کرده و با علامت
/کنار هم میچیند. ۷. نمایش خروجی با رنگ سبز برای جذابیت بصری، از Console.ForegroundColor = ConsoleColor.Green استفاده شده است. این کار باعث میشود "کد تولید شده" در میان سایر نوشتهها کاملاً متمایز و خوانا باشد. در انتها هم با
ResetColorرنگ کنسول به حالت عادی برمیگردد تا روی نوشتههای بعدی اثر نگذارد. خلاصه عملکرد: این برنامه یک ابزار کاربردی برای تولید رمزهای عبور امن یا شناسههای تصادفی است که علاوه بر دقت در تولید محتوا، زمان دقیق تولید را هم به دو تقویم مختلف به کاربر نشان میدهد. تنها ایراد کوچک آن، نبود علامت
||در شرط مربوط به متغیر
lengthاست.
31.6M حجم رسانه بالاست
مشاهده در ایتا
درس اول: معرفی دوره
در بخش سی شارپ فقط این کانال درس داده میشه
زمان:
حجم:
5.1M
جزئیات بیشتر در مورد درس اول
بیش از صد جلسه
معرفی دوره
admin:@alialirezapanahi