Рефлексија (програмирање) — разлика између измена

Садржај обрисан Садржај додат
м →‎Литература: претварање ISBN веза у шаблон
Autobot (разговор | доприноси)
м razne izmene; козметичке измене
Ред 1:
{{Парадигме програмирања}}
 
У [[Информатика|информатици]], '''рефлексија''' је способност неког [[Рачунарски програм|рачунарског програма]] за испитивање (види [[тип интроспекције]]) и измену своје структуре и понашања (конкретно вредности, мета-податке, особине и функције) у [[Рантајм|рантајмурантајм]]у.<ref>{{Cite web |url=http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf |title=A Tutorial on Behavioral Reflection and its Implementation by Jacques Malenfant et al. |access-date=15. 01. 2016 |archive-url=https://web.archive.org/web/20160222051331/http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf |archive-date=22. 02. 2016 |url-status=dead |df= }}</ref>
 
== Историјска позадина ==
Најранији рачунари су програмирани на матерњем [[Асемблер|асемблер језику]], који су били по себи одражавани као ова оригинална архитектура која може да се програмира дефинисањем инструкција као и коришћењем података [[само-модификујући код|само-модификујућег кода]]. Као програмирање се преселило у језике високог нивоа, као што је C, ово одражава способност несталу (ван [[Малвер|малверамалвер]]а) до програмских језика са одразом уграђеним у њихове типове система појава.
 
[[Брајан Кантвел Смит]]ова 1982 докторска дисертација<ref>[http://hdl.handle.net/1721.1/15961 Brian Cantwell Smith, Procedural Reflection in Programming Languages, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, PhD Thesis, 1982.]</ref><ref>{{Cite web |url=http://publications.csail.mit.edu/lcs/specpub.php?id=840 |title=Brian C. Smith. Reflection and semantics in a procedural language. Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Mass., January 1982. |access-date=15. 01. 2016 |archive-url=https://web.archive.org/web/20151213034343/http://publications.csail.mit.edu/lcs/specpub.php?id=840 |archive-date=13. 12. 2015 |url-status=dead |df= }}</ref> увела је појам рачунарске рефлексије у [[Програмски језик|програмским језицима]], као и појам [[мета-кружни преводилац]] као компонента [[3-Lisp]].
Ред 13:
У објектно оријентисаним програмским језицима као што су [[Јава (програмски језик)|Јава]], рефлексија омогућава ''преглед'' класа, интерфејса, поља и метода у току рада не знајући имена интерфејса, поља, метода компилације. Она такође омогућава ''примерну'' нових објеката и ''позивање'' метода.
 
Рефлексија се такође може користити за адаптирање датог програма у различитим ситуацијама динамике. На пример, размислите апликацију која користи две различите класе <code>X</code> и <code>Y</code> наизменично да обављају сличне операције. Без рефлексије оријентисаног програмирања, апликација може бити тешко кодирана да позове метод имена класе<code>X</code> и класе <code>Y</code>. Међутим, користећи рефлексија оријентисану парадигму програмирања , апликација може бити дизајнирана и написана да искористи рефлексију у циљу изазивања метода у класама <code>X</code> и <code>Y</code> без хард-кодирања имена метода. Рефлексија-оријентисано програмирање скоро увек захтева додатно знање, оквир, релационо мапирање, а објекат релевантност како би се искористио више генеричко извршење кода.
 
Рефлексија се често користи као део [[тестирање софтвера|тестирања софтвера]], као што је за стварање Рантајма/примена [[пробни објекти|пробних објеката]].
Ред 27:
* Процените стринг као да је изјава изворног кода у рантајму.
* Креирајте нови тумач за језик бајтока да да нови смисао или циљ за програмирање конструкта.
Ове карактеристике могу се реализовати на различите начине. У [[МОО]]-у, рефлексија представља природан део свакодневног програмирања идиома. Када се зову глаголи (методе), разне варијабле као што је ''глагол'' (име глагола који се зове) и ''ово'' (предмет на који се назива глагол) су насељени да дају контекст позива. Безбедност обично управља приступом
саговорничким штос програмно: Како је код ''саговорника'' () списак начина на који се тренутни глагол на крају зову, извођење тестова саговорника ()[1] (команде позивају оригиналног корисника) омогућава да се глагол заштити од неовлашћеног коришћења.
 
Ред 232:
* Само-модификујући код
* Само-домаћински
* [[Парадигме програмирања|Парадигме програмирања<br />]]
* Листа рефлектујућих програмских језика и платформи
* Огледало (програмирање)
Ред 241:
== Литература ==
* Jonathan M. Sobel and Daniel P. Friedman. [https://web.archive.org/web/20100204091328/http://www.cs.indiana.edu/~jsobel/rop.html ''An Introduction to Reflection-Oriented Programming''] (1996), Indiana University.
* {{citeCite book| ref= harv|last1last=Forman|first1first=Ira R.|last2=Forman|first2=Nate|title=Java Reflection in Action|location=|publisher=|year=2005|idisbn={{ISBN|978-1-932394-18-4}}|pages=}}
* {{citeCite book| ref= harv|last1last=Forman|first1first=Ira R.|last2=Danforth|first2=Scott|title=Putting Metaclasses to Work|location=|publisher=|year=1999|idisbn={{ISBN|978-0-201-43305-0}}|pages=}}
 
== Спољашње везе ==