تبلیغات
میهن وب هاست

آموزش سی شارپ – شی گرایی پیشرفته

نویسنده : امیر

نظرات : ۰ دیدگاه

بازدید : ۳۴۱ بازدید

تاریخ : ۲۶ مرداد ۱۳۹۶

در جلسه ی قبل با مبحث شی گرایی در کنار شما بودیم و در این قسمت با بررسی مبحث List های داده ای و تکمیل کردن مبحث شی گرایی در کنار شما هستیم.

 

حتما قبل از بررسی برنامه نویسی شی گرایی پیشرفته در سی شارپ نوشته ی مطالب قبلی این دوره ی آموزشی را با هشتگ #دوره آموزشی_سی_شارپ در سایت ما را مطالعه کنید.

 

معرفی Listها :

در صورتی که بخواهید یک تعداد داده به طور متوالی داشته باشید اکثر به دنبال آرایه می روید؛ همانطور که می دانید تعداد سلول های آرایه ثابت است و امکان تغییر تعداد سلول ها یک آرایه به‌صورت پویا وجو ندارد اما تعداد عناصر List به‌صورت پویا میتواند تغییر کند. با استفاده از List نیازی نیست که اندازه‌ی آن را ابتدای کار مشخص شود و در واقع با استفاده از List آرایه‌ای می‌سازیم که اندازه‌ی آن ثابت نیست. List در فضای نام using System.Collections.Generic قرار دارد .

فرم کلی آن به شکل زیر است :

مثال :

مثال کاربردی :

 

مبحث Collectionها :

با کمک collectionها می توانیم کلکسیونی از کلاس ها را ایجاد کنیم. به عنوان مثال می توان کلاسی ایجاد کرد که آن خوداز چندین نمونه ، از کلاس های ایجاد شده باشد. این کلاس خصوصیاتی مانند حذف و اضافه نمونه ها از کلکسیون را دارا می باشد. Collection در فضای نام using System.Collections قرار دارد و هنگام تغریف Collection باید از کلمه CollectionBase در مقابل نام Collection استفاده کنیم (باید از CollectionBase ارثبری کنیم) .

مثال :

در مثال بالا دو کلاس تعریف شده است. اولین کلاس، کلاس Car است که ویژگی های یک عنصر از کلکسیون کلاس ما می باشد. دومین کلاس، کلکسیون کلاس است (My_cars) که شامل مجموعه ای از اشیاء از نوع کلاس Car است.

کلاس CollectionBase دارای خاصیت List است که مجموعه ای از اشیاء را در خود جای می دهد همچنین دارای متدهایی مانند Add و Remove و… برای حذف یا اضافه کردن و … اشیاء است و به سادگی می توان با استفاده از خاصیت List و متد مربوطه عملیلات مورد نظر را انجام داد. و نیازی به تعریف یک لیست از نوع کلاس نمی باشد زیرا خود داری خاصیت List می باشد.

نکته : متدهای خاصیت List یک شیء را قبول می کنند نه یک کلاس را.

نحوه استفاده :

 

کاربرد کلمه‌ ی کلیدی static :

عضوی از کلاس که بدون ساخت هیچ شیء‌ای ، مستقیماً (از طریق نام کلاس و عملگر نقطه)میتوانید به آن دسترسی داشته باشید. آن عضو بدون ساخت هیچ object ای از کلاس قابل دسترسی و در واقع مستقل از اشیاء است؛ می‌توانید هم متدها و هم متغیرها را به‌صورت static تعریف کنید. از آن‌جا که متد ()Main نقطه‌ی شروع برنامه‌ و یکی از اعضای کلاس است، باید قبل از هرچیز و پیش از ساخت هرگونه شیء‌ای، صدا زده شود. لذا متد ()Main را به‌صورت static تعریف می‌کنیم .

نکته :متد static تنها می‌تواند به اعضای static دسترسی داشته باشد و نمی‌تواند مستقیماً به اعضای عادی کلاس دسترسی پیدا کند، زیرا اعضای عادی یک کلاس حتماً باید به یک شیء وصل شوند تا مقدارشان در آن شیء ذخیره شود؛ اگر قصد دارید درون یک متد static به اعضای عادی نیز دسترسی داشته باشید باید از طریق یک شیء این‌کار را انجام دهید:

 

کلاس هایی از نوع static :

هنگامی‌که یک کلاس را به‌صورت static تعریف می‌کنید دیگر نمی‌توانید از روی این کلاس شیء بسازیدو همه‌ی اعضای کلاس باید static باشند .

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

مثال :

ابتدا یک شیء از این کلاس ساخته و مقادیر را به آن میدهیم. فیلدهای private خارج از کلاس خودشان در دسترس نیستند و ما از طریق یک متد public توانستیم مقدار آن‌ها را به خارج از کلاس ارسال کنیم.

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

 

کپسوله سازی یا Encapsulation :

Encapsulation در سی‌شارپ بدین معناست که اطلاعات یک کلاس در برابر دسترسی‌های غیرمجاز و خراب‌کاری محفوظ نگه داشته شود که این ویژگی اساسی شی گرایی حاوی دو مزیت اصلی می باشد :

اینکه داده‌ها را به کدهای درون کلاس متصل می‌کند.
اینکه دسترسی به اعضای کلاس را کنترل می‌کند.
کنترل دسترسی از طریق access modifier ها انجام می‌شود که public، private، protected و internal هستند.

فرستادن Reference به متدها :

پارامترهای ورودی همیشه حتما نباید متغیرها و داده های ساده باشد گاهی نیاز داریم به متد Reference خاصی ارسال کنیم و در آن از آن Reference استفاده کنیم.

مثال :

نکته : به همان روشی که value type ها به متدها داده می‌شوند، reference type ها نیز به متدها داده شده‌اند.

 

ارسال آرگومان به پارامتر ها :

از دو طریق Argument ها به parameter ها فرستاده می‌شوند:

  • Call-by-value
  • Call-by-reference

در روش اول call-by-value از مقدار argument یک کپی گرفته شده و به پارامتر داده می‌شود. از این‌رو، هر کاری که با پارامتر کنید هیچ تغییری روی argument صورت نمی‌گیرد.

مثال :

در روش دوم call-by-reference یک reference به‌عنوان argument به متد داده شده و کپی این reference به پارامتر فرستاده می‌شود. درون متد، پارامتر به همان شیءای رجوع می‌کند که argument رجوع می‌کند. این یعنی اگر هر تغییری روی پارامتر انجام دهید، این تغییر روی argument نیز تاثیر می‌گذارد زیرا هردو به یک شیء وصل هستند و تغییر هرکدام، شیء را تحت تاثیر قرار می‌دهد.

مثال :

خب این هم از جلسه ای جدید در دوره ی آموزشی سی شارپ امیدوارم لذت برده باشید.

 

برای استفاده از تمامی جلسات از هشتگ #دوره آموزشی_سی_شارپ در سایت ما استفاده کنید.

منتظر جلسه ی بعدی دوره آموزشی سی شارپ باشید.

موفق و پیروز باشید.

با دوستانتان به اشتراک بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code

مطالب زیر را از دست ندهید: