آموزش حوضه های CG

آموزش گرافیک، برنامه نویسی و حوضه های CG

آموزش گرافیک، برنامه نویسی و حوضه های CG

آموزش ها مرتبط با حوضه CG هستند

پربیننده ترین مطالب
پیوندهای روزانه

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

همانطور که در قسمت مقدمه گفتیم، Polymorphism به معنای قابلیت تعریف مجدد رفتار یک موجودیت در کلاس های فرزند می باشد. Polymorphism در زبان سی شارپ به سه روش قابل پیاده سازی است:

  1. استفاده از متد های virtual و override کردن آنها در کلاس های فرزند
  2. استفاده از رفتارهای abstract در کلاس والد
  3. استفاده از قابلیت interface ها

در این قسمت، حالت اول را بررسی می کنیم و حالت دوم و سوم، یعنی استفاده از متدهای abstract و interface ها را در بخش های بعدی توضیح خواهیم داد.

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


تعریف وراثت یا Inheritance و پیاده سازی آن در زبان C#


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

زمانی که کلاس A به عنوان والد کلاس B معرفی می شود، یعنی کلاس B فرزند کلاس A می باشد، می گوییم کلاس B از کلاس A مشتق شده است. در طول این دوره از واژه مشتق شده به تکرار استفاده خواهیم کرد.

در ابتدا با شیوه کلی استفاده از وراثت در کلاس ها آشنا می شویم. فرض کنید کلاسی داریم با نام A:

در قسمت قبلی آموزش در مورد خصوصیات یا Property ها و نحوه صحیح استفاده از آنها در کلاس ها صحبت کردیم. در این بخش در مورد سازنده ها یا Constructors، مقدار دهی اولیه اشیاء (Object Initialization) و نوع های بدون نام (Anonymous Types) صحبت می کنیم.

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

  1. مقدار دهی اولیه شئ یا Object Initialization
  2. استفاده از سازنده ها یا Constructors

در قسمت قبلی آموزش، در مورد فیلدها و نحوه تعریف آنها در کلاس آشنا شدیم، اما گاهی اوقات نیاز داریم که بر روند مقداردهی و گرفتن مقدار یک فیلد نظارت داشته باشیم. زمانی که یک فیلد تعریف می کنیم، عملیات انتساب مقدار و گرفتن مقدار به صورت مستقیم از داخل فیلد انجام شده و امکان انجام هیچ گونه نظارتی بر روی این عملیات ها وجود ندارد. برای رفع این مشکل، دو راه وجود دارد:

  1. استفاده از متدها برای ست کردن و گرفتن مقدار از فیلد.
  2. استفاده از Property ها

افرادی که با زبان جاوا آشنا هستند با متدهای get و set در کلاس ها آشنایی دارند. این متدها عملیات خواندن و نوشتن در فیلدها را برای ما انجام می دهند. مثالی از زبان سی شارپ می زنیم. کلاس Person را در نظر بگیرید:

public class Person
{
    public string FirstName;
    public string LastName;
}

در قسمت قبلی آموزش زبان سی شارپ با مفاهیمی مانند کلاس، شئ، فضای نام و دستور using آشنا شدیم. در این قسمت ابتدا شیوه تعریف کلاس و شئ را مروری کوتاه کرده و سپس به بررسی شیوه تعریف فیلد و رفتار در کلاس خواهیم پرداخت.

با کلاس Person شروع می کنیم که در قسمت قبل کلاسی با نام Person ایجاد کردیم. شیوه تعریف این کلاس به صورت زیر بود:

public class Person
{
}

بعد از ایجاد کلاس باید از روی آن یک شئ یا اصطلاحاً Instance یا نمونه بسازیم:

Person person = new Person();

دقت کنید، می توانیم از کلمه کلیدی var که در قسمت های ابتدایی این آموزش با آن آشنا شدیم استفاده کنیم:

var person = new Person();

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

