درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 215942
رتبه:3
344
265
416
2833
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا

تاریخ 47 ماه قبل
نظرات 5
بازدیدها 8047
با سلام به تمامی همراهان همیشگی انجمن تخصصی فناوری اطلاعات ایران. در قسمت های قبلی سری آموزشی زبان برنامه نویسی سی شارپ، با مفاهیم ابتدایی این زبان و دستورات کاربردی اولیه مانند متغیرها، حلقه ها، دستوران کنترلی و متدها آشنا شدیم. در ادامه بر اساس مباحث مطرح شده، وارد دنیای برنامه نویسی شئ گرا خواهیم شد. همانطور که اکثر شما می دانید، زبان سی شارپ یک زبان شئ گرا یا Object Oriented Programming Language می باشد. اما برنامه نویسی شئ گرا چیست؟ چرا ما از زبان های شئ گرا استفاده می کنیم؟ مفاهیمی مانند شئ و کلاس در زبان های شئ گرا چه کاربردی دارند و چندین سوال دیگر که در ادامه سری آموزشی سی شارپ قصد داریم به این سوالات پاسخ داده و شما را با برنامه نویسی شئ گرا و مفاهیم های مرتبط با آن آشنا کنیم. پس در ادامه دوره آموزشی سی شارپ با من همراه باشید.


تعریف شئ گرایی و برنامه نویسی شئ گرا


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

اما هر شئ که ما به عنوان یک موجودیت به آن نگاه می کنیم شامل یکسری خصوصیات و رفتارها می باشد. در زیر به تعریف خصوصیات و رفتارهای یک شئ می پردازیم:

  • خصوصیات یا Properties: خصوصیات مجموعه ای از صفات هستند که یک شئ را توصیف می کنند. برای مثال شئ ای با نام انسان را در نظر بگیرید، این شئ یکسری خصوصیات دارد مانند رنگ مو، قد، وزن، رنگ چشم و غیره. تمامی این پارامترها که به توصیف یک شئ می پردازند تحت عنوان خصوصیت یا Property شناخته می شوند.
  • رفتارها یا Behaviors: هر شئ علاوه بر خصوصیات، شامل یکسری رفتارها می باشد، این رفتارها در حقیقت کاریست که یک شئ می تواند انجام دهد. دوباره شئ انسان را در نظر بگیرید، این شئ می تواند نگاه کند، صحبت کند یا بشنود. رفتارها با خصوصیات تفاوت دارند و به کاری گفته می شوند که یک شئ می تواند انجام دهد.

در زبان های برنامه نویسی شئ گرا نیز ما باید به شناسایی موجودیت ها و اشیاء مورد استفاده در برنامه بپردازیم و خصوصیات و رفتارهای آن را تعریف کنیم. فرض کنید تصمیم داریم برنامه ای برای مدیریت یک کتابخانه بنویسیم. برنامه کتابخانه شامل یکسری اشیاء می باشد مانند:

  1. عضو کتابخانه
  2. اپراتور نرم افزار کتابخانه
  3. دسته بندی کتاب (که همان قفسه هایی که کتاب ها در آن دسته بندی می شوند می باشد)
  4. کتاب

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

  1. کد عضویت
  2. نام
  3. نام خانوداگی
  4. شماره ملی
  5. نام پدر
  6. جنسیت

همچنین هر عضو یکسری رفتارهایی دارد که مختص به عملیات های کتابخانه می باشد. برای مثال عضو کتابخانه می تواند رفتارهای زیر را داشته باشد:

  1. دریافت کتاب
  2. پس دادن کتاب
  3. ورود به کتابخانه
  4. خروج از کتابخانه

پس از آنکه رفتارها و خصوصیات اشیاء یک برنامه شناسایی شدند، باید نسبت به پیاده سازی آنها در نرم افزار اقدام کنیم که در قسمت بعدی در مورد پیاده سازی اشیاء و تعریف خصوصیات و رفتارهای آنها توضیح خواهیم داد.


مفاهیم اساسی در برنامه نویسی شئ گرا


