Circle-icons-typography-ar.svg
هذه الموضوعة تحتاج لتدقيق لغوي أوإملائي. فضلًا ساعد في تحسين هذه الموضوعة بإجراء التسليمات اللغوية المطلوبة. (مايو2020)

في لغات البرمجة كائنية التوجه ، Mixin (أوmixin) هوصنف (حوسبة) class الذي تحتوي على طرق methods لاستخدامها من قبل اصنافclasses أخرى دون حتى تكون الصنف الأصل parent classمن تلك الفئات الأخرى. تعتمد كيفية وصول تلك الفصول الأخرى إلى أساليب mixin على اللغة. يوصف mixin في بعض الأحيان بأنه "مدرج" "included"بدلاً من "موروث" "inherited".

يشجع Mixins على إعادة استخدام الكود ويمكن استخدامه لتجنب غموض الميراث الذي يمكن حتى يسببه الميراث المتعدد (" معضلة الماس ""diamond problem") ، أوللتغلب على عدم دعم الميراث المتعدد في اللغة. يمكن أيضًا اعتبار المزيج كقابلة interfaceمع الطرق المنفذة methods. هذا النمطpattern هومثال لفرض مبدأ انعكاس التبعية dependency inversion principle.

التاريخ

ظهر Mixins لأول مرة في نظام Flavors الموجهة للكائنات في Symbolics (تم تطويره بواسطة Howard Cannon) ، والذي كان نهجًا في اتجاه الكائن المستخدم في Lisp Machine Lisp . الاسم مستوحى من صالون Steve's Ice Cream Parlour في Somerville ، ماساتشوستس:  قدم صاحب متجر الآيس كريم نكهة أساسية من الآيس كريم (الفانيليا والشوكولاتة، وما إلى ذلك) وتمزج في مزيج من العناصر الإضافية (المكسرات، الكوكيز، حلوى، وما إلى ذلك) ويسمى هذا البند على " مزيج ""mix-in"، له تعبير علامة تجارية خاصة في ذلك الوقت. 

تعريف

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

يعمل class صنف mixin كفئة رئيسية، وتحتوي على الوظيفة المطلوبة. يمكن supclass لصنف فرعي حتى ترث أوتعيد استخدام هذه الوظيفة، ولكن ليس كوسيلة للتخصص. عادةً، يقوم المزيج بتصدير الوظيفة المطلوبة إلى child class صنف فرعي ، دون إنشاء علاقة مفردة جامدة "هل هي ""is a". هنا يكمن الاختلاف المهم بين مفاهيم الخلط والميراث ، في أنه لا يزال بإمكان [1]الصنف الفرعي حتى يرث جميع ميزات الصنف الاصل parent class، ولكن، الدلالات عن الفرع "كونه نوعًا""being a kind of" من الاصل parentلا بحاجة بالضرورة إلى تطبيقها.

مزايا

  1. إنه يوفر آلية للميراث المتعدد من خلال السماح لفئات متعددة باستخدام الوظيفة المشهجرة، ولكن بدون الدلالات المعقدة للوراثة المتعددة.
  2. قابلية إعادة استخدام الكود : تكون Mixins مفيدة عندما يرغب المبرمج في مشاركة الوظائف بين الفئات المتنوعة. بدلاً من تكرار نفس الرمز مرارًا وتكرارًا، يمكن ببساطة تجميع الوظيفة المشهجرة في mixin ثم تضمينها في جميع فئة تتطلب ذلك.
  3. يسمح Mixins بالوراثة واستخدام الميزات المطلوبة فقط من الفئة الرئيسية، وليس بالضرورة جميع الميزات من الفئة الرئيسية.

تطبيقات

في Simula ، يتم تعريف classes في block يتم فيها تحديد السماتattributes وmethods وclass initialization معًا ؛ وبالتالي يتم تعريف جميع الmethods التي يمكن استنادىؤها في فئة معًا، ويتم استكمال تعريفdefined الصنف class .

في Flavours ، المزيجmixin هوclass يمكن حتى يرث من class اخر ال slot definitions and methods. لا يحتوي الخليط mixin عادة على كائنات مباشرةdirect instances. بما حتى Flavor يمكن حتى ترث من أكثر من Flavor أخرى، يمكن حتى ترث من واحد أوأكثر من mixins. لاحظ حتى Flavors الأصلية لم تستخدم وظائف عامةgeneric functions..

في Flavors الجديدة (خليفة النكهات) وCLOS ، يتم تنظيم الأساليب في " وظائف عامة ""generic functions". هذه الدوال العامةgeneric functions هي وظائف يتم تعريفها في حالات (methods) متعددة عن طريق class dispatch وmethod combinations.

CLOS وFlavours تسمح mixin methods بإضافة سلوك methodsالحالية :before و:after ،اdaemons الهوامش whoppers والأغلفةwrappers wrapper or a whopper في Flavors. تمت إضافة CLOS :around methods والقدرة على استنادىء الطرق المظللة shadowed methods عبر CALL-NEXT-METHOD . لذلك، على سبيل المثال، يمكن حتى يضيف دفق قفل mixin قفلًاstream-lock-mixin حول methods الحالية classstream . في Flavours ، يمكن للمرء حتى يخط غلافًا أوووبرًا وفي CLOS سيستخدم طريقة :around . يسمح جميع من CLOS وFlavours بإعادة الاستخدام المحوسب من خلال هجريبات الطريقة. :before و:after و:around method هي ميزة لمجموعة الطرق القياسية. يتم توفير هجريبات طريقة أخرى.

مثال على ذلك هومزيج + الطريقة، حيث يتم إضافة القيم الناتجة لكل من الأساليب القابلة للتطبيق لوظيفة عامة حسابيًا لحساب القيمة المرتجعة. يتم استخدام هذا، على سبيل المثال، مع mixin mixin للكائنات الرسومية. قد يحدث للكائن الرسومي دالة عرض عامة. سيضيف mixin الحد إطارًا حول كائن ولديه طريقة حساب عرضه. سيحدد bordered-button حديث bordered-button border حدية للفئة (وهوتعبير عن كائن رسومي ويستخدم مزيج border ) عرضه عن طريق استنادىء جميع طرق العرض القابلة للتطبيق عبر هجريبة + الطريقة. تتم إضافة جميع قيم الإرجاع وإنشاء العرض المدمج للكائن.

في ورقة OOPSLA 90 ، يعيد جميع من جلعاد براخا وويليام كوك تفسير آليات الميراث المتنوعة الموجودة في Smalltalk وBeta وCLOS كأشكال خاصة من ميراث المزج.

لغات البرمجة التي تستخدم mixins

بخلاف Flavours وCLOS (جزء من Common Lisp ) ، بعض اللغات التي تستخدم mixins هي:

  • Ada (من خلال توسيع سجل موجود بعلامات مع عمليات عشوائية في عام)
  • Cobra
  • ColdFusion (يعتمد على الفئة باستخدام ويضم والكائن عن طريق تعيين الأساليب من كائن إلى آخر في وقت التشغيل)
  • Curl (مع Curl RTE)
  • D (يسمى "mixins template" ؛ يتضمن D أيضًا تعبير "mixin" التي تجمع السلاسل ككود. )
  • سهم Dart
  • Factor
  • رائع
  • تفويض JavaScript - الوظائف كأدوار (السمات وMixins)
  • Kotlin
  • less
  • OCaml
  • Perl (من خلال الأدوار في امتداد Moose لنظام كائن Perl 5)
  • سمات " PHP "
  • Magik
  • بايثون
  • Racket( وثائق ميكسين )
  • Raku
  • روبي
  • سكالا
  • XOTcl / TclOO (نظم الكائن المضمن إلى تى سى ال )
  • sass(لغة ورقة أنماط)
  • حديث قصير
  • فالا
  • سويفت
  • SystemVerilog
  • TypeScript ( وثائق mixins )

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

يمكن للغات الأخرى التي لا تدعم mixins دعمها بطريقة مستديرة عبر هجريبات لغة أخرى. C # وVisual Basic. يدعم NET إضافة طرق التمديد على القابلات، مما يعني حتى أي فئة تطبق قابلة مع طرق التمديد المحددة سيكون لها طرق التمديد المتاحة كأعضاء زائفين.

أمثلة

في Common Lisp

يوفر Common Lisp مزيجًا في CLOS (نظام كائن Lisp المشهجر) مشابهًا للنكهات.

object-width هودالة عامة مع وسيطة واحدة تستخدم هجريبة طريقة + . تحدد هذه الهجريبة أنه سيتم استنادىء جميع الطرق القابلة للتطبيق لوظيفة عامة وستتم إضافة النتائج.

(defgeneric object-width (object)
 (:method-combination +))

button فئة مع فتحة واحدة لنص الزر.

(defclass button ()
 ((text :initform "click me")))

هناك طريقة لكائنات زر الفئة التي تحسب العرض بناءً على طول نص الزر. + هومؤهل الطريقة لمجموعة الكيفية التي تحمل نفس الاسم.

(defmethod object-width + ((object button))
  (* 10 (length (slot-value object 'text))))

فئة border-mixin . التسمية مجرد اتفاقية. لا توجد فائقين، ولا فتحات.

(defclass border-mixin () ())

هناك طريقة لحساب عرض الحدود. هنا فقط 4.

(defmethod object-width + ((object border-mixin))
 4)

bordered-button هي فئة يرث من جميع من border-mixin وbutton .

(defclass bordered-button (border-mixin button) ())

يمكننا الآن حساب عرض الزر. استنادىء object-width يحسب 80. والنتيجة هي نتيجة الطريقة المنطبقة الوحيدة: طريقة object-width button الفئة.

? (object-width (make-instance 'button))
80

يمكننا أيضًا حساب عرض bordered-button . استنادىء object-width يحسب 84. والنتيجة هي مجموع نتائج الطريقتين الساريتين: object-width الأسلوب button الفئة وعرض object-width الأسلوب border-mixin الفئة.

84 ? (object-width (make-instance 'bordered-button))

في بيثون

في بيثون ، وSocketServer حدة لديه على حد سواء UDPServer الطبقة وTCPServer الصف. تعمل كخوادم لخوادم UDP وTCP socket ، على التوالي. بالإضافة إلى ذلك، هناك فئتان من mixin: ForkingMixIn وThreadingMixIn . عادة، يتم التعامل مع جميع الاتصالات الجديدة في نفس العملية. عن طريق توسيع TCPServer باستخدام ThreadingMixIn كما يلي:

class ThreadingTCPServer(ThreadingMixIn, TCPServer):
  pass

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

في مثال الاستخدام هذا، توفر المزج وظائف أساسية بديلة دون التأثير على الوظيفة كخادم مأخذ.

في روبي

يعتمد معظم عالم روبي على مزيج من خلال Modules . يتم تطبيق مفهوم mixins في Ruby من خلال include الحدثة الرئيسية التي نمرر عليها اسم الوحدة كمفهمة .

مثال:

 
class Student
 include Comparable # The class Student inherits the Comparable module using the 'include' keyword
 attr_accessor :name, :score

 def initialize(name, score)
  @name = name
  @score = score
 end

 # Including the Comparable module requires the implementing class to define the <=> comparison operator
 # Here's the comparison operator. We compare 2 student instances based on their scores.

 def <=>(other)
  @score <=> other.score
 end

 # Here's the good bit - I get access to <, <=, >,>= and other methods of the Comparable Interface for free.
end

s1 = Student.new("Peter", 100)
s2 = Student.new("Jason", 90)

s1 > s2 #true
s1 <= s2 #false

في JavaScript

الكائن الحرفي extend النهج | The Object-Literal and extend Approach

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

  1. يخلط خصائص مجال النموذجmodel domain مع مجال التطبيقimplementation domain.
  2. عدم مشاركة السلوك المشهجر. تقوم Metaobjects بحل هذه المشكلة عن طريق فصل خصائص المجال domain المحددة للكائنات عن خصائصها الخاصة بسلوكها.

يتم استخدام دالة التمديدextend function لخلط السلوك في:

'use strict';
 
const Halfling = function (fName, lName) {
 this.firstName = fName;
 this.lastName = lName;
 ;

const mixin = {
 fullName() {
  return this.firstName + ' ' + this.lastName;
  ,
 rename(first, last) {
  this.firstName = first;
  this.lastName = last;
  return this;
  
 ;

// An extend function
const extend = (obj, mixin) => {
 Object.keys(mixin).forEach(key => obj[key] = mixin[key]);
 return obj;
 ;

const sam = new Halfling('Sam', 'Loawry');
const frodo = new Halfling('Freeda', 'Baggs');

// Mixin the other methods
extend(Halfling.prototype, mixin);

console.log(sam.fullName()); // Sam Loawry
console.log(frodo.fullName()); // Freeda Baggs

sam.rename('Samwise', 'Gamgee');
frodo.rename('Frodo', 'Baggins');

console.log(sam.fullName()); // Samwise Gamgee
console.log(frodo.fullName()); // Frodo Baggins

امزج Mixin باستخدام ()Object.assign

'use strict';
 
// Creating an object
const obj1 = {
 name: 'Marcus Aurelius',
 city: 'Rome',
 born: '121-04-26'
 ;

// Mixin 1
const mix1 = {
 toString() {
  return `${this.name  was born in ${this.city  in ${this.born `;
  ,
 age() {
  const year = new Date().getFullYear();
  const born = new Date(this.born).getFullYear();
  return year - born;
  
 ;
// Mixin 2
const mix2 = {
 toString() {
  return `${this.name  - ${this.city  - ${this.born `;
  
 ;

// Adding the methods from mixins to the object using Object.assign()
Object.assign(obj1, mix1, mix2);

console.log(obj1.toString()); // Marcus Aurelius - Rome - 121-04-26
console.log(`His age is ${obj1.age()  as of today`); // His age is 1897 as of today

الوظيفة النقية والتفويض القائم على نهج خلط الطيران Flight-Mixin

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

هناك نوعان من أنماط الوظائف الوظيفية يقومان بالعمل بالخدعة دون الحاجة إلى تطبيق طرف ثالث extend .

'use strict';
 
// Implementation
const EnumerableFirstLast = (function () { // function based module pattern.
 const first = function () {
   return this[0]؛
   ,
  last = function () {
   return this[this.length - 1]؛
   ;
 return function () {   // function based Flight-Mixin mechanics ...
  this.first = first; // ... referring to ...
  this.last  = last;  // ... shared code.
  ;
 ());

// Application - explicit delegation:
// applying [first] and [last] enumerable behavior onto [Array]'s [prototype].
EnumerableFirstLast.call(Array.prototype);

// Now you can do:
const a = [1, 2, 3]؛
a.first(); // 1
a.last(); // 3

بلغات أخرى

في لغة محتوى الويب Curl ، يتم استخدام الوراثة المتعددة كاصناف classes مع عدم وجود كائنات قد تنفذ طرقًاmethods. وتضم mixins المشهجرة عن سكينبل ControlUI الصورة وراثة من SkinnableControlUI ، وكائنات قابلة المستخدم المفوضuser interface delegate التي تتطلب القوائم المنسدلةdropdown menus وراثة من StandardBaseDropdownUI classوهذا اسمه صراحة خلطmixin كما FontGraphicMixin ، FontVisualMixin وNumericAxisMixin-of الاصناف classes. أضاف الإصدار 7.0 إمكانية الوصول إلى المخطة بحيث لا يحتاج المزيج إلى حتىقد يكون في نفس الحزمة أوحتىقد يكون مجرد ملخص عام. يُعد مُنشئوالتمويجات المصانع التي تسهل استخدام الوراثة المتعددة multiple-inheritanceدون التصريح الصريح interfaces or mixinsبالقابلات أوالخلطات.[ ]

القابلات والسمات

تقدم Javaثمانية ميزة جديدة في شكل طرق افتراضية للقابلاتdefault methods for interfaces. بشكل أساسي، يسمح بتعريف طريقة method في قابلةinterface مع تطبيق في السيناريوعند إضافة طريقةطريقةmethod جديدة إلى قابلةinterface بعد الانتهاء من إعداد برمجة صنف القابلة interface class. إذا إضافة وظيفة جديدة إلى القابلة تعني تطبيق الطريقة method في جميع صنف class تستخدم القابلةinterface . تساعد الطرق الافتراضية Default methods في هذه الحالة حيث يمكن تقديمها إلى قابلة interface في أي وقت ولها بنية منفذة يتم استخدامها بعد ذلك من قبل الاصناف المرتبطةassociated classes. ومن ثم تضيف الطرق الافتراضية default methodsإمكانية لتطبيق المفهوم بطريقة من النوع المختلطmixin .

يمكن للقابلاتInterfaces المدمجة مع البرمجة الموجهة إلى الجوانب حتى تنتج أيضًا مزيجًا متكاملًا باللغات التي تدعم هذه الميزات، مثل C # أوJava. بالإضافة إلى ذلك، من خلال استخدام نمط قابلة العلامة والبرمجة العامة marker interface pattern, generic programming,وطرق التمديدextension methods ، فإن C # 3.0 لديه القدرة على محاكاة الخلطات. مع الإصدار 3.0 من C # ، تم تقديم طرق التمديدExtension Methods [2] ويمكن تطبيقها، ليس فقط على الاصناف classes ولكن أيضًا على القابلاتclasses. توفر طرق التمديدExtension Methods وظائف إضافية في فصل دراسي موجود بدون تعديل الصنف. ثم يصبح من الممكن إنشاء فئة مساعد ثابتة static helper classلوظائف محددة تحدد طرق التمديدextension methods. نظرًا لأن الاصناف تطبق القابلة (حتى إذا لم تحتوي القابلة العملية على أي طرق أوخصائص لتطبيقها) ، فستلتقط جميع طرق الامتداد أيضًا.

لا يحتاج ECMAScript (في معظم الحالات التي يتم تطبيقها كجافا سكريبت) إلى محاكاة تكوين الكائن عن طريق نسخ الحقول تدريجيًا من كائن إلى آخر. وهو يدعم في الأساس خاصية Trait وmixin تعتمد على تكوين العناصر عبر الكائنات الوظيفية التي تنفذ سلوكًا إضافيًا ثم يتم تفويضها عبر call أوapply على الكائنات التي بحاجة إلى مثل هذه الوظائف الجديدة.

في سكالا

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

trait Singer{
 def sing { println(" singing … ")  
 //more methods
 

class Bird extends Singer

هنا، اختلط Bird في جميع طرقmethods السمةtrait في تعريفه الخاص كما لوكانت صنف Bird قد حددت طريقة الغناء () بمفردها. كما extends يستخدم أيضا ليرث من صنفsuper class ، إذا لم يرق اي صنف superclass في حالة استخدام trait سمة extends وفقط لmixin في سمة traitالأولى. يتم خلط جميع السمات التالية في استخدام الحدثة الأساسية with .

class Person
class Actor extends Person with Singer
class Actor extends Singer with Performer

Scala يسمح بالاختلاط في سمة trait (إنشاء نوع مجهول) عند إنشاء كائن حديث لصنف instance of a class. في حالة كائن من صنف الشخص، لا يمكن لجميع الكائنات الغناءsing. هذه الميزة تأتي ثم استخدام:

class Person{
 def tell { println (" Human ")  
 //more methods
 

val singingPerson = new Person with Singer
singingPerson.sing

في سويفت Swift

يمكن تحقيق Mixin في Swift باستخدام ميزة لغة تسمى التطبيق الافتراضي في ملحق البروتوكولProtocol Extension.

 1 protocol ErrorDisplayable {
 2     func error(message:String)
 ثلاثة  
 أربعة 
خمسة extension ErrorDisplayable {
ستة     func error(message:String) {
سبعة         // Do what it needs to show an error
ثمانية         //...
تسعة         print(message)
10      
11  
12 
13 struct NetworkManager : ErrorDisplayable {
14     func onError() {
15         error("Please check your internet Connection.")
16      
17  

انظر أيضا

  • نوع مجرد
  • نمط الديكور
  • التصميم القائم على السياسة
  • سمة، بنية مماثلة لا تتطلب تكوينًا خطيًا

المراجع

  1. Using Mix-ins with Python نسخة محفوظة 2019-08-13 على مسقط واي باك مشين.
  2. Mix-Ins (Steve's ice cream, Boston, 1975) نسخة محفوظة 2007-10-26 على مسقط واي باك مشين.
  3. Implementing Mix-ins with C# Extension Methods نسخة محفوظة 2017-07-09 على مسقط واي باك مشين.
  4. I know the answer (it's 42) : Mix-ins and C# نسخة محفوظة 2009-12-15 على مسقط واي باك مشين.
  5. ^ Boyland, John; Giuseppe Castagna (26 June 1996). "Type-Safe Compilation of Covariant Specialization: A Practical Case". In Pierre Cointe (المحرر). . Springer. صفحات 16–17. ISBN . مؤرشف من الأصل في 26 أبريل 2020. اطلع عليه بتاريخ 17 يناير 2014.
  6. ^ http://c2.com/cgi/wiki?MixIn نسخة محفوظة 2016-07-09 على مسقط واي باك مشين.
  7. ^ "Working with Mixins in Ruby" (باللغة الإنجليزية). مؤرشف من الأصل في 15 أبريل 2018. اطلع عليه بتاريخ 26 أبريل 2020.
  8. ^ "Re-use in OO: Inheritance, Composition and Mixins - naildrivin5.com - David Bryant Copeland's Website". مؤرشف من الأصل في 28 يناير 2018. اطلع عليه بتاريخ 26 أبريل 2020.
  9. ^ "Archived copy". مؤرشف من الأصل في 25 سبتمبر 2015. اطلع عليه بتاريخ 16 سبتمبر 2015. صيانة CS1: الأرشيف كعنوان (link)
  10. ^ OOPSLA '90, Mixin based inheritance (pdf) نسخة محفوظة 2019-02-14 على مسقط واي باك مشين.
  11. ^ slava (2010-01-25). "Factor/Features/The language". concatenative.org. مؤرشف من الأصل في 17 مارس 2020. اطلع عليه بتاريخ 15 مايو2012. Factor's main language features: … Object system with Inheritance, Generic functions, Predicate dispatch and Mixins روابط خارجية في |ناشر= (مساعدة)
  12. ^ "Mixin Class Composition". مدرسة لوزان الاتحادية للفنون التطبيقية. مؤرشف من الأصل في 26 يوليو2019. اطلع عليه بتاريخ 16 مايو2014.
  13. ^ Mixin classes in XOTcl نسخة محفوظة 2019-01-02 على مسقط واي باك مشين.
  14. ^ Source code for SocketServer in CPython 3.5 نسخة محفوظة 2015-10-24 على مسقط واي باك مشين.
  15. ^ "Mixins, Forwarding, and Delegation in JavaScript". مؤرشف من الأصل في 21 أكتوبر 2019. اطلع عليه بتاريخ 26 أبريل 2020.
  16. ^ "Archived copy". مؤرشف من الأصل في 21 سبتمبر 2015. اطلع عليه بتاريخ 16 سبتمبر 2015. صيانة CS1: الأرشيف كعنوان (link)
  17. ^ "Default Methods (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)". مؤرشف من الأصل في 19 أكتوبر 2019. اطلع عليه بتاريخ 26 أبريل 2020.
  18. ^ Mixins, generics and extension methods in C# نسخة محفوظة 2018-03-03 على مسقط واي باك مشين.
  19. ^ The many talents of JavaScript for generalizing Role Oriented Programming approaches like Traits and Mixins, April 11, 2014. نسخة محفوظة 2017-10-05 على مسقط واي باك مشين.
  20. ^ Angus Croll, A fresh look at JavaScript Mixins, published May 31, 2011. نسخة محفوظة 2020-04-15 على مسقط واي باك مشين.
  21. ^ JavaScript Code Reuse Patterns, April 19, 2013. نسخة محفوظة 2020-04-26 على مسقط واي باك مشين.
  22. ^ "Scala in practice: Traits as Mixins – Motivation" (باللغة الإنجليزية). مؤرشف من الأصل في 27 يوليو2017. اطلع عليه بتاريخ 26 أبريل 2020.

روابط خارجية

  • MixIn في مستودع نمط بورتلاند
  • Mixins في ActionScript
  • يوفر نظام الكائن المشهجر Lisp: نظرة عامة بقلم ريتشارد ب.غابرييل وليندا ديميشيل مقدمة جيدة للدافع لتحديد الفئات عن طريق الوظائف العامة.
تاريخ النشر: 2020-06-01 22:10:59
التصنيفات: الصفحات التي تستخدم علامات المصدر الموقوفة, لغات برمجة كائنية التوجه, قالب أرشيف الإنترنت بوصلات واي باك, صفحات بها مراجع بالإنجليزية (en), صيانة CS1: الأرشيف كعنوان, أخطاء CS1: روابط خارجية, مقالات للتدقيق اللغوي منذ مايو 2020, جميع المقالات التي تحتاج لتدقيق لغوي, مقالات للتدقيق اللغوي منذ 2020, جميع المقالات التي بحاجة لصيانة, مقالات يتيمة منذ أبريل 2020, جميع المقالات اليتيمة, جميع المقالات التي بها عبارات بحاجة لمصادر, مقالات ذات عبارات بحاجة لمصادر منذ مايو 2009, بوابة علم الحاسوب/مقالات متعلقة, بوابة برمجة الحاسوب/مقالات متعلقة, بوابة تقنية المعلومات/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات, صفحات بترجمات غير مراجعة

مقالات أخرى من الموسوعة

سحابة الكلمات المفتاحية، مما يبحث عنه الزوار في كشاف:

آخر الأخبار حول العالم

لفتة إنسانية مؤثرة.. نزيلة في سجون الأردن تلتقي أسرتها لأول

المصدر: مصراوى - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:27:12
مستوى الصحة: 52% الأهمية: 67%

قناة الناس ترد على الشبهات حول "الجزية".. فيديو

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:26:45
مستوى الصحة: 36% الأهمية: 46%

مهرجان مالمو للسينما العربية يكرم النجم حسين فهمى عن مجمل أعماله

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:27:03
مستوى الصحة: 34% الأهمية: 50%

طائرات مسيّرة روسية تستهدف ميناء أوديسا الأوكراني

المصدر: ألشرق الأوسط - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:39
مستوى الصحة: 75% الأهمية: 97%

روسيا تعلن القضاء على 465 جنديا أوكرانيا وتدمر لواء مدفعية

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:26:50
مستوى الصحة: 40% الأهمية: 35%

مقتل مدنيَّين في ضربة صاروخية إسرائيلية على سوريا

المصدر: ألشرق الأوسط - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:21
مستوى الصحة: 76% الأهمية: 88%

FMI ‎يشيد بالمغرب ويمحنه “خط ائتمان مرن” بقيمة 5 ملايير دولار

المصدر: موقع الدار - المغرب التصنيف: مجتمع
تاريخ الخبر: 2023-04-04 03:27:05
مستوى الصحة: 49% الأهمية: 57%

لجنة أممية تحدد مسؤولين بجنوب السودان ضالعين في انتهاكات حقوق الإنسان 

المصدر: صحيفة التغيير - السودان التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:29:23
مستوى الصحة: 52% الأهمية: 57%

النادي الصفاقسي يكتفي بالتعادل في افتتاح البطولة العربية

المصدر: جريدة المغرب - تونس التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:30:57
مستوى الصحة: 59% الأهمية: 63%

المنتخب التونسي لكرة اليد: ود امام الارجنتين و اليابان

المصدر: جريدة المغرب - تونس التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:09
مستوى الصحة: 52% الأهمية: 51%

الجزيري خارج حسابات الزمالك

المصدر: جريدة المغرب - تونس التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:21
مستوى الصحة: 58% الأهمية: 69%

وفاء عامر عن دورها فى الكتيبة 101: شرف كبير وأهالى سيناء تاج على الرأس

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:26:31
مستوى الصحة: 41% الأهمية: 44%

القاهرة الإخبارية: تشديد أمنى فى محيط إقامة ترامب

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:27:07
مستوى الصحة: 43% الأهمية: 45%

العراق ضيف شرف معرض تونس الدولي للكتاب

المصدر: جريدة المغرب - تونس التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:05
مستوى الصحة: 56% الأهمية: 70%

روسيا تهدد بـ«القسوة» مع أوروبا «المعادية»

المصدر: ألشرق الأوسط - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:37
مستوى الصحة: 80% الأهمية: 100%

الهلال يدعو الحكومة السودانية لإدانة أحداث استاد القاهرة العنصرية

المصدر: صحيفة التغيير - السودان التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:29:20
مستوى الصحة: 45% الأهمية: 52%

"رادار المرور" يلتقط 1243 سيارة تسير بسرعات جنونية خلال 24 ساعة

المصدر: اليوم السابع - مصر التصنيف: غير مصنف
تاريخ الخبر: 2023-04-04 03:26:56
مستوى الصحة: 42% الأهمية: 43%

ملابس العيد باهضة جدا

المصدر: جريدة المغرب - تونس التصنيف: سياسة
تاريخ الخبر: 2023-04-04 03:31:16
مستوى الصحة: 59% الأهمية: 59%

تحميل تطبيق المنصة العربية