سی شارپ

|

اموزش سی شارپ

در مقالهقبل با struct آشنا شدیم و شباهت ها و تفاوت هایی که با کلاس داشت را خدمتتان گفتیم.

البته باید بدانیم که با struct ها در محیط سی شارپ زیاد کار نمیکنیم چرا که محیط سی شارپ کاملا شی گرا است و با کلاس ها سروکار دارد

ولی در زبان ++c قبل از این که بحث شی گرا عنوان بشود بحث struct ها عنوان شده بود و در سی شارپنیز تعمیم داده شده ولی ما صرفا با آن کاری نداریم مگر در مواقعی که کلاس نتواند کاری که میخواهیم را انجام بدهد در آن صورت از struct استفاده میکنیم.

تا اینجا شما با داده های integer دسیمال آرایه ها کلاس ها و struct ها آشنا شدید.

نوع داده جدیدی که میخواهیم در این قسمت خدمتتون اراِیه بدیم داده ی شمارشی است که به enumeration معروف است.

داده های شمارشی توسط خود برنامه نویس تعریف میشود و در برنامه از آن استفاده میشود.بهتر است داده های شمارشی را هم لول خود name space خودتون تعریف کنید یعنی در کلاس اقدام به تعریف enumeration نکنید چرا که در خارج محیط آن کلاس برای دسترسی به آن enumeration با مشکل مواجه خواهید بود به همین دلیل ما هم لول name space تعریف میکنیم enumeration ها را و در کلاس های مختلف که در آن name space داریم از آنها استفاده میکنیم.

نحوه ی تعریف یک enumeration مثل تعریف فیلد ها با access modifier شروع میشود یعنی شما مشخص میکنید که نحوه ی دسترسی به این enumeration به چه صورت باشد کلمه ی کلید یه enum را به همرا دارد و حالا نامی را که خوتان برایش در نظر میگیرید.به عنوان مثال ما میخواستیم جنسیت یک انسان را به صورت یک داده ی شمارشی تعریف کنیم از public enum استفاده کردیم نام person gender را برایش در نظر گرفتیم و در {} 2 جنسیت رو مطرح کردیم که male و female است توجه داشته باشید که من ; در آخر هیچکدام از این ها قرار ندادم.

تعداد داده های شمارشی شما هرچقدر که باشد شما باید به تعداد آن داده ها تا قبل از آخرین مقدار علامت کاما را بعد از آن مقادیری که خودتان میخواهید قرار بدهید مثلا من male را نوشتم و کاما را قرار دادم و female را نوشتم و چون female آخرین مقدار بوده نه ; نیاز داشته و نه کاما و مقادیری که به صورت پیش فرض این 2 آیتم میگیرند مقدار 0 و 1 است حالا اگر 5 آیتم بود 0و1و2و3و4و... مقدار دهی میشد ولی لزومی ندارد که ما مقادیر ئیش فرض را که از 0 شروع میشود را بپذیریم.

c sharp

در enumeration بعدی که به صورت public باز تعریفش کردم و کلمه ی enum را قرار دادم من میخواستم وضعیت تعهل یک person را مورد بررسی قرار بدم نامش را person marriges قرار دادم حالا صراحتا با : مشخص کردم که از جنس byte باشد در قسمت بالا که مشخص نکردم به صورت پیش فرض integer را در نظر میگیرد یعنی که مقادیر 0و1 integer هستند ولی اگر صراحتا شما مشخص کنید آن مقدار را میگیرد.byete چون مقدار کمتری میگیرد و مقادیر ما از 30 تجاوز نمیکرده در اینجا من byte را برایش در نظر گرفتم و همینطور هم که میبینید 3تا مقدار داریم که مقادیر این مقدار ها را خودم به صورت دستی مشخص کردم یعنی نخواستم که مثلا 0 و 1 باشد و خواستم که 10و20و30 باشد که این 3 حالت را در بر میگیرد.

اموزش سی شارپبرای enumeration بعدی که حالا یک نامی میتواند داشته باشد و some enum قرار دادیم و x.y.z را تعریف کردیم x را ابتدا مقدار 10 را برایش قرار دادم و علامت کاما را تایپ کردم برای y و z مقداری را قرار ندادم ولی به صورت پیشفرض چون مقدار اول را 10 قرار دادم و خاصیت مقادیر شمارشی این است که به صورت به پیشفرض از بعد از اولین مقدار شروع میکند به شمارش مقادیر 11و12و13 برای این 3 مقدار در نظر گرفته.

کلاس person را در اینجا داریم که public هستش و همانطور که میبینید داخل کلاس personهم من دو enum تعریف کردم که به صورت به صورت به صورت کامنت است و خدمتتون عرض کردم که enum ها را داخل کلاس ها تعریف نکنید هم لول خود کلاس و name space تعریفش کنید بدین شکل شما مدیریت بهتری میتوانید روی enum ها داشته باشید.

کلاس prson من یک فیلد public دارد که از جنس integer که age است و با آن کار کردیم و همچنین full name را دارد و حالا 2تا مقدار هم دارد به صورت public هستند و از جنس آن enumeration هایی هسستند که ما در بالا خدمتتون توضیح دادیم مثلا من خواستم کلاس person من علاوه برسن و نام کامل وضعیت تعهل و همچنین جنسیت را هم داشته باشد به این دلیل از آن enumeratin هایی که بالا من تعریفش کردم در اینجا هم من فیلد گرفتم و فیلد را تعریف کردم همانطور که میبینید فیلد gender من هست که نام برایش قرار دادم و گفتم که از نوع persons gender باشد که از جنس enum خودم تعریفش کردم و ; را قرار دادم سازنده پیشفرضم هست و سازنده ایی است که همه مقادیر را میگیرد.

اموزش c sharpسازنده ی دوم من full name میگیرد سن میگیرد و همچنین جنسیت را میگیرد و وضعیت تعهل را میگیرد و داخل خودش این مقادیری که کاربر هنگام new کردن این person وقتی از این سازنده استفاده میکند پاس میدهد بهش میاد در دل این فیلدها مینشاند و یک سازنده هم دارم که این سازنده من به جای این که من بیام این 4تارو به صورت پیشفرض بهش بدهم آمدم گفتم که از جنس یک person یک person میگیره خب این خیلی هوشمندتر است یعنی این که شما یک object را پاس میدهید .

به ورودی این سازنده و حالا میاید age و genderوmarrige و همچنین fullnameرا با توجه با آن object که شما میدهید و دکمه ی دات را میزنید که دیگر دسترسی دارید به فیلد های آن object مقداردهی میکند که به این روش copy constructor گفته میشود که از روش های خوب کپی کردن یک object به حساب می آید و اگر خاطرتان باشد در بحث کلاس ها اولین مقالهآموزشی که خدمتتون ارایه دادیم گفتیم وقتی دوتا object شما ایجاد میکنید و برابر هم قرار میدهید این ها در اصل کپی نمیشوند بلکه جفتشون به یک جا اشاره میکنند یعنی اگر شما یکی از فیلد ها را تغییر بدهید آن یکی نیز تغییر میکند اگر میخواهید این اتفاق نیفد این روش روش خوبی است یعنی شما در سازنده ی خود دیگر بیاید از جنس همان کلاس object بگیرید شما وقتی این کار را انجام میدهید و برابر با فیلدهاش قرار میدهید فیلد های خود آن کلاس را دقیقا برای شما یک نمونه کپی میشود.

متد show info که تا اینجا با آن خیلی کار کردیم و همانطور که میبینید این مقادیر فیلدها را برای ما نمایش میدهد.

اموزش سی شارپ

خب وارد کلاس program میشویم که کلاس اصلی برناممون هست.

از کلاس person من یک object ایجاد کردم new کردم با سازنده ی پیشفرض و marriage را برابر با married قرار دادم فقط توجه داشته باشید وقتی که میخواهید فیلد هایی که به صورت enumeration داخل یک کلاس تعریف شده را مقدار دهی کنید حتما باید نوع آن فیلد را که خودتان تعریف کردید که در اصل نامی هستش که ازجنس enum شما تعریف کردید آن را بنویسید دات را بزنید و حالا دسترسی خواهید داشت به مقادیری که داخل آن تعریف کردید ما در person marriage 3تا مقدار داشتیم marriedداشتیم single داشتیم divorced داشتیم که اینجا ما married را برای person 0 در نظر گرفتیم و assign کردیم.

برای person 1 ما از سازنده ی دوم استفاده کردیم که fullname ageو persons gender و همچنین person marrieg را داخل خودش مقدار دهی میکرد.سازنده هی دوم ما به این شکل بود که persons genderرا همانطور که میبینید دوباره نام را نوشتیم و مقدار male را برایش در نظر گرفتیم و برای وضعیت تعهل مقدار single را بهش assign کردیم و show infoرا فراخوانی کردیم که مقادیر را ببینیم و حالا یک خط آمدیم پایینتر یک objectدیگر درست کردیم از person و این کی را دقیقا به این شکل ایجادش کردیم که new person را زدیم از سازنده ی پیشفرض استفاده نکردیم و از سازنده ی دوم استفاده نکردیم و از سازنده یی اسنفاده کردیم که یک object از ما میگرفت از جنس کلاس person ما p1 را چون اینجا تعریف کردیم ما p1 را به p2 به عنوان ورودی دادیم و حالا همانطور که خدمتتون عرض کردیم الان مقدار p2 من یک کپی از p1 من میشود و در هنگام نمایش که شما بزنید همین علیرضا علوی 20 ساله را به شما نمایش میدهد حالا اگر شما p2 را تغییر بدهید p1 شما دیگر تغییر نمیکند برخلاف چیزی که تا اینجا کار کرده بودیم.خب بعد اینجا من یک شرطی را گذاشتم گفتم که p1 من اگر gender برابر با male بود یعنی اگر مرد بود نمایش بدهد که مرد هست در غیر این صورت نمایش بدهد که این مرد نیست و یک خانم هست . حالا از switch استفاده کردیم برای p1 و باری p1

.marrige در اصل ما از switch استفاده کردیم خود p1 که یک object هست .marrige یک داده ی شمارشی هست که تعریف کردیم ما حالا میخواهیم انواعی که ممکن است p1 در داده ی شمارشیmarrige داشته باشه را مورد بررسی قرار بدیم.caseرا نوشتیم گفتیم که اگرsingel بود کلمه ی single نمایش داده بشود از برنامه خارج بشود اگر married بود گلمه ی married نمایش داده بشه و اگر هم divorced بود کلمه ی divorced نمایش داده بشه و در نهایت منتظر صفحه کلید شدیم از کاربر…

اموزش سی شارپاموزش سی شارپ

دریافت آخرین مطالب وبلاگ در کانال داتینه

علی نعیمی

علی نعیمی هستم،دارای لیسانس سخت افزار.
از سال 90 بصورت تخصصی به فراگیری زبان سی شارپ پرداختم. در حال حاضر مسلط به سی شارپ، جاوا، پایگاه داده و زبان های تحت وب هستم.

نظرات
م
مهسا
13:34 1394/09/11

سلام چطوری در محیط سی شارپ برای parserکردن زبان xmlمیشه استفاده کرد.لطفا راهنمایی کنید.ممنونم

داتینه
علی نعیمی
08:32 1394/09/12

با سلام... در مقالات اینده به زودی توضیح خواهم داد.

نظر بدهید