برای ادامه مباحث مربوط به برنامه نویسی شئ گرا، لازم است که با چهار مفهوم اساسی در زبان های برنامه شئ گرا آشنا شویم. این چهار مفهوم، ارکان اساسی و ستون های برنامه نویسی شئ گرا می باشند که در زیر به بررسی هر یک از انها خواهیم پرداخت:

Abstraction

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

Encapsulation

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

Inheritance

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

Polymorphism

در فرهنگ لغت این واژه به معنای چند ریختی ترجمه شده است. اما در برنامه نویسی شئ گرا چطور؟ خیلی از افراد با این مفهوم مشکل دارند و درک صحیحی از آن پیدا نمی کنند. مفهوم Polymorphism رابطه مستقیمی با Inheritance دارد. یعنی شما ابتدا نیاز دارید مفهوم وراثت را خوب درک کرده و سپس به یادگیری Polymorphism بپردازید. باز هم برای درک مفهوم Polymorphism یک مثال از دنیای واقعی میزنیم. در کره خاکی ما انسان های مختلفی در کشور های مختلف و شهر های مختلف با گویش های مختلف زندگی می کنند. اما تمامی این ها انسان هستند. در اینجا انسان را به عنوان یک شئ والد و انسان چینی، انسان ایرانی و انسان آمریکایی را به عنوان اشیاء فرزند که از شئ انسان مشتق شده اند یا والد آنها کلاس انسان می باشد را در نظر بگیرید. کلاس انسان رفتاری را تعریف می کند به نام صحبت کردن. اما اشیاء فرزند آن، به یک صورت صحبت نمی کنند، انسان ایرانی با زبان ایرانی، چینی با زبان چینی و آمریکایی با زبان آمریکایی صحبت می کند. در حقیقت رفتاری که در شئ والد تعریف شده، در شئ های فرزند مجدد تعریف می شود یا رفتار آن تغییر می کند. این کار مفهوم مستقیم Polymorphism می باشد. در زبان های برنامه نویسی شئ گرا، Polymorphism به تغییر رفتار یک شئ در اشیاء فرزند آن گفته می شود. در زبان سی شارپ این کار با کمک تعریف متدها به صورت virtual و override کردن آنها در کلاس های فرزند انجام می شود. همچنین Polymorphism با کمک Interface ها قابل پیاده سازی است که در بخش های بعدی در مورد این ویژگی ها به صورت کامل صحبت خواهیم کرد.

در این بخش مقدمه ای بر مفاهیم اولیه برنامه نویسی شئ گرا داشتیم، در لیست زیر مباحثی که در طول دوره برنامه نویسی شئ گرا با آنها آشنا خواهیم شد را مشاهده می کنید:

  1. آشنایی با class ها و object ها
  2. تعریف فیلد ها و Property ها در کلاس ها
  3. نحوه تعریف رفتار ها برای کلاس ها با کمک متدها
  4. تعریف سازنده ها یا Constructor برای کلاس ها
  5. فیلد های readonly
  6. نوع های بدون نام (Anonymous Types)
  7. آشنایی با structs و تفاوت آن با کلاس
  8. آشنایی با Reference Types و Value Types تفاوت آنها و حافظه های Stack و Heap
  9. وراثت و کاربرد آن در برنامه نویسی شئ گرا
  10. انواع مختلف وراثت (Is-A و Has-A)
  11. کلمات کلیدی this و base
  12. متدهای virtual و مبحث Polymorphism
  13. کلاس های Abstract و Sealed
  14. آشنایی با Access Modifiers
  15. تعریف Interface ها و کاربرد آنها در برنامه نویسی شئ گرا
  16. بررسی برخی از Interface های موجود در کتابخانه دات نت
  17. سایر مباحث (Indexer ها، Extension Method ها، بررسی کلاس Object و آشنایی با مفاهیم Boxing و UnBoxing)

با اتمام مباحث ذکر شده، وارد قسمت Generics که در نسخه دوم دات نت به آن اضافه شده است خواهیم شد. امیدوارم که تا انتهای این دوره آموزشی با بنده همراه باشید. ITPRO باشید

