Kontentke ótiw

Ayna (programmalastırıw)

Wikipedia — erkin enciklopediya

Kompyuter programmalastırıwda ayna — bul strukturası introspekciyalanatuǵın obyektkten tolıq ajıratılǵan refleksiya mexanizmi. Bul, mısalı Javadaǵı dástúrli refleksiyaǵa qarama-qarsı, bunda obyekt óziniń metodları arqalı (mısalı, getClass()) introspekciya etiledi.

Aynalar inkapsulyaciya, stratifikaciya hám ontologiyalıq sáykeslik sıyaqlı qásiyetlerge ámel etedi[1].

Artıqmashılıqları

Refleksiya mexanizmin obyektlerdiń ózinen ajıratıw bir neshe payda artıqmashılıqlarǵa jol ashadı:

  • Obyekttiń interfeysi buzılmaydı, sol sebepli refleksiyalıq metodtı qayta anıqlaw arqalı refleksiyanı buzıw qáwpi joq.
  • Hár túrli ayna sistemaları bolıwı múmkin.
  • Ayna sistemasın tolıq alıp taslawǵa boladı (bul potencial optimallastırıwlarǵa múmkinshilik beredi).
  • Ayna sisteması aralıqtaǵı kodta isley aladı, sebebi ol belgili bir mashinaǵa baylanıslı emes.

Aynalardı paydalanatuǵın tiller

  • Dart, óziniń reflect funkciyası arqalı.
  • Inko,[2] óziniń std::mirror moduli arqalı.
  • Rubinius (Ruby implementaciyası), óziniń Rubinius::Mirror.reflect metodı arqalı[3].
  • Scala[4]
  • Swift, óziniń reflect funkciyası arqalı.

Derekler

  1. Gilad Bracha and David Ungar, "Meta-level Facilities of Object-Oriented Programming languages"
  2. «Frequently Asked Questions».
  3. «Rubinius/Mirror.rb at master · rubinius/Rubinius».
  4. «Environment, Universes, and Mirrors».