در حال بارگذاری...

اشیاء

کلاسی به نام Chip بنویسید با متد beep که ok می‌نویسد. روی این صفحه متد static نیست. در Pine، Main را نگه دارید و با Chip c = new Chip(); یک chip بسازید، بعد صدا بزنید c.beep();. هر دو نوع را در همان فایل آموزشی نگه دارید تا dotnet run ساده بماند. با dotnet run اجرا کنید. صفحه باید یک خط نشان دهد: ok. کلمهٔ new از کلاس یک شیء می‌سازد. متغیر c همان شیء را نگه می‌دارد. beep را روی c صدا می‌زنید، نه روی نام خالی کلاس. همین شیء ساخته‌شده — و صدایی که از آن استفاده می‌کند — کار این صفحه است. نام کلاس عمومی شروع‌کننده را Pine نگه دارید.

یک شیء از کلاس

کلاس هنوز همان نوع نام‌دار است. شیء یک مقدار ساخته‌شده از آن نوع است. خط new Chip() از C# می‌خواهد آن مقدار را بسازد. آن را در متغیری از نوع Chip ذخیره می‌کنید، بعد با همان متغیر به متدهایی می‌رسید که مال هر شیء است.
فایل Pine را باز کنید. نام کلاس شروع‌کننده Pine می‌ماند. این صفحه شروع‌کننده را عوض نام نمی‌کند. اگر هنوز باقی‌ماندهٔ Badge.show(); همهٔ چیزی است که در Main دارید، پاکش کنید. هر باقی‌ماندهٔ بازگشت down را پاک کنید. هر خط ReadLine را هم پاک کنید. فایلی که نگه می‌دارید منتظر تایپ نیست.
بیرون از آکولادهای Pine — هنوز در همان فایل — بنویسید public class Chip. داخل Chip بنویسید void beep() — روی این سرآیند کلمهٔ static نباشد. بدنه یک خط نوشتن است: Console.WriteLine("ok");. void را نگه دارید. متد عددی برنمی‌گرداند. در این صفحه داخل Chip هیچ Main نیست. پیش از اجرا فایل را ذخیره کنید.
برنامهٔ جعبه‌ای اول فقط Chip را نشان می‌دهد تا نوع را تمیز بخوانید. برنامه‌های جعبه‌ای بعدی شکل‌های نگه‌داشتنی با Pine هستند که یک chip، بعد دو تا می‌سازند.

Chip with beep

csharp
using System;

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

Pine تراشه را می‌سازد، بعد beep را صدا می‌زند

Pine مقدار public static void Main() را نگه می‌دارد. داخل Main دو خط بنویسید: اول Chip c = new Chip();، بعد c.beep();. خط اول متغیر c از نوع Chip را اعلام می‌کند و با یک شیء تازه پر می‌کند. خط دوم beep را روی همان شیء صدا می‌زند. نقطه بعد از نام متغیر می‌آید، نه بعد از نام کلاس به‌تنهایی. در این صفحه Badge.show(); نمی‌نویسید. آن فراخوانی static درس کلاس‌ها بود.

Pine builds one chip

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Chip c = new Chip();
        c.beep();
    }
}

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

فایل نگه‌داشتنی را از بالا بخوانید. using System; نام‌های کوتاه را آماده می‌کند. public class Pine شروع‌کننده است. public static void Main() جایی است که زمان‌اجرا شروع می‌کند. عبارت new Chip() یک شیء می‌سازد. آن شیء در c ذخیره می‌شود. صدای c.beep() وارد beep برای همان شیء می‌شود. متد ok می‌نویسد و برمی‌گردد. بعد Pine تمام می‌شود. واژهٔ روی صفحه از متد شیء آمد، بعد از اینکه new شیء را ساخت.
با dotnet run اجرا کنید. برنامه یک خط می‌نویسد و می‌ایستد. منتظر تایپ شما نمی‌ماند. اگر dotnet run منتظر ماند، هنوز ReadLine در فایل است. آن خط را پاک کنید و در Pine همان Chip c = new Chip(); به‌همراه c.beep(); را نگه دارید، با beep در Chip. صفحه ok نشان می‌دهد. اگر صفحه ready نشان داد، هنوز صدای باقی‌ماندهٔ Badge.show(); اجرا می‌شود. اگر حروف Chip روی صفحه آمد، خط نوشتن نقل‌قول دارد: Console.WriteLine("Chip");. برای صفحهٔ اشتباه SDK را دوباره نصب نمی‌کنید.
اجرا را یک‌بار دیگر به ترتیب ببینید. C# از Pine.Main شروع می‌کند. دستور اول با new Chip() یک شیء می‌سازد و در c می‌گذارد. دستور دوم c.beep() را صدا می‌زند. داخل beep، WriteLine مقدار ok را می‌نویسد. بعد beep تمام می‌شود و در Main چیزی نمانده، پس برنامه تمام می‌شود. در این صفحه Console.WriteLine("ok"); را داخل Pine نگذاشتید. زیر Chip گذاشتید و از راه متغیر شیء خواستیدش.
کلاس را مثل نقشهٔ روی دیسک ببینید و شیء را مثل یک قطعهٔ ساخته‌شده در حافظه برای این اجرا. هر new Chip() قطعهٔ دیگری می‌سازد. متغیر آن قطعه را نام می‌گذارد تا خطوط بعدی به آن برسند. بدون آن نام، قطعهٔ ساخته‌شده برای beep روی این صفحه دستگیره‌ای ندارد.

