دانلود نرم افزار - آموزش سی شارپ
دانلود نرم افزار - آموزش سی شارپ

دانلود نرم افزار - آموزش سی شارپ

کلاس ساده در سی شارپ

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

فرض کنید می‌خواهیم یه کلاس به اسم Student بسازیم. کدش اینجوریه:

public class Student

{

    private string Name { get; set; }

}

    public Student(string name)

    {

        Name = name;

    }

     public string Introduce()

    {

        return $"سلام، من {Name} هستم.";

    }

}

هر چیزی که به کلاس مربوط میشه، باید بین دو آکولاد {}  نوشته بشه. حالا بیایم خط به خط این کد رو توضیح بدیم:

تعریف کلاس:

public class Student

اینجا داریم می‌گیم که می‌خواهیم یه کلاس به اسم Student  بسازیم. کلمه public  یعنی این کلاس از جاهای دیگه توی برنامه قابل دسترسه. کلاس مثل یه نقشه یا قالب می‌مونه که ما ازش برای ساختن چیزهای مشخص (مثل یه دانشجو با اسم خاص) استفاده می‌کنیم.

متغیر خصوصی:

private string Name { get; set; }

توی این خط، یه متغیر به اسم Name  تعریف کردیم که از نوع رشته (string) هست. کلمه private  یعنی این متغیر فقط داخل همین کلاس قابل دسترسی است .. { get; set; } هم به ما اجازه می‌ده که از داخل کلاس، مقدار این متغیر رو بخونیم یا تغییر بدیم.

سازنده کلاس:

public Student(string name)

{

    Name = name;

}

این قسمت که بهش سازنده میگن موقع نمونه سازی از کلاس ، صدا زده میشه تا همه چیز رو فراهم کنه یکی از کارهایی که این سازنده انجام میده اینه که  متغیر Name  رو با اسمی که ما می‌دیم پر می‌کنه. مثلاً اگه بنویسیم.

Student s = new Student("رضا");

متغیر Name میشه رضا " .

تابع Introduce (معرفی) :

public string Introduce()

{

    return $"سلام، من {Name} هستم.";

}

این یه تابع عمومیه که ما پس از نمونه سازی از کلاس می تونیم با کمک نام کلاس نمونه به این متد دسترسی داشته باشیم و اون رو اصطلاحا صداش کنیم. وقتی این تابع اجرا بشه ، یه جمله مثل "سلام، من رضا هستم" به ما برمی‌گردونه. .

چرا متغیر Name رو خصوصی کردیم؟

اگه Name رو بجای private با public تعریف می کردیم ، هر کسی از بیرون کلاس می تونست مستقیم بیاد و مقدارش رو عوض کنه ، مثلا بنویسه

Student.Name = "Reza"

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

مثلاً اگه بخوایم یه قانون بذاریم که اسم حتماً چه خصوصیاتی داشته باشه می تونیم با شرط قرار دادن آن اسم ها را کنترل کنیم.

فرض کنید می‌خواهیم توی برنامه‌مون از این کلاس استفاده کنیم. می‌تونیم اینجوری بنویسیم:

Student student1 = new Student("رضا");

Console.WriteLine(student1.Introduce());

خروجی این کد میشه: سلام، من رضا هستم.

چرا این کار مهمه؟

کلاس مثل یه جعبه‌ست که هم اطلاعات (مثل اسم دانشجو) رو نگه می‌داره و هم کارهایی که می‌تونیم باهاش انجام بدیم (مثل معرفی کردن). با خصوصی کردن متغیرها و استفاده از تابع‌ها، ما مطمئن می‌شیم که همه چیز توی برنامه‌مون منظم و قابل کنترله. این روش باعث می‌شه برنامه‌هامون وقتی بزرگ‌تر می‌شن، راحت‌تر مدیریت بشن و کمتر خطا داشته باشن.

به همین سادگی! حالا یه کلاس ساده ساختیم و می‌تونیم ازش برای چیزهای پیچیده‌تر استفاده کنید.

محتویات یک کلاس در سی شارپ

محتویات یک کلاس در سی شارپ :

یک کلاس می تواند دارای هر کدام از 14 مورد زیر باشد که بعضی ضروری و برخی اختیاری یک کلاس می باشند .

1 . Constructors                                  سازنده ها

2 . Constants                                      ثابت ها

3 . Fields                                            فیلدها  ( متغیرها )

4 . Finalizers ( Destructors )       نهایی کننده ها یا ( مخرب ها )

5 . Methods                                       روش ها

6 . Properties                                     ویژگی ها

7 . Indexers                                        ایندکسرها

8 . Operators                                     عملگرها

9 . Events                                           رویدادها

10 . Delegates                                    نمایندگان

11 . Classes                                        کلاس ها

12 . Interfaces                                   رابط ها

13 . Structs                                        ساختارها

14 . Enumerations                       نوع شمارشی

کلاس استاتیک static class

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

using System;

namespace StaticClassTest {   

static class MathFunction

{   //معکوس عدد را برمی گرداند

static public double reciprocal(double num) {    return 1 / num;    }

//قسمت اعشاری عدد را برمی گرداند

static public double fracPart(double num) {    return num - (int)num;  }

//اعداد زوج را برمی گرداند

static public bool isEven(double num) {   return (num % 2) == 0 ? true : false; }

//اعداد فرد را برمی گرداند

static public bool isOdd(double num) {    return !isEven(num);  } }

class MainClass {  

public static void Main()

Console.WriteLine("Reciprocal of 5 is " + MathFunction.reciprocal(5.0));    

Console.WriteLine("Fractional part of 4.234 is " + MathFunction.fracPart(4.234));      

if (MathFunction.isEven(10))         Console.WriteLine("10 is even.");     

if (MathFunction.isOdd(5))           Console.WriteLine("5 is odd.");     

Console.ReadLine();  } } }

کلاس - Class

کلاس: Class

کلاس در برنامه‌نویسی شیءگرا یک ساختار یا الگو (Template) است که ویژگی‌ها (داده‌ها) و رفتارها (عملیات یا متدها) یک موجودیت را تعریف می‌کند. از کلاس می‌توان برای ایجاد نمونه‌های قابل استفاده (اشیاء) استفاده کرد یا به‌صورت استاتیک برای سازمان‌دهی کدها و ارائه قابلیت‌های مستقل از نمونه‌سازی به کار برد. کلاس همچنین امکاناتی مثل وراثت (Inheritance)، کپسوله‌سازی (Encapsulation) و چندریختی (Polymorphism) را فراهم می‌کند تا کد سازمان‌یافته‌تر، قابل‌استفاده مجدد و انعطاف‌پذیرتر شود.

یک کلاس دارای اعضایی است که به دو دسته کلی تقسیم می‌شوند:

داده‌ها: شامل فیلدها (Fields) و خصوصیات (Properties) هستند که اطلاعات مربوط به شیء را نگه می‌دارند.

عملکردها: شامل متدها (Methods) و رویدادها (Events) هستند که رفتارها یا عملیات شیء را تعریف می‌کنند.

به‌صورت نمادین:

کلاس = {داده‌ها (فیلدها و خصوصیات) + عملکردها (متدها و رویدادها)}

یک کلاس با استفاده از کلیدواژه class، به دنبال آن یک نام برای کلاس و سپس دو کروشه {} تعریف می‌شود. در مثال زیر، کلاسی به نام MyClass تعریف شده که هنوز هیچ عضوی ندارد و در نتیجه فعلاً کاری انجام نمی‌دهد:

class MyClass

{

}

کانستراکتور (Constructor)

هر کلاس می‌تواند یک یا چند سازنده (Constructor) داشته باشد. سازنده متدی خاص است که هنگام ایجاد نمونه‌ای از کلاس به‌صورت خودکار اجرا می‌شود و معمولاً برای مقداردهی اولیه به داده‌های شیء استفاده می‌شود. اگر شما هیچ سازنده‌ای به‌صورت صریح تعریف نکنید، کامپایلر C# به‌طور خودکار یک سازنده پیش‌فرض (Default Constructor) بدون پارامتر ایجاد می‌کند که هیچ عملی جز ساخت شیء انجام نمی‌دهد.

سازنده با تعیین سطح دسترسی (مثلاً public)، نامی دقیقاً مشابه نام کلاس و علامت () تعریف می‌شود و می‌تواند با پارامتر یا بدون پارامتر باشد. در مثال زیر، سازنده کلاس MyClass بدون پارامتر است:

class MyClass

{

    public MyClass()

    {

        // اینجا می‌توانید کد مقداردهی اولیه بنویسید

    }

}

توجه: برخلاف برخی تصورات، سازنده را نمی‌توان پس از ساخت شیء به‌صورت دستی فراخوانی کرد. سازنده فقط هنگام نمونه‌سازی (با کلیدواژه new) اجرا می‌شود. اگر نیاز به اجرای کد خاصی بعد از ساخت شیء دارید، باید از متدهای معمولی استفاده کنید.

دسترسی به اعضای کلاس

برای دسترسی به اعضای یک کلاس (چه داده‌ها و چه عملکردها)، معمولاً باید ابتدا یک نمونه (Object) از آن کلاس بسازید و سپس از طریق آن نمونه به اعضایش دسترسی پیدا کنید. البته اعضای استاتیک (Static) نیازی به نمونه‌سازی ندارند و مستقیماً از طریق نام کلاس قابل دسترسی‌اند.

در مثال زیر، کلاسی به نام MyClass تعریف شده که شامل یک فیلد غیراستاتیک (nonStaticVariable)، یک فیلد استاتیک (staticVariable) و دو متد است:

using System;

namespace ClassTest

{

    class Program

    {

        class MyClass

        {

            int nonStaticVariable;    // متغیر غیراستاتیک (هر شیء مقدار خودش را دارد)

            static int staticVariable; // متغیر استاتیک (مشترک بین همه اشیاء)

 

            public void SetVars(int v1, int v2)

            {

                nonStaticVariable = v1;

                staticVariable = v2;

            }

 

            public void Display()

            {

                Console.WriteLine("nonStaticVariable = {0}  staticVariable = {1}", nonStaticVariable, staticVariable);

                Console.ReadKey();

            }

        }

         static void Main()

        {

            MyClass d1 = new MyClass(); // ساخت نمونه اول

            MyClass d2 = new MyClass(); // ساخت نمونه دوم

 

            d1.SetVars(2, 4);

            d1.Display(); // نمایش مقادیر d1

 

            d2.SetVars(15, 17);

            d2.Display(); // نمایش مقادیر d2

        }

    }

}

توضیح مثال:

دو نمونه (d1 و d2) از کلاس MyClass ساخته شده‌اند.

متد SetVars برای هر نمونه مقادیر متفاوتی ست کرده است.

چون nonStaticVariable غیراستاتیک است، هر نمونه مقدار خودش را نگه می‌دارد.

اما staticVariable استاتیک است و بین همه نمونه‌ها مشترک است، بنابراین آخرین مقدار تنظیم‌شده (17) برای هر دو نمونه نمایش داده می‌شود.

خروجی برنامه:

nonStaticVariable = 2                                         staticVariable = 4

nonStaticVariable = 15                                      staticVariable = 17