مشاهدة النسخة كاملة : مساعدة بالبرمجة المتقدمة2 لو سمحتوا؟؟؟؟
*Islam_Rose*
05-16-2008, 07:50 PM
بسم الله الرحمن الرحيم
السلام عليكم
أنا عندي مشكلة بالبرمجة ممكن مساعدة؟
ممكن توضيح الفرق بمثال بسيط الفرق بين :
abstruct - sealed
و
interface
و
override - virtual
و
لكم جزيل الشكر
و السلام عليكم و رحمة الله و بركاته
Bl@ck Angel
05-18-2008, 08:51 AM
السلام عليكم ...
:abstruct:
عندما يكون الكلاس من نمط abstruct فأنه لايمكن أن أعّرف منه object في أي مكان من البرنامج و إنما يستخدم للأشتقاق منه فقط .
و يمكن أنا يحوي توابع و لكنها من نمط abstruct أيضاً و يجب أن لا تحوي على جسم وانما فقط تعريف لهذا التابع .ويكمن أن نعرف ضمنه أعضاء .
مثال :
namespace ConsoleApplication1
{
abstract class My1Class
{
public int X;
abstract public void Print();
}
class My2Class : My1Class
{
override public void Print()
{
Console.WriteLine("ghfghfg");
X = 0;
}
}
class Program
{
static void Main(string[] args)
{
My2Class C = new My2Class();
C.Print();
My1Class C1 = new My1Class(); // error
}
}
}
sealed :
على خلاف abstruct فأن كلاس sealed لايمكن الأشتقاق منه و يستخدم بشكل مباشر بتعريف object منه .
مثال :
namespace ConsoleApplication1
{
class Program
{
sealed class MyClass
{
public void Print() { Console.WriteLine("Print Function"); }
}
class MyClass2 : MyClass // error
{
void Read() { Console.ReadLine(); }
}
static void Main(string[] args)
{
MyClass C1 = new MyClass();
C1.Print();
}
}
}
تعرف الواجهات intrfaces تماماً كما نعرف الأصناف ألا أن هناك عدد من الأختلافات بين أعضاء الأصناف و أعضاء الواجهة :
* لا يمكن استخدام مقيدات الوصول (أي كلمات protected , Private , public internal )
لأن جميع الأعضاء في الواجهة هي أعضاء عامة بصورة مطلقة .
* لايمكن لأعضاء الواجهة أن تتضمن على شيفرة برمجية , إنما مجرد تعريف فقط .
* لا يمكن تعريف أعضاء ضمن الواجهة .
* لا يمكن تعريف التوابع ضمن الواجهة باستخدام الكلمات : sealed , abstract , virtual , static .
بينما يمكننا أن نعرف الأعضاء باستخدام الكلمة new و ذلك إذا أردنا أن نحجب الأعضاء الموروثة من الواجهات الأساس على سبيل المثال :
interface MyBaseInterface
{
void DoSomething();
}
interface MyDerviedInterface : MyBaseInterface
{
new void DoSomething();
}
ويمكننا تعريف الخصائص ضمن الواجهات و بتعريفها نحدد إذا كانت الخاصية تتضمن الكتلة set أو الكتلة get أو كلتاهما .
مثال :
interface MyInterface
{
int Myint
{
get;
set;
}
}
وكما قلنا سابقاً لايمكن أن نضع ضمن التوابع أو الخصائص أي شيفرة برمجة خاصة.
اما بالنسبة لـ override و virtual فمعلوماتي محدودة بعض الشئ و الذي أعرفه هو أن أستخدامهما في التميز بين التوابع المتكررة في الكلاسات المشتقة لنخبر المترجم أي التوابع سوف يتم أستدعائها ..
*Islam_Rose*
05-18-2008, 10:08 AM
بسم الله الرحمن الرحيم
السلام عليكم
أشكرك أخي في الله على المساعدة
وجزاك الله ألف و ألف..... خير ووفقك في كل المجالات
ولكن مافائدة ال Static و لماذا نستخدمه؟؟؟؟
ولكم جزيل الشكر
و السلام عليكم
Bl@ck Angel
05-18-2008, 03:21 PM
Static :
إن الـ Static تستخدم لكي نعرف تابع ثابت ضمن كلاس ميزة هذا التابع هي أنه يمكن أستدعائه من دون تعريف object من الكلاس مثال ( عندما نستخدم توابع كلاس Math فإننا لا نعرف object منه :
Math.Pow(10, i);
هذه توابع الـ pow() من نوع Static ) .
و لكن يجب مراعات أنه عند تعريف تابع من نوع Static عدم تغير قيم متحول خارجي داخل التابع ( يمكن فقط استخدام المتحولات المررة ضمن الأستدعاء أو المعرفة ضمنه ) ....
مثال :
class MyMath
{
double Bi = 3.14;
static public double Cal(int x1, int x2)
{
x1 = Bi; // error
return x1 * x2 * 2;
}
}
static void Main(string[] args)
{
double i;
i=MyMath.Cal(2, 3);
}
أرجو أن يكون هناك فائدة من ردودي ..
إن كان هناك أي أسئلة أو أستفسارات أرجو أن لا تبخلو علينا
والسلام عليكم ...
*Islam_Rose*
05-23-2008, 05:07 PM
بسم الله الرحمن الرحيم
السلام عليكم
أشكرك أخي في الله للتوضيح جزاك الله عني كل الخير
ووفقك لما يحبه و يرضاه جل جلاله
و السلام عليكم
snoop
05-28-2008, 01:32 AM
السلام عليكم
شكرا اخي black angel :D اذا في مجال حدا يشرحلنا الdelegation مشكورين
thnx
vBulletin® v3.8.4, Copyright ©2000-2012, TranZ by Almuhajir