همانطور که در قسمت قبل گفتیم، زمانی که قصد نوشتن برنامه ای به صورت شئ گرا را داریم، باید موجودیت های مورد استفاده را در برنامه مدل سازی کنیم. این موجودیت ها همان اشیاء هستند که در سیستم مورد استفاده قرار میگیرند. اما شیوه مدل سازی و استفاده از اشیاء چگونه خواهد بود؟ در اینجا باید با دو مفهوم آشنا شویم: 1. کلاس ها و 2. اشیاء.

  1. کلاس: نمونه ای از یک شئ که داخل برنامه طراحی می شود را کلاس می گویند. برای اینکه با مفهوم کلاس بیشتر آشنا شوید یک مثال از دنیای واقعی می زنیم. فرض کنید تصمیم به ساخت یک خانه دارید. اولین چیزی که به آن نیاز خواهید داشت نقشه خانه ایست که تصمیم دارید بسازید. نقشه یک طرح اولیه و مفهومی از ساختمان به شما می دهد و بعد از روی نقشه اقدام به ساخت خانه می کنید. نقشه شامل تمامی بخش های خانه است، اطاق پذیرایی، آشپزخانه، حمام، سرویس بهداشتی و سایر بخش ها. اما فقط یک نقشه در اختیار دارید. نمی توانید از اطاق پذیرایی داخل نقشه استفاده کنید. کلاس دقیقاً معادل نقشه ای است که شما برای ساختمان خود کشیده اید. کلاس یک نمونه اولیه از موجودیت ایست که باید اشیاء از روی آن ساخته شوند.
  2. شئ: باز هم به سراغ مثال قبلی می رویم. بعد از کشیدن نقشه ساختمان شما باید اقدام به ساخت خانه کنید. بعد از اتمام عملیات ساخت، خانه شما قابل سکونت بوده و شما می توانید از آن استفاده کنید. همچنین از روی یک نقشه ساختمانی می توان چندین ساختمان ساخت. شئ دقیقاً معادل همان مفهوم ساختمانی است که از روی نقشه ساخته شده است. شما بعد از اینکه کلاس را تعریف کردید، باید از روی کلاس شئ بسازید تا بتوانید از آن استفاده کنید. در حقیقت کلاس به صورت مستقیم قابل استفاده نیست، مگر اینکه شامل اعضای static باشد که در بخش های بعدی با آنها آشنا خواهیم شد. همچنین می توان از روی یک کلاس، یک یا چندین شئ تعریف کرد.

حال که با مفاهیم اولیه کلاس و شئ آشنا شدید، بهتر است با نحوه تعریف کلاس و ساخت شئ آشنا شویم. تعریف کلاس بوسیله کلمه کلیدی class در زبان C# انجام می شود. ساختار کلی این دستور به صورت زیر است:

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

در قسمت قبلی سری آموزش سی شارپ در مورد نحوه تعریف و استفاده از متدها صحبت کردیم. در ادامه مبحث متدها را ادامه داده و با برخی از ویژگی های مربوط به متدها آشنا خواهیم شد. مواردی که در این قسمت مورد بررسی قرار خواهند گرفت عبارتند از:

  1. آشنایی با کلمات کلیدی ref و out
  2. استفاده از آرایه به عنوان ورودی و خروجی متد
  3. آشنایی با کلمه کلیدی params
  4. قابلیت method overloading و کاربرد آن
  5. نوشتن توابع بازگشتی

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

  1. شیوه تعریف متدها
  2. پارامترها و مقادیر بازگشتی
  3. آشنایی با عبارات ref و out
  4. آشنایی با مفهوم method overloading
  5. نوشتن توابع بازگشتی (Recursive Functions)

در بخش قبلی آموزش زبان سی شارپ با دستورات کنترلی و حلقه ها آشنا شدیم. در این بخش قصد داریم با مبحث آرایه ها و دستور foreach آشنا شویم. همانطور که در قسمت آشنایی با متغیرها گفتیم، یک متغیر خانه ای از حافظه است که می توان مقداری را در داخل آن ذخیره کرد. برای مثال دستور زیر متغیری از نوع string و با نام name تعریف کرده و مقدار neetbook را داخل آن قرار می دهد:


string name = "neetbook";

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

{type}[] numbers = new {type}[{length}];