14 تعدد الأشكال واستخدامه في البرامج. مفاهيم البرمجة الشيئية جافا

العصارة 20 أغسطس 2008 الساعة 7:09 مساءً

تعدد الأشكال للمبتدئين

  • بي أتش بي

يعد تعدد الأشكال أحد نماذج OOP الثلاثة الرئيسية. باختصار، تعدد الأشكال هو قدرة الكائن على استخدام أساليب فئة مشتقة غير موجودة في وقت إنشاء الفئة الأساسية. بالنسبة لأولئك الذين ليسوا على دراية خاصة بـ OOP، ربما يبدو هذا الأمر معقدًا. لذلك، دعونا نلقي نظرة على استخدام تعدد الأشكال باستخدام مثال.

صياغة المشكلة

لنفترض أن الموقع يحتاج إلى ثلاثة أنواع من المنشورات - الأخبار والإعلانات والمقالات. وهي متشابهة في بعض النواحي - فجميعها لها عنوان ونص، والأخبار والإعلانات لها تاريخ. إنها مختلفة في بعض النواحي، فالمقالات لها مؤلفون، والأخبار لها مصادر، والإعلانات لها تاريخ يصبح بعده غير ذي صلة.

أبسط الخيارات التي تتبادر إلى ذهنك هي كتابة ثلاثة فصول منفصلة والعمل معهم. أو اكتب فئة واحدة تحتوي على جميع الخصائص المتأصلة في جميع أنواع المنشورات الثلاثة، وسيتم استخدام الخصائص الضرورية فقط. ولكن بالنسبة للأنواع المختلفة، يجب أن تعمل الأساليب المتشابهة في المنطق بشكل مختلف. يعد إنشاء عدة طرق من نفس النوع لأنواع مختلفة (get_news، get_announcements، get_articles) أمرًا جاهلًا تمامًا. هذا هو المكان الذي يكون فيه تعدد الأشكال مفيدًا.

فئة مجردة

بشكل تقريبي، هذه فئة قالب. إنه ينفذ الوظيفة فقط على المستوى المعروف حاليًا. الطبقات المشتقة تكملها. لكن حان الوقت للانتقال من النظرية إلى التطبيق. اسمحوا لي أن أقوم بالحجز على الفور: نحن نفكر في مثال بدائي مع الحد الأدنى من الوظائف. جميع التوضيحات موجودة في التعليقات في الكود.

منشور فئة مجردة
{
// الجدول الذي يخزن البيانات الموجودة على العنصر
جدول $ محمي ؛

// خصائص العنصر غير معروفة لنا
خصائص $ المحمية = المصفوفة () ؛

// البناء

{
// لاحظ أننا لا نعرف الجدول الذي نحتاج إلى الحصول على البيانات منه
$result = mysql_query ("SELECT * FROM `" . $this -> table . "` WHERE `id`="" . $id . "" LIMIT 1" );
// لا نعرف أيضًا ما هي البيانات التي تلقيناها
$this -> property = mysql_fetch_assoc ($result );
}

// الطريقة نفسها بالنسبة لأي نوع من المنشورات، تُرجع قيمة الخاصية
الوظيفة العامة get_property ($name)
{
إذا (isset($this -> خصائص [ $name ]))
إرجاع $this -> الخصائص [ $name ]؛

عودة كاذبة ؛
}

// الطريقة نفسها بالنسبة لأي نوع من المنشورات، تحدد قيمة الخاصية
الوظيفة العامة set_property (اسم $، قيمة $)
{
إذا (!isset($this -> خصائص [ $name ]))
عودة كاذبة ؛

$this -> الخصائص [ $name ] = $value ;

إرجاع قيمة $؛
}

// وهذه الطريقة يجب أن تطبع المنشور، لكننا لا نعرف بالضبط كيفية القيام بذلك، ولذلك نعلنه مجردا
وظيفة عامة مجردة do_print();
}

الطبقات المشتقة

يمكنك الآن الانتقال إلى إنشاء فئات مشتقة تنفذ الوظيفة المفقودة.

أخبار الطبقة يمتد النشر
{
// مُنشئ فئة الأخبار، مشتق من فئة المنشورات
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم تخزين بيانات الأخبار فيه
$this -> table = "news_table" ;
الوالد :: __construct ($id);
}

الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "

" ;
صدى $هذا -> الخصائص ["نص"]؛
صدى صوت "
المصدر: " . $this -> Properties [ "source" ];
}
}

إعلان الطبقة يمتد النشر
{
// مُنشئ فئة الإعلان المشتقة من فئة النشر
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم تخزين بيانات الإعلان فيه
$this -> table = "announcements_table" ;
// اتصل بمنشئ الفئة الأصلية
الوالد :: __construct ($id);
}

// تجاوز طريقة الطباعة المجردة
الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "
انتباه! الإعلان ساري حتى "
. $this -> الخصائص ["end_date" ];
صدى صوت "

" . $this -> Properties [ "text" ];
}
}

المادة فئة يمتد النشر
{
// مُنشئ فئة المقالة، مشتق من فئة النشر
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم فيه تخزين بيانات المقالات
$this -> table = "articles_table" ;
// اتصل بمنشئ الفئة الأصلية
الوالد :: __construct ($id);
}

// تجاوز طريقة الطباعة المجردة
الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "

" ;
صدى $هذا -> الخصائص ["نص"]؛
صدى صوت "
" . $this -> Properties [ "author" ];
}
}

الآن عن الاستخدام

النقطة المهمة هي أنه يتم استخدام نفس الرمز لكائنات من فئات مختلفة.

// املأ مصفوفة النشر بالكائنات المشتقة من المنشور
$publications = الأخبار الجديدة ($news_id);
$publications = إعلان جديد($announcement_id);
$publications = new Article($article_id);

Foreach (منشورات $ كـ $ منشور) (
// إذا كنا نعمل مع ورثة النشر
إذا ($ مثيل النشر للنشر) (
// ثم اطبع البيانات
$النشر -> do_print();
) آخر (
// معالجة الاستثناء أو الخطأ
}
}

هذا كل شئ. بحركة خفيفة من اليد يتحول البنطلون إلى شورت أنيق :-).

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

القليل من النظرية

  • تسمى الأساليب التي تتطلب التجاوز مجردة. من المنطقي أنه إذا كان الفصل يحتوي على طريقة مجردة واحدة على الأقل، فهو أيضًا مجرد.
  • من الواضح أنه لا يمكن إنشاء كائن من فئة مجردة، وإلا فإنه لن يكون مجردا.
  • تحتوي الفئة المشتقة على خصائص وأساليب تنتمي إلى الفئة الأساسية، ويمكن أن يكون لها أيضًا أساليب وخصائص خاصة بها.
  • تسمى الطريقة التي يتم تجاوزها في فئة مشتقة بالطريقة الافتراضية. لا توجد معلومات حول هذه الطريقة في فئة الملخص الأساسية.
  • الهدف من التجريد هو تحديد الطريقة في المكان الذي توجد فيه المعلومات الأكثر اكتمالاً حول كيفية عملها.
محدث:فيما يتعلق بانتهاكات sql-inj و MVC - أيها السادة، هذا مجرد مثال، ومثال على تعدد الأشكال، الذي لا أرى أنه من الضروري الاهتمام بهذه الأشياء. هذا موضوع لمقالات مختلفة تمامًا.

يعد تعدد الأشكال أحد نماذج OOP الثلاثة الرئيسية. باختصار، تعدد الأشكال هو قدرة الكائن على استخدام أساليب فئة مشتقة غير موجودة في وقت إنشاء الفئة الأساسية. بالنسبة لأولئك الذين ليسوا على دراية خاصة بـ OOP، ربما يبدو هذا الأمر معقدًا. لذلك، دعونا نلقي نظرة على استخدام تعدد الأشكال باستخدام مثال.

صياغة المشكلة

لنفترض أن الموقع يحتاج إلى ثلاثة أنواع من المنشورات - الأخبار والإعلانات والمقالات. وهي متشابهة في بعض النواحي - فجميعها لها عنوان ونص، والأخبار والإعلانات لها تاريخ. إنها مختلفة في بعض النواحي، فالمقالات لها مؤلفون، والأخبار لها مصادر، والإعلانات لها تاريخ يصبح بعده غير ذي صلة.

أبسط الخيارات التي تتبادر إلى ذهنك هي كتابة ثلاثة فصول منفصلة والعمل معهم. أو اكتب فئة واحدة تحتوي على جميع الخصائص المتأصلة في جميع أنواع المنشورات الثلاثة، وسيتم استخدام الخصائص الضرورية فقط. ولكن بالنسبة للأنواع المختلفة، يجب أن تعمل الأساليب المتشابهة في المنطق بشكل مختلف. يعد إنشاء عدة طرق من نفس النوع لأنواع مختلفة (get_news، get_announcements، get_articles) أمرًا جاهلًا تمامًا. هذا هو المكان الذي يكون فيه تعدد الأشكال مفيدًا.

فئة مجردة

بشكل تقريبي، هذه فئة قالب. إنه ينفذ الوظيفة فقط على المستوى المعروف حاليًا. الطبقات المشتقة تكملها. لكن حان الوقت للانتقال من النظرية إلى التطبيق. اسمحوا لي أن أقوم بالحجز على الفور: نحن نفكر في مثال بدائي مع الحد الأدنى من الوظائف. جميع التوضيحات موجودة في التعليقات في الكود.

منشور فئة مجردة
{
// الجدول الذي يخزن البيانات الموجودة على العنصر
جدول $ محمي ؛

// خصائص العنصر غير معروفة لنا
خصائص $ المحمية = المصفوفة () ؛

// البناء

{
// لاحظ أننا لا نعرف الجدول الذي نحتاج إلى الحصول على البيانات منه
$result = mysql_query ("SELECT * FROM `" . $this -> table . "` WHERE `id`="" . $id . "" LIMIT 1" );
// لا نعرف أيضًا ما هي البيانات التي تلقيناها
$this -> property = mysql_fetch_assoc ($result );
}

// الطريقة نفسها بالنسبة لأي نوع من المنشورات، تُرجع قيمة الخاصية
الوظيفة العامة get_property ($name)
{
إذا (isset($this -> خصائص [ $name ]))
إرجاع $this -> الخصائص [ $name ]؛

عودة كاذبة ؛
}

// الطريقة نفسها بالنسبة لأي نوع من المنشورات، تحدد قيمة الخاصية
الوظيفة العامة set_property (اسم $، قيمة $)
{
إذا (!isset($this -> خصائص [ $name ]))
عودة كاذبة ؛

$this -> الخصائص [ $name ] = $value ;

إرجاع قيمة $؛
}

// وهذه الطريقة يجب أن تطبع المنشور، لكننا لا نعرف بالضبط كيفية القيام بذلك، ولذلك نعلنه مجردا
وظيفة عامة مجردة do_print();
}

الطبقات المشتقة

يمكنك الآن الانتقال إلى إنشاء فئات مشتقة تنفذ الوظيفة المفقودة.

أخبار الطبقة يمتد النشر
{
// مُنشئ فئة الأخبار، مشتق من فئة المنشورات
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم تخزين بيانات الأخبار فيه
$this -> table = "news_table" ;
الوالد :: __construct ($id);
}

الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "

" ;
صدى $هذا -> الخصائص ["نص"]؛
صدى صوت "
المصدر: " . $this -> Properties [ "source" ];
}
}

إعلان الطبقة يمتد النشر
{
// مُنشئ فئة الإعلان المشتقة من فئة النشر
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم تخزين بيانات الإعلان فيه
$this -> table = "announcements_table" ;
// اتصل بمنشئ الفئة الأصلية
الوالد :: __construct ($id);
}

// تجاوز طريقة الطباعة المجردة
الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "
انتباه! الإعلان ساري حتى "
. $this -> الخصائص ["end_date" ];
صدى صوت "

" . $this -> Properties [ "text" ];
}
}

المادة فئة يمتد النشر
{
// مُنشئ فئة المقالة، مشتق من فئة النشر
الوظيفة العامة __construct ($id)
{
// قم بتعيين قيمة الجدول الذي يتم فيه تخزين بيانات المقالات
$this -> table = "articles_table" ;
// اتصل بمنشئ الفئة الأصلية
الوالد :: __construct ($id);
}

// تجاوز طريقة الطباعة المجردة
الوظيفة العامة do_print()
{
صدى $هذا -> الخصائص ["العنوان"]؛
صدى صوت "

" ;
صدى $هذا -> الخصائص ["نص"]؛
صدى صوت "
" . $this -> Properties [ "author" ];
}
}

الآن عن الاستخدام

النقطة المهمة هي أنه يتم استخدام نفس الرمز لكائنات من فئات مختلفة.

// املأ مصفوفة النشر بالكائنات المشتقة من المنشور
$publications = الأخبار الجديدة ($news_id);
$publications = إعلان جديد($announcement_id);
$publications = new Article($article_id);

Foreach (منشورات $ كـ $ منشور) (
// إذا كنا نعمل مع ورثة النشر
إذا ($ مثيل النشر للنشر) (
// ثم اطبع البيانات
$النشر -> do_print();
) آخر (
// معالجة الاستثناء أو الخطأ
}
}

هذا كل شئ. بحركة خفيفة من اليد يتحول البنطلون إلى شورت أنيق :-).

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

القليل من النظرية

  • تسمى الأساليب التي تتطلب التجاوز مجردة. من المنطقي أنه إذا كان الفصل يحتوي على طريقة مجردة واحدة على الأقل، فهو أيضًا مجرد.
  • من الواضح أنه لا يمكن إنشاء كائن من فئة مجردة، وإلا فإنه لن يكون مجردا.
  • تحتوي الفئة المشتقة على خصائص وأساليب تنتمي إلى الفئة الأساسية، ويمكن أن يكون لها أيضًا أساليب وخصائص خاصة بها.
  • تسمى الطريقة التي يتم تجاوزها في فئة مشتقة بالطريقة الافتراضية. لا توجد معلومات حول هذه الطريقة في فئة الملخص الأساسية.
  • الهدف من التجريد هو تحديد الطريقة في المكان الذي توجد فيه المعلومات الأكثر اكتمالاً حول كيفية عملها.
محدث:فيما يتعلق بانتهاكات sql-inj و MVC - أيها السادة، هذا مجرد مثال، ومثال على تعدد الأشكال، الذي لا أرى أنه من الضروري الاهتمام بهذه الأشياء. هذا موضوع لمقالات مختلفة تمامًا.

تعدد الأشكال الجيني هو حالة يوجد فيها تنوع طويل الأمد للجينات، ولكن تواتر الجين الأكثر ندرة في السكان يزيد عن واحد بالمائة. تحدث صيانتها بسبب الطفرة المستمرة في الجينات، وكذلك إعادة تركيبها المستمر. وفقا للبحث الذي أجراه العلماء، أصبح تعدد الأشكال الجيني واسع الانتشار، لأنه يمكن أن يكون هناك عدة ملايين من مجموعات الجينات.

مخزون كبير

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

كيف بدأ كل شيء؟

بدأ علم الوراثة في التطور بسرعة في الستينيات من القرن الماضي، ثم بدأ استخدام الإنزيمات الموجودة في المواد الهلامية، مما جعل من الممكن تحديد تعدد الأشكال الجيني. ما هي هذه الطريقة؟ وبمساعدتها تتحرك البروتينات في مجال كهربائي، والذي يعتمد على حجم البروتين الذي يتم نقله، وتكوينه، بالإضافة إلى الشحنة الإجمالية في أجزاء مختلفة من الجل. بعد ذلك، واعتمادًا على موقع وعدد البقع التي تظهر، يتم تحديد المادة المحددة. لتقييم تعدد أشكال البروتين في مجتمع ما، من المفيد فحص ما يقرب من 20 موقعًا أو أكثر. ثم، باستخدام طريقة رياضية، يتم تحديد عدد ونسبة الزيجوت المتماثلة والمتغايرة. وفقا للأبحاث، يمكن لبعض الجينات أن تكون أحادية الشكل، في حين أن البعض الآخر يمكن أن يكون متعدد الأشكال بشكل غير عادي.

أنواع تعدد الأشكال

إن مفهوم تعدد الأشكال واسع للغاية ويتضمن متغيرًا انتقاليًا ومتوازنًا. ويعتمد ذلك على القيمة الانتقائية للجين والانتقاء الطبيعي، مما يشكل ضغطًا على السكان. وبالإضافة إلى ذلك، يمكن أن تكون وراثية وكروموسومية.

تعدد الأشكال الجينية والكروموسومية

ويتمثل تعدد الأشكال الجينية في الجسم بأكثر من أليل واحد؛ ومن الأمثلة الصارخة على ذلك الدم. يمثل الكروموسوم الاختلافات داخل الكروموسومات التي تحدث بسبب الانحرافات. وفي الوقت نفسه، هناك اختلافات في المناطق المتغايرة اللون. وفي غياب علم الأمراض الذي يؤدي إلى الضعف أو الوفاة، تكون هذه الطفرات محايدة.

تعدد الأشكال الانتقالي

يحدث تعدد الأشكال الانتقالي عندما يتم استبدال أليل كان شائعًا في مجتمع ما بأليل آخر يوفر لحامله قدرة أكبر على التكيف (وتسمى أيضًا الأليلية المتعددة). مع مجموعة معينة، هناك تحول اتجاهي في النسبة المئوية للأنماط الجينية، بسبب حدوث التطور وتنفيذ ديناميكياته. ويمكن أن تكون ظاهرة الآلية الصناعية مثالا جيدا يميز تعدد الأشكال الانتقالي. ويظهر ذلك من خلال فراشة بسيطة، والتي مع تطور الصناعة، غيرت اللون الأبيض لجناحيها إلى اللون الداكن. بدأت هذه الظاهرة بالملاحظة في إنجلترا، حيث تحول أكثر من 80 نوعًا من الفراشات من أزهار كريمية شاحبة إلى أزهار داكنة، وهو ما لوحظ لأول مرة بعد عام 1848 في مانشستر بسبب التطور السريع للصناعة. بالفعل في عام 1895، اكتسب أكثر من 95٪ من العث لونًا داكنًا لأجنحتها. ترتبط هذه التغييرات بحقيقة أن جذوع الأشجار أصبحت أكثر دخانًا، وأصبحت الفراشات ذات الألوان الفاتحة فريسة سهلة لطيور الدج والروبان. حدثت التغييرات بسبب أليلات ميلانيستية متحولة.

تعدد الأشكال المتوازن

يميز تعريف "تعدد الأشكال المتوازن" عدم وجود تحول في أي نسب عددية لمختلف أشكال الأنماط الجينية في مجتمع يعيش في ظروف بيئية مستقرة. وهذا يعني أن النسبة من جيل إلى جيل تظل كما هي، ولكنها قد تتقلب قليلاً ضمن قيمة معينة، وهي ثابتة. بالمقارنة مع تعدد الأشكال الانتقالي المتوازن - ما هو؟ إنها في المقام الأول عملية تطورية ثابتة. I. I. شمالهاوزن في عام 1940 أعطاها أيضًا اسم تغاير الشكل المتوازن.

مثال على تعدد الأشكال المتوازن

من الأمثلة الواضحة على تعدد الأشكال المتوازن وجود جنسين في العديد من الحيوانات الأحادية. ويرجع ذلك إلى حقيقة أن لديهم مزايا انتقائية متساوية. نسبتهم ضمن عدد سكان واحد متساوية دائمًا. إذا كان هناك تعدد الزوجات بين السكان، فقد يتم تعطيل النسبة الانتقائية لممثلي كلا الجنسين، وفي هذه الحالة يمكن تدمير ممثلي أحد الجنسين بالكامل أو استبعادهم من التكاثر إلى حد أكبر من ممثلي الجنس الآخر.

مثال آخر هو فصيلة الدم حسب نظام ABO. في هذه الحالة، قد يكون تواتر الأنماط الجينية المختلفة في مجموعات سكانية مختلفة مختلفا، ولكن في الوقت نفسه، من جيل إلى جيل لا يغير ثباته. ببساطة، لا يوجد نمط جيني يتمتع بميزة انتقائية على الآخر. وفقا للإحصاءات، فإن الرجال الذين لديهم فصيلة الدم الأولى لديهم متوسط ​​عمر متوقع أطول من غيرهم من الجنس الأقوى مع فصائل الدم الأخرى. إلى جانب ذلك، فإن خطر الإصابة بقرحة الاثني عشر في وجود المجموعة الأولى أعلى، لكنها يمكن أن تنثقب، وهذا سيسبب الوفاة إذا تأخرت المساعدة.

التوازن الوراثي

يمكن أن تتعطل هذه الحالة الهشة لدى السكان نتيجة لحدوثها، ويجب أن تحدث بتكرار معين وفي كل جيل. أظهرت الدراسات أن تعدد أشكال جينات الجهاز المرقئ، والذي يوضح فك تشفيره ما إذا كانت العملية التطورية تعزز هذه التغييرات أو، على العكس من ذلك، تتصدى لها، أمر في غاية الأهمية. إذا قمت بتتبع مسار عملية الطفرة في مجموعة سكانية معينة، فيمكنك أيضًا الحكم على قيمتها بالنسبة للتكيف. ويمكن أن تساوي واحداً إذا لم يتم استبعاد الطفرة أثناء عملية الاختيار وعدم وجود عوائق أمام انتشارها.

وتظهر معظم الحالات أن قيمة مثل هذه الجينات أقل من واحد، وفي حالة عدم قدرة مثل هذه الطفرات على التكاثر، فإن كل شيء ينزل إلى 0. ويتم استبعاد الطفرات من هذا النوع في عملية الانتقاء الطبيعي، ولكن هذا لا يحدث. لا يستبعد حدوث تغييرات متكررة في نفس الجين، مما يعوض عملية الإزالة التي تتم عن طريق الانتخاب. ثم يتم الوصول إلى التوازن، ويمكن أن تظهر الجينات المتحولة، أو على العكس من ذلك، تختفي. وهذا يؤدي إلى عملية متوازنة.

أحد الأمثلة التي يمكن أن تصف بوضوح ما يحدث هو فقر الدم المنجلي. في هذه الحالة، يساهم الجين المتحور السائد في حالة متماثلة اللواقح في الموت المبكر للكائن الحي. الكائنات غير المتجانسة تبقى على قيد الحياة ولكنها أكثر عرضة للإصابة بمرض الملاريا. يمكن تتبع تعدد الأشكال المتوازن لجين فقر الدم المنجلي في مناطق انتشار هذا المرض الاستوائي. في مثل هذه المجموعة من السكان، يتم التخلص من الزيجوت متماثلة الزيجوت (الأفراد الذين لديهم نفس الجينات)، ويعمل الاختيار لصالح المتغايرين (الأفراد الذين لديهم جينات مختلفة). نظرًا للاختيار متعدد النواقل الذي يحدث في مجموعة الجينات للسكان، يتم الحفاظ على الأنماط الجينية في كل جيل، مما يضمن قدرة أفضل للكائن الحي على التكيف مع الظروف البيئية. إلى جانب وجود جين فقر الدم المنجلي، هناك أنواع أخرى من الجينات التي تميز تعدد الأشكال. ماذا يعطي هذا؟ الجواب على هذا السؤال سيكون ظاهرة تسمى التغاير.

الطفرات المتغايرة وتعدد الأشكال

يوفر تعدد الأشكال المتغاير عدم وجود تغييرات مظهرية في وجود طفرات متنحية، حتى لو كانت ضارة. ولكن في الوقت نفسه، يمكن أن تتراكم في السكان إلى مستوى عال، والذي يمكن أن يتجاوز الطفرات السائدة الضارة.

عملية تطورية

إن العملية التطورية مستمرة، وشرطها الأساسي هو تعدد الأشكال. ما يعنيه هذا هو القدرة المستمرة على التكيف لسكان معينين مع بيئتهم. الكائنات الحية من جنسين مختلفين والتي تعيش ضمن نفس المجموعة يمكن أن تكون في حالة متغايرة الزيجوت وتنتقل من جيل إلى جيل لسنوات عديدة. جنبا إلى جنب مع هذا، قد لا يكون مظهرهم المظهري موجودا - بسبب الاحتياطي الضخم من التباين الوراثي.

جين الفيبرينوجين

في معظم الحالات، يعتبر الباحثون تعدد أشكال جينات الفيبرينوجين بمثابة مقدمة لتطور السكتة الدماغية. ولكن في الوقت الحالي، تظهر المشكلة التي تكون فيها العوامل الوراثية والمكتسبة قادرة على التأثير على تطور هذا المرض. يتطور هذا النوع من السكتات الدماغية بسبب تجلط الدم في الشرايين الدماغية، ومن خلال دراسة تعدد أشكال جين الفيبرينوجين، يمكن للمرء أن يفهم العديد من العمليات، التي يمكن من خلالها الوقاية من المرض. في الوقت الحاضر، لم يدرس العلماء بشكل كاف الروابط بين التغيرات الجينية ومؤشرات الدم البيوكيميائية. مزيد من البحث سيجعل من الممكن التأثير على مسار المرض، أو تغيير مساره، أو ببساطة منعه في مرحلة مبكرة من التطور.

مرحبًا! هذه مقالة عن أحد مبادئ OOP - تعدد الأشكال.

ما هو تعدد الأشكال

تعريف تعدد الأشكال يبدو مخيفا :)

تعدد الأشكال- هذه هي إمكانية استخدام طرق تحمل نفس الاسم مع نفس أو مجموعات مختلفة من المعلمات في فئة واحدة أو في مجموعة من الفئات المرتبطة بعلاقة الميراث.

كلمة " تعدد الأشكال"قد يبدو الأمر معقدًا - لكنه ليس كذلك. ما عليك سوى تقسيم هذا التعريف إلى أجزاء وإظهار المقصود بالأمثلة. صدقني، في نهاية المقال، سيبدو هذا التعريف لتعدد الأشكال واضحًا لك :)

تعدد الأشكال، إذا ترجم فهو يعني "اشكال عديدة"على سبيل المثال، يمكن للممثل في المسرح تجربة العديد من الأدوار - أو اتخاذ "أشكال عديدة".

الكود الخاص بنا هو نفسه - بفضل تعدد الأشكال، يصبح أكثر مرونة من لغات البرمجة التي لا تستخدم مبادئ OOP.

إذن ما هي الأشكال التي نتحدث عنها؟دعونا أولا نعطي أمثلة ونبين كيف يتجلى تعدد الأشكال في الممارسة العملية، ثم نعود إلى تعريفه.

كيف يتجلى تعدد الأشكال؟

الحقيقة انه إذا لم يكن لدى Java مبدأ تعدد الأشكال، سوف يفسر المترجم هذا على أنه خطأ:

وكما ترى فإن الطرق الموجودة في الصورة تختلف في القيم التي تقبلها:

  • يقبل أولا كثافة العمليات
  • والثاني يقبل خيط

ومع ذلك، نظرًا لأن Java تستخدم مبدأ تعدد الأشكال، فلن يتعامل المترجم مع هذا باعتباره خطأً سيتم اعتبار هذه الأساليب مختلفة:

طرق التسمية هي نفسها مريحة للغاية. على سبيل المثال، إذا كانت لدينا طريقة تبحث عن الجذر التربيعي لعدد ما، فمن الأسهل بكثير تذكر اسم واحد (على سبيل المثال: sqrt()) من اسم منفصل لنفس الطريقة، مكتوبًا لكل نوع:

كما ترون، ليس من الضروري أن نبتكر اسمًا منفصلاً لكل طريقة - ولكن الشيء الرئيسي هو أن نتذكرها! بشكل مريح للغاية.

يمكنك الآن أن تفهم سبب وصف هذا المبدأ غالبًا بالعبارة:

واجهة واحدة - طرق عديدة

يفترض هذا أنه يمكننا ملء اسم واحد (واجهة واحدة) يمكننا من خلاله الوصول إلى طرق متعددة.

طريقة التحميل الزائد

ما أظهرناه أعلاه - عدة طرق بنفس الاسم ومعلمات مختلفة - يسمى الزائد. لكن هذا كان مثالاً على التحميل الزائد للطريقة في فصل واحد. ولكن هناك حالة أخرى - طرق تجاوز الفصل الأصلي.

تجاوز أساليب الوالدين

عندما نرث فئة ما، فإننا نرث جميع أساليبها. لكن إذا أردنا تغيير أي من الأساليب التي ورثناها، فيمكننا تجاوزها. لسنا ملزمين، على سبيل المثال، بإنشاء طريقة منفصلة تحمل اسمًا مشابهًا لاحتياجاتنا، وستكون الطريقة الموروثة "ثقلًا ثقيلًا" في فئتنا.

إن حقيقة أنه يمكننا إنشاء فئة في فئة سليل بنفس اسم الفئة التي ورثناها من الأصل تسمى التجاوز.

مثال

لنتخيل أن لدينا هذا الهيكل:

في الجزء العلوي من التسلسل الهرمي للفئة هو الفصل حيوان. ويورثها ثلاث فئات - قطة, كلبو بقرة.

فئة "الحيوان" لها طريقة "صوتية". تعرض هذه الطريقة رسالة "الصوت" على الشاشة. بطبيعة الحال، لا كلب ولا قطة يقول "الصوت" :) إنهم ينبحون ومواء. وفقا لذلك، تحتاج إلى تعيين طريقة مختلفة للفصول الدراسية قطة, كلبو بقرة- بحيث تموء القطة، وينبح الكلب، وتقول البقرة "مو".

لذلك، في الفئات السليلة نتجاوز الطريقة صوت()، بحيث نستقبل "Meow" و"Woof" و"Moo" في وحدة التحكم.

  • يرجى ملاحظة: قبل الطريقة التي نتجاوزها، نكتب " @تجاوز". هذا يخبر المترجم بأننا نريد تجاوز الطريقة.

إذن ما هو تعدد الأشكال

ومع ذلك، فإن تعدد الأشكال هو المبدأ. جميع الأمثلة الحقيقية التي قدمناها أعلاه هي مجرد أمثلة طرقتنفيذ تعدد الأشكال.

دعونا نلقي نظرة مرة أخرى على التعريف الذي قدمناه في بداية المقال:

تعدد الأشكال- القدرة على استخدام أساليب تحمل نفس الاسم مع نفس أو مجموعات مختلفة من المعلمات في فئة واحدة أو في مجموعة من الفئات المرتبطة بعلاقة الميراث.

يبدو أكثر وضوحا، أليس كذلك؟ لقد أظهرنا كيف يمكنك:

  • إنشاء "طرق بنفس الاسم" في فئة واحدة ("طريقة التحميل الزائد")
  • أو تغيير سلوك أساليب الفصل الأصلي ("تجاوز الطريقة").

كل هذه مظاهر "المرونة المتزايدة" للغات الموجهة للكائنات بسبب تعدد الأشكال.

نأمل أن مقالتنا كانت مفيدة لك. يمكنك الاشتراك في دورات جافا لدينالدينا على .

تعدد الأشكالهي قدرة مادة لها نفس التركيبة على الوجود، بناءً على ظروف خارجية، في عدة أشكال بلورية (تعديلات متعددة الأشكال) بهياكل مختلفة (بالنسبة للمواد البسيطة، تسمى هذه الظاهرة أحيانًا التآصل).

تم اكتشاف ظاهرة تعدد الأشكال لأول مرة من قبل الكيميائي وعالم المعادن الألماني إي. ميتشرليش في عام 1821. تعدد الأشكال واسع الانتشار في الطبيعة وهو أحد الخصائص المميزة للمواد البلورية. وبالتالي فإن التعديلات متعددة الأشكال، التي تختلف في البنية الداخلية، لها خصائص مختلفة. ولذلك، فإن دراسة تعدد الأشكال أمر في غاية الأهمية للممارسة.

تشمل الظروف الخارجية التي تحدد تعدد الأشكال، في المقام الأول، درجة الحرارة والضغط، وبالتالي فإن كل تعديل متعدد الأشكال له نطاق خاص به من درجات الحرارة والضغوط التي يوجد فيها في حالة (توازن) مستقرة ديناميكيًا وخارجها لا يمكن أن يكون مستقرًا، على الرغم من يمكن أن توجد في حالة شبه مستقرة، أي. حالة عدم التوازن.

يوجد الكربون والسيليكون والفوسفور والحديد وعناصر أخرى في تعديلات متعددة الأشكال مختلفة. يمكن أن تختلف الخصائص الفيزيائية للتعديلات المختلفة لنفس المادة بشكل كبير. على سبيل المثال، تختلف تعديلات الكربون التي تتبلور على شكل ألماس (النظام المكعب) أو على شكل الجرافيت (النظام السداسي) بشكل حاد عن بعضها البعض في الخواص الفيزيائية، على الرغم من هوية التركيب. إذا كان التحول متعدد الأشكال مصحوبًا بتغييرات طفيفة في البنية، فإن الخصائص الفيزيائية للمادة تتغير بشكل طفيف. يجب أن تحتوي كل مادة محددة على تعديلين أو ثلاثة أو أكثر من التعديلات متعددة الأشكال. عادة ما يتم الإشارة إلى التعديلات المختلفة بالأحرف اليونانية α, β, γ وما إلى ذلك، حيث تشير الأحرف الأولى عادةً إلى التعديلات المستقرة عند درجات الحرارة المرتفعة.

عندما يتم تحويل تعديل درجة الحرارة العالية إلى تعديل درجة حرارة أقل، عادة ما يتم الحفاظ على الشكل الخارجي الأصلي للبلورات، في حين يخضع الهيكل الداخلي للمادة للتغييرات. يُطلق على هذا الحفاظ على الشكل الخارجي الذي لا يتوافق مع البنية المشكلة حديثًا للشبكة البلورية اسم Paramorphosis. البارامورفوسات معروفة في الطبيعة β -الكوارتز (التماثل الثلاثي) وفقا ل α -الكوارتز (التماثل السداسي)، الكالسيت CaCO 3 (التماثل الثلاثي) على الأراغونيت (التماثل المعيني)، إلخ.

وبغض النظر عن طبيعة التغيرات الهيكلية التي تحدث أثناء التحولات متعددة الأشكال، يتم التمييز بين نوعين منها: التحولات المتناظرة (القابلة للعكس) والتحولات الأحادية (غير القابلة للانعكاس).

التحول العكسي لتعديل واحد إلى آخر، يتم إجراؤه عند ضغط ثابت ودرجة حرارة انتقالية معينة (نقطة)، حيث تكون هذه التعديلات في حالة توازن، أي. مستقرة على قدم المساواة، ودعا enantiotropic. يمكن إظهار ذلك بشكل تخطيطي على النحو التالي:

α ↔ β↔سائل

أولئك. الانتقال α → β هو مضاد للأكسدة. من أمثلة التحولات متعددة الأشكال المتناظرة للمضادات التحويلات بين الأشكال متعددة الأشكال لـ SiO2˸

تعدد الأشكال - المفهوم والأنواع. تصنيف ومميزات فئة "تعدد الأشكال" 2015، 2017-2018.

  • - تعدد أشكال الأفراد

    الأفراد البشريون، الذين لديهم عدد من الخصائص المشتركة، في نفس الوقت ليسوا متطابقين مع بعضهم البعض من حيث صفات الأنواع. إنهم يختلفون عن بعضهم البعض جسديًا وعقليًا واجتماعيًا. هذه الاختلافات هي الطول، ولون الجلد والشعر، ومظهر الفرد، والمشية،... .


  • - التخريب يفضل الحفاظ على الأنواع المتطرفة والقضاء على الأنواع المتوسطة. يؤدي إلى الحفاظ على تعدد الأشكال وتعزيزه.

  • - التمايز بين الإنسانية. الأجناس كتعبير عن تعدد الأشكال الجينية للإنسانية. وحدة الأنواع للإنسانية.

    التمايز بين الأنواع البشرية: منذ ظهور الإنسان العاقل، أصبح جوهره اجتماعيًا وتغير التطور البيولوجي، مما تجلى في ظهور تعدد الأشكال الجيني الواسع. التنوع الجيني على المستوى... .