تخفیف نوروزی پی استور

کد تخفیف: PR1404

شامل تمامی آثار
روز
ساعت
دقیقه
ثانیه

با خرید اشتراک ویژه ، با هزینه بسیار کمتر به فایل های پاورپوینت دسترسی داشته باشید!

pdf آموزش شی گرایی در سی شارپ – لینک دانلود pdf آموزش شی گرایی

pdf آموزش شی گرایی در سی شارپ - لینک دانلود pdf آموزش شی گرایی
در این پست از مجموعه آموزش‌های پی استور، pdf آموزش شی گرایی در سی شارپ را مورد بحث قرار می‌دهیم. شی گرایی یکی از مباحث مهم در زبان برنامه نویسی #C است که کاربردهای زیادی در تولید و توسعه برنامه های تحت دات نت دارد. در ادامه پست pdf آموزش شی گرایی در سی شارپ به توضیح کلاس و اشیا، کپسوله سازی، کلاس‌های انتزاعی و وراثت خواهیم پرداخت. اگر به مبحث شی گرایی برای توسعه نرم افزار علاقه دارید و تازه کار هستید پیشنهاد می‌کنم این پست را مطالعه کنید و در انتها pdf که در انتهای مطلب گذاشته می‌شود، را دانلود کنید.

فهرست مطالب

مفهوم کلاس و اشیا در شی گرایی چیست؟

شی گرایی تکنیکی است که دنیای برنامه نویسی را به دنیای واقعی تشبیه می‌کند. کلاس و اشیا از مهم‌ترین مفاهیم در برنامه‌ نویسی شی گرا به شمار می‌رود. کلاس یک الگوی تعریف شده از طرف کاربر است که اشیا از آن ساخته می‌شود. در زبان برنامه نویسی #C کلاس‌ها از وراثت و polymorphism پشتیبانی می‌کنند. Object Oriented Programming عنصر اصلی در دات نت به شمار می‌رود. برنامه نویسی شی گرا بر اساس اشیا و کلاس است. یک کلاس برای اتصال داده‌ها و متد‌ها به صورت ترکیبی استفاده می‌شود.

pdf آموزش شی گرایی در سی شارپ

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

همه چیز در #C با کلاس‌ها و اشیا همراه با ویژگی‌ها و متدها همراه هست. برای اینکه بهتر متوجه این مفاهیم شوید به مثالی در دنیای واقعی مثل ماشین نگاه کنید. ماشین یک شی است دارای ویژگی‌هایی مانند رنگ، موتور، تایر و روش‌‌هایی مانند رانندگی و ترمز است. یک کلاس مانند یک طرح یا الگو برای ایجاد اشیا به شمار می‌رود. برای ایجاد یک کلاس، از کلمه کلیدی Class استفاده می‌شود. برای مثال یک کلاس به نام “car” با رنگ متغیر ایجاد می کنیم:

class Car 
{
  string color = "white";
}

برای ایجاد شی، از یک کلاس استفاده می‌کنیم. در مثال بالا یک کلاس ایجاد کردیم بنابراین می‌توانیم از آن برای ایجاد اشیا استفاده کنیم. برای ایجاد شی از Car، نام کلاس را مشخص کرده و از کلمه کلیدی New استفاده می‌کنیم. یک شی به نام MyObj ایجاد کنید و از آن برای چاپ مقدار رنگ استفاده کنید:

using System;

namespace MyApplication
{
  class Car
  {
    string color = "white";

    static void Main(string[] args)
    {
      Car myObj = new Car();
      Console.WriteLine(myObj.color);
    }
  }
}

سطح دسترسی یا Access Modifiers در سی شارپ

سطح دسترسی در زبان سی شارپ برای تعیین محدوده دسترسی اعضای یک کلاس استفاده می‌شود. در #C شش نوع Access Modifier وجود دارد که به توضیح چند مورد می‌پردازیم:

  • عمومی یا public: هیچ محدودیتی برای دسترسی به اعضای عمومی وجود ندارد.
  • خصوصی یا private: در این مورد دسترسی به کلاس محدود می‌شود.
  • محافظت شده یا producted: دسترسی محافظت شده محدود به تعریف کلاس و هر کلاسی که از کلاس ارث‌بری می‌کند.
  • داخلی یا Internal: فقط در فضای نامی خودش قابل دسترس است.

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

Private Modifier

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

class Car
 
{
  private string model = "Mustang";

  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

خروجی به این صورت خواهد بود:

Mustang

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

class Car
{
  private string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

خروجی نشان می‌دهد:

'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used

تعیین سطح دسترسی

Public Modifier

اگر فیلدی را با دسترسی عمومی اعلام کنید، برای همه کلاس‌ها قابل دسترسی خواهد بود. مثال زیر را در نظر بگیرید:

class Car
{
  public string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}
Mustang

اگر برنامه نویسی به طور پیش‌فرض سطح دسترسی را مشخص نکند همه اعضای یک کلاس خصوصی خواهند بود.

کپسوله سازی یا Encapsulation در سی شارپ

در ادامه پست pdf آموزش شی گرایی در سی شارپ به مبحث کپسوله سازی می‌رسیم. در زبان برنامه نویسی کپسوله سازی یا Encapsulation به ترکیب داده‌ها و روش‌هایی که روی آن داده‌ها کار می‌کنند و داده‌ها را در یک واحد قرار می‌دهد، می‌گویند. هدف از کپسوله سازی جلوگیری از تغییر داده‌ها است. این داده‌ها فقط توسط توابع دریافت کننده کلاس قابل دسترسی هستند. برنامه نویسان در بسیاری از زبان‌های برنامه نویسی از کپسوله سازی در قالب کلاس استفاده می‌کنند.

کپسوله سازی در شی گرایی

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

کپسوله سازی برای پنهان کردن اعضای داده و توابع داده یا روش های مرتبط با یک کلاس یا شی نمونه کاربرد دارد، به عبارتی برنامه نویس با استفاده از کپسوله سازی از دسترسی به جزییات پیاده سازی جلوگیری می‌کند. کپسوله سازی با استفاده از تعیین سطح دسترسی یا Access Modifer اجرا و پیاده سازی می‌شود. به مثال زیر توجه کنید، کلاسی ایجاد کرده‌ایم که داده‌ها را کپسوله می‌کند:

namespace AccessSpecifiers  
{  
    class Student  
    {  
        // Creating setter and getter for each property  
        public string ID { get; set; }  
        public string Name { get; set; }  
        public string Email { get; set; }  
    }  
}  
using System;  
namespace AccessSpecifiers  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Student student = new Student();  
            // Setting values to the properties  
            student.ID = "101";  
            student.Name = "Mohan Ram";  
            student.Email = "mohan@example.com";  
            // getting values  
            Console.WriteLine("ID = "+student.ID);  
            Console.WriteLine("Name = "+student.Name);  
            Console.WriteLine("Email = "+student.Email);  
        }  
    }  
}

بعد از اجرا خروجی برنامه این‌گونه خواهد بود:

ID = 101
Name = Mohan Ram
Email = mohan@example.com

وراثت یا Inheritance در سی شارپ

در زبان برنامه نوسی #C وراثت به فرایندی گفته می‌شود که در آن یک شی تمام رفتارهای خود را به طور خودکار از شیء والد به دست می‌آورد. بنابراین می‌توان با استفاده از Inheritance از ویژگی‌هایی که در یک کلاس دیگر تعریف شده است دوبار استفاده کنید یا آن را گسترش دهید. در #C به کلاسی که  اعضای یک کلاس دیگر را به ارث می‌یرد کلاس مشتق شده می‌گویند.

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

using System;  
   public class Employee  
    {  
       public float salary = 40000;  
   }  
   public class Programmer: Employee  
   {  
       public float bonus = 10000;  
   }  
   class TestInheritance{  
       public static void Main(string[] args)  
        {  
            Programmer p1 = new Programmer();  
  
            Console.WriteLine("Salary: " + p1.salary);  
            Console.WriteLine("Bonus: " + p1.bonus);  
  
        }  
    }

خروجی به شکل زیر خواهد بود:

Salary: 40000
Bonus: 10000

در مثال بالا، به Employee کلاس پایه می‌گویند و به Programmer یک کلاس مشتق گفته می‌شود.

وراثت در سی شارپ

متد ارث بری یا Inheriting Methods در سی شارپ

در زیر مثالی از وراثت در زبان سی شارپ می‌زنیم که متد‌ها را فقط به ارث می‌برد:

using System;  
   public class Animal  
    {  
       public void eat() { Console.WriteLine("Eating..."); }  
   }  
   public class Dog: Animal  
   {  
       public void bark() { Console.WriteLine("Barking..."); }  
   }  
   class TestInheritance2{  
       public static void Main(string[] args)  
        {  
            Dog d1 = new Dog();  
            d1.eat();  
            d1.bark();  
        }  
    }

خروجی به شکل زیر خواهد بود:

Eating...
Barking...

وراثت چند سطحی

در زبان سی شارپ  هنگامی که یک کلاس، کلاس دیگری را به ارث می‌برد که توسط کلاس دیگر به ارث می‌رسد، به عنوان وراثت چند سطحی شناخته می‌شود. به مثال زیر که از وراثت چند سطحی در زبان #C است نگاه کنید:

using System;  
   public class Animal  
    {  
       public void eat() { Console.WriteLine("Eating..."); }  
   }  
   public class Dog: Animal  
   {  
       public void bark() { Console.WriteLine("Barking..."); }  
   }  
   public class BabyDog : Dog  
   {  
       public void weep() { Console.WriteLine("Weeping..."); }  
   }  
   class TestInheritance2{  
       public static void Main(string[] args)  
        {  
            BabyDog d1 = new BabyDog();  
            d1.eat();  
            d1.bark();  
            d1.weep();  
        }  
    }

خروجی به شکل زیر خواهد بود:

Eating...
Barking...
Weeping...

کلاس‌های انتزاعی یا Abstract Classes در سی شارپ

abstract در کلاس‌های انتزاعی به عنوان کلمه کلیدی در تعریف کلاس به کار می‌رود. کلاس‌های انتزاعی برای پنهان کردن جزییات استفاده می‌شود و فقط نمایش عملکرد را نشان می‌دهد. Abstract از دو راه به دست می‌آید:

  1. کلاس‌های انتزاعی Abstract Classes
  2. رابط Interface

آموزش شی گرایی در سی شارپ

در کلاس‌های انتزاعی و رابط، متدهای انتزاعی از ضروریات می‌باشد. برای ایجاد کردن یک شی نمی‌توان از کلاس انتزاعی استفاده کرد. کلاس‌های انتزاعی بیشتر در فریم‌ورک‌ها کاربرد دارند. در دانت نت (NET.) تعداد زیادی کلاس انتزاعی وجود دارد.

در زبان برنامه نویسی #C، می‌توان از روش های انتزاعی و غیرانتزاعی استفاده کرد. پیاده سازی کلاس‌های انتزاعی توسط کلاس‌های مشتق شده ایجاد می‌شود. زبان برنامه نویسی سی شارپ یکی از کاربردی‌ترین زبان‌های برنامه نویسی است که می‌توانید با مطالعه آن اطلاعات خود را در مورد این زبان افزایش دهید.

در زیر مثالی از کلاس انتزاعی در سی شارپ ارائه می‌‎‌دهیم که دارای یک متد انتزاعی ()draw است. اجرای آن توسط کلاس های مشتق شده ارائه می شود: Rectangle و Circle هر دو کلاس در نوع پیاده سازی تفاوت دارند:

using System;  
public abstract class Shape  
{  
    public abstract void draw();  
}  
public class Rectangle : Shape  
{  
    public override void draw()  
    {  
        Console.WriteLine("drawing rectangle...");  
    }  
}  
public class Circle : Shape  
{  
    public override void draw()  
    {  
        Console.WriteLine("drawing circle...");  
    }  
}  
public class TestAbstract  
{  
    public static void Main()  
    {  
        Shape s;  
        s = new Rectangle();  
        s.draw();  
        s = new Circle();  
        s.draw();  
    }  
}

خروجی برنامه به شکل زیر خواهد بود:

drawing ractangle...
drawing circle...

متد انتزاعی Abstract Method

متد بدنه ندارد. برای ایجاد متد انتزاعی از کلمه کلیدی Abstract استفاده می‌کنیم. به مثال زیر توجه کنید:

public abstract void display();

در اینجا ()display یک متد انتزاعی است. یک متد انتزاعی فقط در داخل یک کلاس انتزاعی می‌تواند وجود داشته باشد. وقتی یک کلاس غیر انتزاعی از یک کلاس انتزاعی ارث بری می‌کند، باید به روش‌های انتزاعی پیاده‌سازی کند.

مثال برای اجرای روش‌های انتزاعی:

using System;
namespace AbstractClass {

  abstract class Animal {

    // abstract method
    public abstract void makeSound();
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override void makeSound() {

      Console.WriteLine("Bark Bark");

    }
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();
      obj.makeSound();    

      Console.ReadLine(); 
    }
  }
}
Output

در مثال بالا یک کلاس انتزاعی ایجاد کردیم به نام Animal و یک متد انتزاعی ()makesound در داخل کلاس وجود دارد. خروجی به شکل زیر خواهد بود:

Bark Bark

واسط یا Interface در سی شارپ

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

مثالی از Interface در سی شارپ می زنیم تا بهتر متوجه شوید، در مثال زیر متد ()draw وجود دارد که توسط دو کلاس Recatangle و Circle ارائه می‌شود.

using System;  
public interface Drawable  
{  
    void draw();  
}  
public class Rectangle : Drawable  
{  
    public void draw()  
    {  
        Console.WriteLine("drawing rectangle...");  
    }  
}  
public class Circle : Drawable  
{  
    public void draw()  
    {  
        Console.WriteLine("drawing circle...");  
    }  
}  
public class TestInterface  
{  
    public static void Main()  
    {  
        Drawable d;  
        d = new Rectangle();  
        d.draw();  
        d = new Circle();  
        d.draw();  
    }  
}

خروجی برنامه به این شکل خواهد بود:

drawing ractangle...
drawing circle...

متدهای Interface به صورت پیش فرض عمومی و انتزاعی هستند.

پلی مورفیسم در سی شارپ

چند ریختی یا Polymorphism در سی شارپ

این اصطلاح از دو کلمه “morphs” و “poly” تشکیل شده است که به معنی شکل‌ها یا اشکال است. از کلمه یونانی گرفته شده است. در برنامه نویسی شی گرا از سه مفهوم مهم و اصلی وراثت، کپسوله سازی و چند شکلی استفاده می‌کنند. دونوع Polymorphism وجود دارد: Compile Time Polymorphism یا کامپایل زمان چند ریختی و  Runtime Polymorphism Compile Time یا کامپایل زمان اجرا که در زبان برنامه نویسی سی شارپ به دست می‌آید که به عنوان اتصال اولیه شناخته می‌شود. Polymorphism زمان اجرا، با استفاده از متد نادیده گرفته می‌شود که اتصال دینامیکی می‌گویند. در زیر از Polymorphism زمان اجرا، مثالی می‌زنیم:

using System;  
public class Animal{  
    public virtual void eat(){  
        Console.WriteLine("eating...");  
    }  
}  
public class Dog: Animal  
{  
    public override void eat()  
    {  
        Console.WriteLine("eating bread...");  
    }  
      
}  
public class TestPolymorphism  
{  
    public static void Main()  
    {  
        Animal a= new Dog();  
        a.eat();  
    }  
}

خروجی به شکل زیر خواهد بود:

eating bread...

به مثال دیگری توجه کنید که در آن دو کلاس مشتق شده وجود دارد:

using System;  
public class Shape{  
    public virtual void draw(){  
        Console.WriteLine("drawing...");  
    }  
}  
public class Rectangle: Shape  
{  
    public override void draw()  
    {  
        Console.WriteLine("drawing rectangle...");  
    }  
      
}  
public class Circle : Shape  
{  
    public override void draw()  
    {  
        Console.WriteLine("drawing circle...");  
    }  
  
}  
public class TestPolymorphism  
{  
    public static void Main()  
    {  
        Shape s;  
        s = new Shape();  
        s.draw();  
        s = new Rectangle();  
        s.draw();  
        s = new Circle();  
        s.draw();  
  
    }  
}

خروجی برنامه به این شکل خواهد بود:

drawing...
drawing rectangle...
drawing circle...

Runtime Polymorphism توسط اعضای داده در سی شارپ قابل دستیابی نیست. در مثال زیر به فیلد توسط متغیر دسترسی وجود دارد که در آن به نمونه کلاس مشتق شده اشاره می‌کند:

using System;  
public class Animal{  
    public string color = "white";  
  
}  
public class Dog: Animal  
{  
    public string color = "black";  
}  
public class TestSealed  
{  
    public static void Main()  
    {  
        Animal d = new Dog();  
        Console.WriteLine(d.color);  
    
    }  
}
white

pdf آموزش شی گرایی در سی شارپ

سخن آخر در مورد pdf آموزش شی گرایی در سی شارپ

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

برای درک بهتر و اصولی‌تر زبان برنامه نویسی #C توصیه میکنم مقاله آموزش برنامه نویسی سی شارپ از مبتدی تا پیشرفته را مطالعه کنید. زبان #C از قدرتمندترین زبان‌های برنامه نویسی است که با یادگیری و کسب مهارت و پیاده سازی آن می‌توانید بازار کار خوبی داشته باشید. با نظرات و پیشنهادات خود ما را در ادامه راه آموزش برنامه نویسی همراهی کنید. موفق و پیروز باشید.

4 پاسخ

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

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