Kötési tulajdonságok (informatika)

From Wikipedia, the free encyclopedia

Remove ads

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

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]
Remove ads

Megvalósítása

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]

Remove ads

Eredménykontextus

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

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]

Remove ads

Jegyzetek

Fordítás

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads