OOPالدرس الثالث فى

1-Overloading:

هو عبارة عن كتابة أكثر من دالة او (Method) بنفس الاسم مع اختلاف في الباراميتر من حيث ترتبهم أو أنواعهم وبالتالى تصبح هذة الدالة لها اكثر من استخدام اى متعددة الاستخدام كالتالى:

(1)In PHP:

class A

{

public function func1($var1)

{

echo “hello from func1 with parameter as var1”;

}

public function func1($var1,$var2)

{

echo “hello from func1 with parameter as var1 and var2”;

}

}

وكما هو ملاحظ فان الدالة (func1) يمكن ان تاخذ بارمتر واحد او بارمترين ويمكن ايضا تكرار هذة الدالة مع زيادة عدد البارمترات للقيام بمهام متعددة.

(2)In C#:

class A

{

public int func1(int num1,int num2)

{

return num1 + num2;

}

public int func1(int num1, int num2, int num3)

{

return num1 + num2 + num3;

}

}

وكما هو ملاحظ فان الدالة (func1) يمكن ان تاخذ بارمترين عبارة عن عددين صحيحين وترجع بمجموعهم او ثلاث بارمترات عبارة عن اعداد صحيحة وترجع بمجموعهم ويمكن ايضا تكرارهذة الدالة مع زيادة عدد البارمترات للقيام بمهام متعددة.

2-Inheritance:

يعتبر مفهوم الوراثة من اهم المفاهيم فى (OOP) ولفهم مبدا الوراثة ببساطة لو اعتبرنا أن شركة (NISSAN) للسيارات هي الأب و هذه الشركة لها أبناء هم :سيارة (sunny) وسيارة (Maxima) بحيث أن هؤلاء الأبناء يرثون جميع صفات الأب ” شركة ” (NISSAN) بالإضافة إلى ذلك فكل ابن منهما يتفرد بصفات خاصة به

فهذا بكل بساطة مبدأ الوراثة.وبالتالى لو فرضنا اننا لدينا كلاس (A) هذا الكلاس بة مجموعة من الدوال فيمكن ان نقوم بعمل كلاس اخر وليكن كلاس (B) هذا الكلاس يمكن ان يرث كل الخصائص الموجودة فى كلاس (A) سواء كانت (Method,Attribute) ومعنى ان كلاس (B) يرث كلاس (A) اى ان كل (Method,Attribute) الموجودة فى كلاس (A) تصبح موجودة فى كلاس (B) كالتلى:

(1)In PHP:

class A
{
public function printItem($string)
{
echo ‘A: ‘ . $string ;
}

public function printPHP()
{
echo ‘PHP is great.’ ;
}
}

class B extends A
{
public function printItem($string)
{
echo ‘B: ‘ . $string ;
}
}

ويتم عمل الوارثة عن طريق استخدام كلمة (extends) حيث كلاس (B) يرث من كلاس (A) ومن هنا يمكن الوصول لاى دالة من كلاس (A) عن طريق كلاس (B) كالتالى:

$B = new B();
$B->printPHP();

(2)In C#:

class A

{

public int func1(int num1,int num2)

{

return num1 + num2;

}

public int func1(int num1, int num2, int num3)

{

return num1 + num2 + num3;

}

}

class B:A
{
public function func2(float num1,float num2)
{
return num1 + num2;

}
}

ويتم عمل الوارثة عن طريق استخدام (:) حيث كلاس (B) يرث من كلاس (A) ومن هنا يمكن الوصول لاى دالة من كلاس (A) عن طريق كلاس (B) كالتالى:

B b1= new B() ;

b1.fun1();

3-Overrides:

وهذ المفهوم هو مرتبط بمبدا الوراثة وهو عبارة عن أننا تقوم بتعريف دالة لها نفس الاسم والباراميترات من الدالة التى تم توريثها من خلال الكلاس الأب مع تغيير مهمة هذة الدالة الجديدة كالتالى:

(1)In PHP:

class A {

public function test($param) {

echo “the parameter value is $param”;

}

}

class B extends A {

public function test($param) {

echo “the new parameter value is $param”;

}

}

وللوصول لهذة الدالة بقيمتيها المختلفة كالتالى:

$objA = new A;

$objB = new B;

$objA->test(‘class A’);

$objB->test(‘class B’);

(2)In C#:

class A

{

public virtual test()

{

Console.WriteLine(“test”);

}

}

class B : A

{

public override test()

{

Console.WriteLine(“new test”);

}

}

فى حالة عمل (Override) فى لغة السى شارب لابد من وضع كلمة (virtual) مع الدالة فى الكلاس الاول ووضع كلمة (override) مع هذة الدالة فى الكلاس الذى يرث من الكلاس السابق.

Advertisements

ضع تعليقك هنا

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: