Kötési tulajdonságok (informatika)

A Wikipédiából, a szabad enciklopédiából

A kötési tulajdonságok az informatikában egy konkurens programtervezési minta, ami azt jelenti, hogy több megfigyelőt kombinálnak ahhoz, hogy biztosítsák különböző objektumok tulajdonságainak szinkronizálását, vagy koordinálását. Ezt a technikát először Victor Porton írta le.[1][2]

Összehasonlítás az aspektusorientált programozással[szerkesztés]

Az aspektusorientált programozás kölcsönös tulajdonságainak alternatívájaként javasoltak a kötési tulajdonságok. A LibPropC++ C++ könyvtár tartalmazza.[3]

A LibPropC++ gyengeségei a kötési tulajdonságokkal:

  • Használata nem átlátszó, mivel azt igényli, hogy a kapcsolt tulajdonságokat közönséges tulajdonságokként kell deklarálni, és hozzáférési metódusokat kell biztosítani hozzájuk.
  • A kötési tulajdonságok nem helyettesítik a metódushívásokat.
  • Nincs együttműködési naplózás.[3]

Megvalósítása[szerkesztés]

Kétféle kötési tulajdonsága van, az egyirányú és a kétirányú. Egyirányút csak akkor szabad használni, ha az egyik tulajdonság csak olvasható, egyébként a kétirányút kell.[2][3]

A végtelen ciklusokat a jel blokkolásával, vagy az új és a régi értékek összehasonlításával, esetleg a fölösleges értékadások kiiktatásával lehet elkerülni.[2][3]

Különböző típusok között típuskonverzióval lehet kötési tulajdonságokat létrehozni. Ha transzformációkra van szükség, akkor a transzformációkat típuskonverzióként kell kezelni.[2][3]

Eredménykontextus[szerkesztés]

A tulajdonságok automatikusan szinkronizálódnak. A könyvtári hívások között az EqualityConstraints invariánsban megadott feltételeknek kell megfelelniük. A változások követése erőforrásokat igényel.

Példa kódok[szerkesztés]

Egyirányú kötés:

bind_multiple_one_way(src_obj, src_prop, dst_objs[], dst_props[])
{
  for (i, j) in (dst_objs, dst_props)
  {
    bind_properties_one_way(src_obj, src_prop, i, j);
  }
}

[2]

Kétirányú kötés (C++-ban):

// In this pseudo-code are not taken into the account initial values assignments
bind_two_way(prop1, prop2)
{
  bind(prop1, prop2);
  bind(prop2, prop1);
}

[3]

A kötés megvalósítása:

on_property_change(src_prop, dst_prop)
{
  block_signal(src_obj, on_property_change);
  dst_prop := src_prop;
  unblock_signal(src_obj, on_property_change);
}

[3]

Jegyzetek[szerkesztés]

  1. Binding Properties. Cunningham & Cunningham . Cunningham & Cunningham. (Hozzáférés: 2015. február 4.)
  2. a b c d e Porton, V.: Binding together Properties of Objects: Extreme Code Software. Ex-code . Ex-code. [2017. június 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 1.)
  3. a b c d e f g Evermann, J., The Association Construct in Conceptual Modelling - An Analysis Using the Bunge Ontological Model, Wellington, New Zealand: School of Information Management, Victoria University

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Binding properties pattern című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.