نویسنده : حسین احمدی
منبع : جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
برچسب ها
ردیف عنوان
1 دوره آموزشی .NET Framework و زبان برنامه نویسی سی شارپ - مقدمه
2 آموزش سی شارپ - قسمت اول :: معرفی و بررسی ابزارهای مورد نیاز دوره
3 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش اول)
4 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش دوم)
5 آموزش زبان سی شارپ - قسمت سوم :: آشنایی اولیه با محیط Visual Studio و نوشتن اولین برنامه
6 آموزش زبان سی شارپ - قسمت چهارم :: آشنایی با ساختار برنامه ها و کامپایلر زبان سی شارپ
7 آموزش زبان سی شارپ - قسمت پنجم :: آشنایی با دستورات کنسول و متغیرها
8 آموزش زبان سی شارپ - قسمت ششم :: نوع های داده اولیه
9 آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
10 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش اول)
11 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)
12 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش سوم)
13 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)
14 آموزش زبان سی شارپ - قسمت نهم :: آشنایی با آرایه ها و دستور foreach
15 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)
16 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش دوم)
17 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا
18 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت دوازدهم :: آشنایی با کلاس، اشیاء و فضاهای نام
19 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم :: آشنایی با فیلدها و رفتارها
20 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت چهاردهم :: آشنایی با Property ها
21 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت پانزدهم :: آشنایی با سازنده ها و روش های ایجاد اشیاء
22 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت شانزدهم :: وراثت یا Inheritance
23 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هفدهم :: آشنایی با مفهوم Polymorphism
24 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هجدهم:: کلاس های abstract و sealed
25 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت نوزدهم :: سازنده ها در وراثت، کلمه کلیدی protected و فیلدهای readonly
26 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیستم :: کلاس های static و partial و Extension Method ها
27 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و یکم :: Reference Types و Value Types
28 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و دوم :: آشنایی با کاربرد interface ها
29 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و سوم :: آشنایی با مفاهیم Inversion of Control و Dependency Injection
30 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و چهارم :: آشنایی با مفهوم Type Casting و انواع Cast ها
31 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و پنجم :: آشنایی با operator overloading و تعریف cast ها
32 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و ششم :: مفاهیم boxing و unboxing
33 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هفتم :: قابلیت Generics
34 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هشتم :: نکات تکمیلی Generic ها، کلاس List و کلاس Dictionary
35 آموزش زبان سی شارپ -قسمت بیست و نهم (پایانی): استثناء ها (Exceptions) و مدیریت خطاها در سی شارپ
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • اگر این کامنتی که برای این تایپیک میذارم حذف نشه باید بگم فوق العاده بود ، تو دانشگاه ++C می خوندیم آخرش نفهمیدم این شی گرا دقیقا" یعنی چی؟که شما کامل توضیح دادید.
  • چرا باید حذف شه؟در کامنت هایی که برای سوال ها ارسال میشه تشکر فقط از طریق گزینه پسندیدم هست چون ما نمیخواهیم با پست های غیر فنی کاربران دنبال جواب و راه حل سوال بگردند و قائدتاً پست های فنی جواب گوی کاربران است اما برای آموزش ها و مقالات اینچنینی که کاربر دنبال راه حل و جواب سوالش نیست و ضمناً بسیار واضح و خوب بیان شده تشکر خشک و خالی خوب نیست ، هر چند بار سایت رو بالا میبره و تشکر بیانگر خوبی مطلب هست ولی باید بگم مهندس احمدی با وجود درگیری های بسیار زیاد برای توسعه وبسایت باز هم ادامه این سریال سی شارپ رو دارن به خوبی پیش میبرند امیدوارم این روند همچون گذشته خوب و با قدرت جلو بره.
    به امید موفقیت.
  • سلام.ممنونم از مطالب مفیدتون.
  • با سلام
    چرا نمیشه فایل pdf این صفحه رو دانلود کرد ؟
    لطفا مدیران بررسی کنید.
    ارور 404 میده.
  • سلام و عرض ادب، مشکل دریافت فایل pdf حل شده، می تونید مقالات رو در قالب فایل pdf دریافت کنید.

برای ارسال نظر ابتدا به سایت وارد شوید