Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

‫‪Tariq Mohammed Al-Sultan‬‬

‫‪Abstract‬‬
‫‪Classes and Methods‬‬
‫أوالً الفصيل المجرد ‪abstract class‬‬
‫هو فصيل إفتراضي وهمي ال يمكن إنشاء غرض منه‪ ،‬يستخدم بشكل أساسي ليدعم مبدأ الوراثة‪.‬‬
‫يتم التصريح عن فصيل بأنه مجرد لإلشارة إلى أن هذا الفصيل أساسي‪.‬‬
‫المفهوم العام من الفصيل المجرد هو تجميع البيانات المشتركة بين أكثر من فئة ففصيل مجرد بحيث ال‬
‫يمكن الوصول لها إال من فصيل مشتق‪ ،‬أي ال نستطيع إنشاء غرض من هذا الفصيل والوصول من خالله‬
‫إلى هذه البيانات‪ ،‬وهذا يساعد في إخفاء البيانات وحمايتها بصورة أكثر فاعلية‪.‬‬
‫للتصريح عن فصيل بأنه مجرد نكتب الكلمة المفتاحية ‪ abstract‬بالشكل التالي ‪:‬‬
‫‪abstract class NameClass‬‬
‫}‬

‫{‬

‫ثانيا ً الدوال المجردة ‪abstract method‬‬


‫دالة وهمية يتم التصريح عنها داخل الفصيل المجرد فقط‬
‫ونستخدمها مع الدوال المشتركة بين أكثر من فصيل لكن تنفيذها يختلف من فصيل إلى آخر‪.‬‬
‫يتم التصريح عن دالة مجردة بالكلمة المفتاحية ‪abstract‬داخل فصيل مجرد وال تحتوي على أي كود كذلك‬
‫ليس لها حاصرتين {} وينتهي التصريح عنها بفاصلة منقوطة وتأخذ التصريح التالي ‪:‬‬

‫;)‪public abstract Type fun_name(parameters‬‬

‫محدد الوصول لها دائم ‪( public‬حسب ما قال األستاذ نجم)‪.‬‬


‫حسب قول الدكتور عائش يمكن للدالة المجردة أن تملك جميع محددات الوصول ماعدا ‪private‬‬
‫وعليكم التأكُد‬
‫عند اشتقاق فصيل من فصيل مجرد يجب علينا إعادة كتابة جميع الدوال المجردة داخل الفصيل المشتق‬
‫وتعريفها بالكلمة ‪ override‬داخل الفصيل المشتق‪.‬‬

‫وتسمى الدالة المعرفة بالكلمة ‪ override‬باللدالة الناسخة‪.‬‬

‫إعداد طارق محمد السلطان‬


Tariq Mohammed Al-Sultan

: ‫الصورة العامة للتصريح عن دالة ناسخة داخل فصيل مشتق كالتالي‬

public override Type fun_name(parameters)


{

‫ بالكلمة‬abstract ‫يجب أن يكون رأس الدالة الناسخة هو نفسه رأس الدالة المجردة مع تغيير الكلمة‬
.‫ فقط‬override

‫يمكن إعادة تعريف الدوال المجردة داخل الفصيل المشتق من الفصيل المشتق من الفصيل المجرد (بمفهوم‬
‫عام إعادة تعريفها داخل األحفاد) ويمكن تجاوزها‬

: ‫مثال حول الفصائل المجردة والدوال المجردة‬


using System;
namespace lab6
{
abstract class Shapes // Abstract class
{
protected double width;
protected double height;
public double Width
{
set { width = value; }
get { return width; }
}
public double Heiht
{
set { height = value; }
get { return height; }
}
public abstract double Area();
}
class Square : Shapes
{
public override double Area()
{
return Math.Pow(width, 2);
}
}
class Rectangular : Shapes
{
public override double Area()
{
return width * height;
}
}
class Triangle : Shapes
{
double Base;
public double BASE
{
set { Base = value; }
get { return Base; }
}

‫إعداد طارق محمد السلطان‬


Tariq Mohammed Al-Sultan

public override double Area()


{
return height * Base / 2;
}
}
class Program
{
static void Main()
{

Square square = new Square();


square.Heiht = 6;
square.Width = 5;

Rectangular rectangular = new Rectangular();


rectangular.Heiht = 6;
rectangular.Width = 5;

Triangle triangle = new Triangle();


triangle.Heiht = 6;
triangle.BASE = 5;

Console.WriteLine("Area of Square ={0}",square.Area());

Console.WriteLine("Area of Rectangular ={0}",rectangular.Area());

Console.WriteLine("Area of Triangle ={0} ",triangle.Area());

Console.ReadKey();
}
}

‫إعداد طارق محمد السلطان‬

You might also like