چرا فراخوانی از c است، نه از Chip به‌تنهایی

در صفحهٔ کلاس‌ها می‌شد متد static را با Badge.show() و نام نوع صدا زد. اینجا beep کلمهٔ static ندارد. C# اول یک شیء می‌خواهد. نوشتن Chip.beep(); بدون شیء با شکل مبتدی این صفحه جور نیست. با new بسازید، نتیجه را در متغیر نگه دارید، بعد از راه همان متغیر صدا بزنید.
اگر فقط new Chip(); بنویسید و ذخیره نکنید، هنوز شیء ساخته‌اید، ولی نامی برای صدا زدن beep نمانده. در این صفحه متغیر را نگه دارید: Chip c = new Chip(); بعد c.beep();. متغیر راه رسیدن به شیء بعد از تمام شدن new است.
یک دموی static باقی‌مانده می‌تواند Main را گیج کند. فایلی که هنوز Badge.show(); صدا می‌زند شکل درس قبل است. برای این صفحه Chip و Pine و خط new را نگه دارید. اینجا به Badge نیاز ندارید.

دو شیء، دو beep

از همان کلاس می‌توانید بیش از یک شیء بسازید. هر new Chip() شیء جدا می‌سازد. هر شیء می‌تواند beep خودش را اجرا کند. متن کلاس مشترک است؛ شیءها همان یک مقدار نیستند.

Pine builds two chips

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Chip a = new Chip();
        Chip b = new Chip();
        a.beep();
        b.beep();
    }
}

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

دوباره با dotnet run اجرا کنید. صفحه باید دو خط نشان دهد: ok، بعد ok. خط اول از a آمد. خط دوم از b. هر دو از همان متن متد beep در Chip استفاده کردند، ولی هر فراخوانی روی شیء متفاوتی بود که با new ساخته شد.
اگر صفحه فقط یک ok نشان داد، ببینید هر دو فراخوانی هست و هر دو متغیر با new ساخته شده‌اند. نوشتن Chip b = a; شیء دومی نمی‌سازد؛ فقط b را به همان شیء a اشاره می‌دهد. آن ایده برای صفحات بعد است. در این صفحه وقتی دو شیء می‌خواهید دو عبارت new Chip() بنویسید.
اگر دوست دارید نام متغیر را از c به unit عوض کنید: Chip unit = new Chip(); بعد unit.beep();. وقتی بدنهٔ متد هنوز همان واژه را می‌نویسد صفحه ok می‌ماند. نام متغیر مال شماست؛ نام نوع Chip و عبارت new Chip() باید هم‌خوان بمانند.

این صفحه برای فیلدها چه می‌گذارد

این صفحه هنوز عدد یا واژه‌ای داخل chip ذخیره نمی‌کند. فیلدها — نام‌هایی که داده را روی هر شیء نگه می‌دارند — صفحهٔ بعد هستند. اینجا شیء بعد از new وجود دارد و متد نمونهٔ beep فقط می‌نویسد. همین برای دیدن جدایی کلاس به‌عنوان نوع و یک شیء به‌عنوان مقدار ساخته‌شده کافی است.
Chip را داخل آکولادهای Pine تودرتو نکنید. در این صفحه دو کلاس هم‌سطح در فایل می‌نشینند. متدهای Chip داخل Chipاند. Main داخل Pine است. می‌توانید واژهٔ نوشته‌شده داخل beep را به ping عوض کنید و دوباره اجرا کنید. صفحه باید از رشته‌ای که در Chip گذاشتید پیروی کند. شکل new و فراخوانی در Pine همان می‌ماند.
اگر ساخت نتوانست Chip را پیدا کند، ببینید public class Chip در همان فایل است و خط کلاس واقعاً Chip می‌گوید. اگر اجرا چیزی ننوشت، تأیید کنید Main هنوز بعد از خط new صدا می‌زند c.beep(); و beep هنوز WriteLine دارد.

می‌توانید Chip را با void beep() بنویسید، با Chip c = new Chip(); یک شیء بسازید، و از Pine.Main صدا بزنید c.beep();. با dotnet run اجرا کنید. صفحه ok نشان می‌دهد. یک new Chip() دوم شیء دیگری می‌سازد که خودش می‌تواند beep کند. Chip را نقشه ببینید و هر new Chip() را یک قطعهٔ ساخته‌شده که می‌توانید نام بگذارید. Pine همان دری است که با dotnet run باز می‌کنید. صفحهٔ بعد فیلدهاست، جایی که هر شیء شروع می‌کند دادهٔ ذخیره‌شدهٔ خودش را نگه دارد.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
5
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود