Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الفئات الساكنة (Static Classes)

جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 13 من 70.

عندما يحتوي صنف (class) على أعضاء ثابتة (static members) فقط ولا تحتاج أبداً إلى إنشاء مثيلات (instances) منه، يمكنك التصريح عن الصنف بأكمله كـ static. يخبر هذا المترجم (compiler) بأنه لا يمكن إنشاء مثيل من الصنف وأنه لا يمكنه احتواء سوى أعضاء ثابتة.

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

تستخدم الفئات الثابتة بنفس الطريقة التي تستخدم بها الأعضاء الثابتة، وذلك من خلال استدعائها مباشرةً باستخدام اسم الفئة:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

تتمتع الفئات الثابتة (Static classes) بقيود مهمة. لا يمكنك إنشاء مثيل باستخدام new، ولا يمكن أن تحتوي على مشيدات مثيل، ولا يمكن توريثها. يمكنها فقط أن تحتوي على حقول وخصائص وطرق ثابتة (static).

تعد فئات Console و Math التي كنت تستخدمها أمثلة مثالية على الفئات الساكنة (static classes). فهي توفر وظائف مساعدة دون الحاجة إلى حالة الكائن (object state). الفئات الساكنة مثالية لتجميع الأساليب المساعدة المرتبطة أو الثوابت التي لا تتطلب أي بيانات خاصة بنسخة معينة.

challenge icon

التحدي

سهل

لنقم ببناء أداة مساعدة لتحويل درجات الحرارة باستخدام فئة ثابتة (static class) لتجميع الطرق المساعدة (helper methods) ذات الصلة التي لا تتطلب أي حالة للكائن (object state).

ستقوم بإنشاء ملفين لتنظيم الكود الخاص بك:

  • TemperatureConverter.cs: قم بتعريف فئة ثابتة تسمى TemperatureConverter داخل مساحة الأسماء Utilities. يجب أن تحتوي هذه الفئة على:
    • حقل ثابت (static field) باسم AbsoluteZeroCelsius وقيمته -273.15
    • طريقة ثابتة (static method) باسم CelsiusToFahrenheit(double celsius) تقوم بتحويل الدرجة المئوية إلى فهرنهايت باستخدام الصيغة: (celsius * 9 / 5) + 32
    • طريقة ثابتة باسم FahrenheitToCelsius(double fahrenheit) تقوم بتحويل الفهرنهايت إلى درجة مئوية باستخدام الصيغة: (fahrenheit - 32) * 5 / 9
    • طريقة ثابتة باسم IsAboveAbsoluteZero(double celsius) ترجع true إذا كانت درجة الحرارة أعلى من الصفر المطلق
  • Program.cs: في ملفك الرئيسي، استخدم الفئة الثابتة لإجراء التحويلات. اقرأ قيمة درجة الحرارة بالدرجة المئوية من المدخلات، ثم اعرض التحويلات والتحقق من الصحة.

ستتلقى مدخلاً واحداً: قيمة درجة الحرارة بالدرجة المئوية.

اطبع النتائج بهذا التنسيق:

{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}C

على سبيل المثال، إذا كان المدخل 25، يجب أن يكون المخرج:

25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15C

تذكر أنه لا يمكن إنشاء كائنات من الفئات الثابتة (static classes) - ستستدعي جميع الطرق مباشرة باستخدام اسم الفئة مثل TemperatureConverter.CelsiusToFahrenheit(25).

ورقة مرجعية

يمكن للفئة static أن تحتوي فقط على أعضاء ثابتة ولا يمكن إنشاء مثيل لها. تُستخدم لتجميع الأساليب المساعدة والثوابت ذات الصلة التي لا تتطلب حالة للكائن.

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

يتم الوصول إلى أعضاء الفئة الثابتة مباشرةً عبر اسم الفئة:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

قيود الفئات الثابتة (static classes):

  • لا يمكن إنشاء مثيل لها باستخدام new
  • لا يمكن أن تحتوي على منشئات مثيل (instance constructors)
  • لا يمكن توريثها
  • يمكن أن تحتوي فقط على حقول وخصائص وأساليب ثابتة (static)

تشمل الأمثلة الشائعة فئتي Console و Math، اللتين توفران وظائف مساعدة دون الحاجة إلى حالة للكائن.

جرّب بنفسك

using System;
using Utilities;

class Program
{
    public static void Main(string[] args)
    {
        // قراءة درجة الحرارة بالدرجة المئوية
        double celsius = Convert.ToDouble(Console.ReadLine());
        
        // TODO: استخدم الطرق الثابتة (static methods) في TemperatureConverter من أجل:
        // 1. تحويل الدرجة المئوية إلى فهرنهايت
        // 2. تحويل الفهرنهايت مرة أخرى إلى درجة مئوية
        // 3. التحقق مما إذا كانت درجة الحرارة أعلى من الصفر المطلق
        // 4. الحصول على ثابت الصفر المطلق
        
        // TODO: اطبع النتائج بالتنسيق المطلوب:
        // {celsius}C = {fahrenheit}F
        // {fahrenheit}F = {convertedBack}C
        // Above Absolute Zero: {True/False}
        // Absolute Zero: {AbsoluteZeroCelsius}C
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming