Příklady na pravděpodobnost 2
29. června 2010 v 14:19 | MáŠa
|
Matematika
(jde o poznámky ze cvičení; editor na Blogu mívá problémy s indexací, tak možná některé horní / dolní indexy budou vypsány jako normální text :( )
Komunikační kanál
- Komunikační kanál s abecedou S(n>=2); zpráva = k-tice znaků z S. Pravděpodobnost, že zpráva neobsahuje symbol s z S?
- Abych to spočetl, musím vědět, co počítám a jak je to definované. Musím si ujasnit, co jsou elementární jevy omaga; omage = {všechny možné jevy} = {všechny k-tice znaků z S}
- 2. věc; mě zajímají různé jevy, i ne, to vyjadřujeme pomocí množiny, která obsahuje všechny možné množiny a podmnožiny zpráv - všechno, co nás zajímá z hlediska rozhodování; A = {B|B leží v omega}
- 3. nejdůležitější věcí je pravděpodobnost, kterou zatím můžeme chápat tak, že vezme libovolný jev a přiřadí mu číslo z intervalu <0;1>
- toto je pravděpodobnostní prostor (omega, A, P); B leží v A; P(B) = ?; když omega je konečná množina -> Laplaceova definice P(B) = |B| / |omega|, tj. počet příznivých ku počtu nepříznivých
- selhává to, když prvky nejsou stejně pravděpodobné a když |omega| = nekonečno
- v našem příkladu zavedeme předpoklad, že všechny zprávy jsou stejně pravděpodobné
- P(B) = (n-1)^k / n^k = ((n-1)/n)^k
- když by ty zprávy nebyly stejně pravděpodobné, musel bych ty pravděpodobnosti znát
Problém rytíře de Méré
- A... při 4 hodech kostkou padne aspoň 1x 6. B... při 24 hodech 2 kostkami padne aspoň 1 dvojice kostek
- |omega a| = 64 - házím 4 kostkami, na 1. může padnou 1-6, čili 6 možností, na 2. může padnou 1 až 6 atd.
- |omega b| = (6^2)^24 možných výsledků
- |A| ... počet příznivých jevů = včechny čtveřice, kde je právě 1 + všechny, kde jsou právě 2, ...
- |negA| = 5^6 => P(A) = 1 - (5/6)^4 = 0,518
- |negB| = 35^24 => P(B) = 1 - (35/36)^24 = 0,491
Výherní los
- Výherní los s 10 políčky, ta políčka jsou zamazaná a my stíráme; jsou zde 3 druhy symbolů; 2x V jako výhra, 2x P jako prohra a 6x nic. Cena losu je 60 Kč. Výhra je 300 Kč, když setře oba 2 V dřív, než nějaký P. Koupili bychom si los?
- Zde nehrajou žádnou roli prázdná políčka, ty nemusíme uvažovat
- vítězná sekvence je pouze 1 V V P P; pravděpodobnost výhry je P(A) = 1/?
- finta: představíme si, že všechny symboly jsou jiné; existuje 4! způsobů, jak je uspořádat; P a V nerozliším V1 V2 P1 P2 či V2 V1 P2 P1; těch je 2! a těch taky => 4! / (2!*2!) = 6 = |omega|
- P(A) = 1/6
- druhý způsob: Vybírám pozice pro 1 z těch symbolů
- V umístím (4 nad 2) způsoby
- 1/6
- 300/6 = 5; los není výhodný koupit
- střední hodnota výhry je výhra* její pravděpobnost + nevýhra* její pravděpodobnost
- 300 1/6 + 0 5/6 = 50 < 60
- nebo: střední hodnota zisku: 240 1/60 + (-60) 5/6 = -10 <- ztráta 10
Kontrola jakosti
- Vyrábíme m výrobků z M. Mezi výrobky je K vadných. Jaká je pravděpodobnost, že ve výběru bude k vadných? Je to výběr bez vracení. Při velkých M a malých m by bylo jedno, jestli je to s vracením nebo ne
- |omega| = (M nad m); |Ak| = (K nad k)*(M-k nad m-k)
- P(Ak) = |Ak| / |omega| <- tento způsob výběru má hypergeometrické rozdělení
Primární klíč v databázi
- V databázi, v níž je 150 studentů, chceme vytvořit primární klíč. Jaká je pravděpodobnost, že 150 studentů lze očíslovat náhodně vybranými čísly?
- omega = {150-tice čísel 0, ... 999}
- A = {všechny 150-tice nazvájem různých čísel}; P(A) = (1000 * 999 * ...)/1000150
- vzal jsem 150tici, na 1. pozici jsem mohl dát cokoli, ... ; podíl variací bez a s
- P(A) = součin(0,149) z (1000-k) / součin(0,149) z 1000 = součin(0,149)z (1- k/1000) = součin(0,149) z ek/-1000 což je přibližně e-k/1000 = ...
Stejný den narození
- Pravděpodobnost, že 2 fotbalisti na hřišti se narodili ve stejný den v roce. D = 365; zde se předpokládá, že každý den je stejná pravděpodobnost narození
Vadné výrobky
- 20 výrobků, 3 jsou vadné a 17 bez vady; při sekvenčním procházení najít ty vadné. A... Pravděpodobnost, že nebudeme muset prohlédnout více jak 17 výrobků; B... budeme muset prohlédnout právě 17 výrobků
- |omega| <- všech možných způsobů prohlížení z 20 výrobků
- |omega| = 20! / (17! 3!) <- podělím to sekvencema, které jsou pro mě nerozlišitelné
= (20 nad 3) <- jakoby vybírám pozice pro ty vadný
- P(A) = ((17 nad 3)+1) / (20 nad 3) ; ta jedna, když nebudou vůbec
- P(B) = (1 + (16 nad 2))/(20 nad 3) = 0,106 ; to, že je to méně, můžeme vědět díky tomu, že B=>A
Ruby a líce
- Stejný počet R a L (rub a líc). Házíme 2n-krát mincí, n>=1. Zajímá nás jev An... padne n R, tedy i n L.
- P(An) = (2n nad n) / 22n
- |omega| = 22n
- |A| = (2n nad n)
- tedy pro n=1 P(An) = 0,5, pro n= 10 P(An) = 0,176, ...
Parodie na vuvuzelu
27. června 2010 v 13:42 | MáŠa
|
Hustý videa & Vtipné klipy
Rok 2010. Afrika. Světový šampionát ve fotbale. A vuvuzela. Trubka, kterou tisíce fanoušků během zápasů používali a troubili na ně. A s tím související řada kritik, že by se vuvuzely měly zakázat, protože to lidi akorát irituje.





I v devatenácti může být člověk pipinka
23. června 2010 v 20:49 | MáŠa
|
Úvahy & Názory & Postřehy
Normálně jsem si už musel uložit jednu diskusi, kdy jeden týpek trošku šil do jedné devatenáctileté holky, co furt na Facebooku píše statusy, ve kterých není milá na kluky, kolem kterých se nějak pletla. Jednou v roce 2009 jsem s touto dívkou byl na schůzce, tak jsem sám zmatený, jestli se to týká i mě, a uráží mě to. Ještě než bude následovat přepis, tak bych k této holčině uvedl nějaké informace (v kurzívě).
Zaprvé vzhled. Takový průměr. Není ošklivá, ale hezčích holek je také dost. Za druhé mozek. Jde o takovou intelektuálku, která do společnosti moc nechodí. Když jsem se s ní přes Internet seznámil, furt mi psala o různých klucích, co s nimi něco měla a kritizovala na nich kde co, až to člověka děsilo. Dělala ze sebe kdo ví jakého borce, kterému jde o vztah, a z kluků, co se nějak ne a ne vyjádřit, jestli ji fakt chtěj, dělala oslíky. A tak... Prostě než jsem se rozhodl, že se o druhou schůzku už snažit nebudu, nezapůsobila kdo ví jak. Těch chyb bylo i u ní dost.
Tak a teď konečně k těm jejím příspěvkům, které mě dostávaj:
ona 23. 6 ve statusu: Ať si všichni nafoukaní blbci bez uznání vymáchají co nejdříve huby v bahně!
Jiří: to už jsem zkoušel a nepomáhá mi to
ona: Jiříku, toto není mířeno na tebe ale na někoho, koho za boha nesnáším.
Jiří: však já jen tak :-)
ona: Když někomu něco nepřeji, tak naplno. A v tomhle radši není dobré odlehčovat situaci.
David: bla bla bla bla
ona: Jdi se nudit jinam a komentovat své přátele.
David: tebe mam taky mezi prateli takze budu komentovat co uznam za vhodne :) :-P
ona: Jenomže já tě tu mám jen ze známosti, nemám tě jako kamaráda, takže si nepřeji, abys mi ty cokoliv komentoval, nestojím o to.
David: tak to mas blbe protoze mi to tezko muzes zakazat :))) si me odeber s pratel a mas to
ona: Starej se o sebe a zapomeň na mě, alespoň budu mít pokoj.
David: zkus napsat do Brava, mozna tvuj problem vyresi
ona: Jsi ubohej, jedině, že by tě zabili. To by vyřešilo všechno.
David: :-D doufam ze se ostatni bavi zde jako ja
Pavel: Jen do sebe:-)
David: pozor ona je ve vztahu :D (o den dříve si dala, že je ve vztahu s někým, kdo bydlí nejmíň o 150 km dál od ní)
ona: hmmm .... A co je ti do toho, ty jsi taky a nikomu to necpu...
Jindra: POZOR ňákej David s měkkým hmm nechtěl bych ! ... A příjmení ??? :) HMMM pozor na něj DEBIOLIT na tebe a že se prej i baví :) To jsme rádi jen kdyby jsi nebyl trapnej jako schody ve výtahu tak jsi jdi hrát napíseček a dej nám svatej klid :) Aloha (Jindra je podle Facebooku ten její přítel)
Pavel: POZOR! Píše Jindřich s dvěma měkkýma :-D
ona: Jak se sem najednou ozývají ti, o které nikdo nestojí a kteří by jinak nekomentovali :))
Jindra: - a - je + takze i a i =Y :) :D
Pavel: Lidská blbost nejde nekomentovat..
ona: Hezky Pavle, myslím si i já svoje a komentovat nemusím :P
Jindra: ještě řekni že ty jsi uplně normální :) :P
David: hlavne se to neda lecit :) proste jsou takovy, hezky vecer
ona: To říká ten pravý, tobě raději nic nepřeji. Alespoň tu bude klid, když jsi se rozloučil...
ona 23. 6 ve statusu: Pryč s (h)ovády :D
ona 20. 6.: Od té doby co mám pokoj od jisté věci, je mi čím dál tím lépe :))) :D
ona 18. 6.: Dobrou noc, mějte se a smějte se vy hodní a milí :)) Ostatní ať si třeba natlučou :D
ona 17. 6. : Konečně nějaká tvář, kterou po dlouhé době ráda vidím :))
ona 16. 6.: Když má člověk zase naději, přijde o ni vždycky stejně :(
ona 15. 6.: Tak já nevím...
ona 10. 6.: Konec s namyšlenými blbečky, nikdy na viděnou....:)) A JE TICHO
ona 6. 6.: Nikdy nepřejde všechna zlost a jiné slovo než pokrytecký hajzl mě v tuhle chvíli skutečně nenapadá, myslete si všichni, co uznáte za vhodné...je mi to totiž úplně jedno
ona 6. 6.: DO JEDNOHO, IDIOTI ! Nevím, co si o tom už myslet, všechno stejné....
ona 6. 6. : Já už na to kašlu :D
ona 2. 6.: Nějak se rozmáhá zájem-nezájem, tak asi přitvrdím s upřímností a nejen s ní :)))
ona 17. 5.: Po pozvání na večeři blízkou osobou, opět pokračování s plným žaludkem :))
ona 16. 5.: :(
ona 11. 5.: Někdy mě mrzí takových věcí, co se nejdou vrátit ani napravit, až se mi z nich chce brečet...
ona 11. 5.: Čím dál více ztracená a jde to stále více ke dnu...děkuji... Hold si člověk něco přeje, ale když je od toho kousek, stejně to uteče i kvůli banalitě pryč...
ona 11. 5.: Bída, bída s nouzí....
ona 9. 5.: Dnes je to rok...
ona 7. 5.: Tento rok intenzivní odér. Všichni tady smrdí, jako staré kur**.
ona 2. 5.: Proč být jiný, když jsou lidi stejně svině...
ona 2. 5.: Večer upřímnosti, pokud má ještě někdo něco na můj účet, sem s tím. Teď je ta správná doba...
ona 23. 4.: The End...:(
ona 10. 4.: Neposílejte mi prosím ty kraviny typu dárek, žádost do farmville apod. Díky...
ona 4. 4.: Někdy mne přístup, lhostejnost nebo zabržděnost lidí už ani neudivuje...to mi rovnou vlezte "na hrb" :-D
ona 2. 4 a 30. 3.: :(
ona 24. 2.: Někdo musí vyzkoušet, kudy cesta nevede.
ona 18. 2. (a to mě z dnešního pohledu dostalo): Většina lidí sem píše úplné "slinty"
ona 24. 1.: Ach ti chlapi..
Příklady na pravděpodobnost
20. června 2010 v 10:51 | MáŠa
|
Matematika
Kostka
- Házíme 3 kostkami. Jaká je pravděpodobnost, že součet puntíků je přesně 5.;
- Vyhovuje 3+1+1, 1+3+1, 1+1+3, 2+2+1, 2+1+2, 1+2+2
- Počet příznivých jevů je tedy 6
- Počet všech jevů?
- na 1. kostce může padat 1 až 6, na té druhé taky, na 3. taky
- P(A) = 6 / 6^3 = 1/6^2 = 1/36
Rození dětí
- Pravděpodobnost narození chlapce je 0,514. Narodilo se 10 dětí v porodnici. Jaká je pravděpodobnost, že žádným dítětem nebyl chlapec?
- není chlapec - P = 0,486 => 0,48610
- A pravděpodobnost aspoň 1 chlapce? Využijeme doplňkový jev: P = 1 - 0,48610
- teď to samé jen zapíšeme lépe:
- A ... nenarodí se ani jeden chlapec
- Ac... narodí se aspoň 1 chlapec
- P(A) = 0,486
- P(A^c) = 1 - P(A) = 1 - 0,486
- Jaká je pravděpodobnost, že se jich narodí nejvýše 2? (z 10)
- A0 ... narodí se 0 chlapců
- A1 ... narodí se 1 chlapec
- A2 ... narodí se 2 chlapci
- P(B) = P(A0) + P(A1) + P(A3) = P(sjednocení všech Ai) ; jde to napsat jako součet, protože ty jevy jsou disjunktní
- P(A0) je v minulém příkladu = 0,486^10
- P(A1) = že se narodí 1 chlapec a 9 holčiček = 0,486^9 * 0,514* 10 <- ta 10 je tu, protože je jedno, v jakém to bude pořadí, čili abychom neuvažovi jen jedno konkrétní uspořádání
- P(A2) = 0,4866 * 0,512 * 45
- 45 dostaneme jako (10 nad 2)
- pravděpodobnost, že se z n dětí narodí k chlapců: P(k) = (n nad k)* 0,514^k * (1 - 0,514)^(n-k)
Mince
- 2 mince; A ... na první padne rub, B ... na 2. padne líc, C ... na obou micních padne rub nebo obou líc
- je každá dvojice jevů nezávislá?
- jsou nezávislé?
- A a B jsou nezávislé, protože P(A) = 1/2, P(B) = 1/2, P(A průnik B) = 1/4, P(A průnik B) = P(A)*P(B)
- je P(A průník C) = P(A) * P(C) ?
- 1/4 = 0,5* 0,5 - OK => jsou nezávislé
- pro B,C je to stejné
- čili po 2 nezávislé ty věci jsou
- teď jestli je to nezávislé celé, tedy jestli P(A průnik B průnic C) = P(A)* P(B)* P(C)?
- ten velký průnik je 0
- tamten součin dá 1/8
- tedy nejsou nezávislé
Náhodná veličina
- Mince: množina jevů omega={w1 - padne rub, w2 - padne líc}. Najděte 2 různé náhodné veličiny. Najděte příklad
- např.: X(w1) = 0, X(w2) = 1
- nebo X(w1) = 1, X(w2) = 2)
- i toto je náhodná veličina : Z(w1) = 0, Z(w2) = 0; odpovídá to definici
Náhodná veličina 2
Náhodná veličina X je: X(w1) = 1, X(w2) = 2, ... X(w6) = 6; Je taková náhodná veličina měřitelná vzhledem k A?
- Odpověď: Ne. Napoř. pro c = 5; větší než w5 je w6, ale v té sigma algebře samo w6 není
Náhodná veličina 3
- Máme najít náhodné veličiny, že měřitelné vzhledem k té sigma algebře budou
- např. S: S(wi) = 1 <- všem číslům přiřadí 1
- nebo Z: Z(w1) = 1, Z(w2) = 1, Z(w3) = 2, Z(w4) = 2, Z(w5) = 2, Z(w6) = 2
- mezi 1 a 2 nesmí být žádný předěl, abychom tam nemohli mezi něco dát
- těm všem jevům v jedné kombinaci v A musí být přiřazeno prostě stejné číslo
Příklady na OOP v PHP - Vícero konstruktorů ve stejné třídě
18. června 2010 v 21:43 | MáŠa
|
PHP, Apache
V tomto článku jen drobně navážeme na články:
Přečíst si tyto články ale není nutností.
O co jde? Máme třídu, ve které chceme míti více konstruktorů - např. bezparametrový a s 2 parametry. Ukázkový kód následuje:
<?php
class Hlaska{public $id;
public $text;
public function __construct(){$args=func_get_args();
$pocet=func_num_args();
switch($pocet){case 0:
$this->bezparametrovy();
break;
case 1:
$this->jedenParametr($args[0]);
break;
case 2:
$this->dva($args[0],$args[1]);
break;
default:
die('blbost');break;
}
}
public function bezparametrovy(){print 'bez parametru'.'<br >';
}
public function jedenParametr($a){print '1: '.$a.'<br />';
}
public function dva($a,$b){print '2: '.$a.', $b'.$b.'<br />';
}
}
A volání:
new Hlaska();
new Hlaska('parametr');new Hlaska('jedna','dva');Pokud bychom chtěli ještě rozlišovat typy vstupních atributů, šlo by využít např. funkci gettype(). Případně get_class()
Úvod do operačního výzkumu
18. června 2010 v 17:06 | MáŠa
|
Spíše naučně & Zajímavosti
- pro operační výzkum je charakteristické používání tzv. modelů
- vyberou se jen ty nejdůležitější vlastnosti
- zkoumání modelu lze dělat mimo modelovaný kus světa
- pak musí být možné přenést závěry do reálného světa
- fyzikální model - zmenšená kopie modelovaného objektu
- matematický model - modelovaná část pomocí matematických vztahů
- vyhodnocovací modely - pro výpočet neznámých veličin z veličin známých - často to jsou vzorce či rovnice
- optimalizační modely - pro hledání nejlepšího řešení
- simulační modely - čas modelovaného systému je zobrazen jako čas v modelu
- k simulaci náhodných dějů se používá metoda Monte-Carlo, tj. simulační experiment se mnohokrát opakuje a výsledky se vyhodnotí statistickými metodami
- teorie front - řeší problémy časového nesouladu mezi požadavky na nějakou službu a možností tuto službu poskytovat; požadavky mnohdy vznikají náhodně a nekoordinovaně a čekají na obsluhu, jejíž trvání může být rovněž náhodné
- teorie zásob - řeší problém, jak doplňovat zásoby tak, aby náklady s tím spojené byly minimální
- teorie rozvrhování - zabývá se přidělováním práce tak, aby všechny práce byly dokončeny včas nebo aby se minimalizovalo zpoždění
- úkolem optimalizačních úloh je najít nejlepší přípustné řešení
- obvykle máme množinu, které říkáme prostor řešení, a k tomu seznam podmínek, kterým říkáme omezující podmínky; množina přípustných řešení je tvořena všemi řešeními, které splňují omezující podmínky
- které řešení je lepší a které horší určuje v optimalizačních úlohách tzv. účelová funkce, což je zobrazení, které každému přípustnému řešení přiřazuje číslo, kterému říkáme hodnota účelové funkce
- vícekriteriální optimalizace se zabývá úlohami, v nichž máme několik účelových funkcí
Softwarové inženýrství
15. června 2010 v 20:31 | MáŠa
|
Spíše naučně & Zajímavosti
- u SW je potřeba zajistit, aby uspokojoval požadavky zákazníka, byl kvalitní a byl dokončen v termínu
- tvorba produktů je inženýrská disciplína, nikoliv umělecká tvorba
- k dosažení zmíněných cílů se používají metody projektového managementu
- informační a komunikační technologie - ICT - tento termín v sobě zahrnuje výpočetní techniku (HW, SW) a telekomunikační techniku (dnes HW i SW); tyto technologie se dnes vzájemně bezprostředně silně prolínají; ICT jsou HW produkty, SW produkty, služby, koncepce, metodiky, názor na svět
SW inženýrství:
- technický obor, který se zabývá naukou o vytváření SW produktů (tj. programů, databází, ...)
- vznik přibližně v 70. letech při vzniku 1. rozsáhlých programových produktů
- je to činnost zahrnující inženýrství, informatiku a management; cílem je návrh, tvorba a údržba počítačových programů
- Computer Science - počítačová věda - teoretické základy informatiky, grafy, algebry, kompilátory, teorie OS
- Computer Engineering - HW i SW, programování, programovací jazyky, zejména jejich užití a znalosti
- Software Engineering - věda o tom, jak vytvářet programové produkty a informační systémy; zejména metody a metodiky
- základy SW inženýrství jsou filozofie (konceptuální modelování), matematika (formální popis), management, technika (diagramy)
- cílem SW inženýrství je SW produkt; způsob, jak toho docílíme je popsán pomocí metodik SW inženýrství
- jde o způsob, jak tento produkt vytvoříme
Miniscule - videa ze světa hmyzu
14. června 2010 v 23:21 | MáŠa
|
Filmy & Seriály & Filmové osobnosti



Další videa jde najít na YouTube.
Reflexe v Javě
14. června 2010 v 14:19 | MáŠa
|
Java
- reflexe je běžně používána programy, které vyžadují schopnost zkoumat či modifikovat se během běhu
- jde o pokročilý rys pro využití vývojáři, kteří dobře rozumí základům Javy
- aplikace může využít externí, uživatelsky definované třídy - vytvoří se instance rozšiřitelských objektů pomocí použití jejich plných jmen
- můžeme si udělat browser dané třídy
- vizuální vývojová prostředí to využívají pro podporu programátorů, aby psali správný kód
- pokud je možné provést operaci bez použití reflexe, tak bychom se jí měli vyhnout
- reflexní operace mají nižší výkon, než ne-reflexní protějšky
- protože jsou dynamicky analyzovány typy, nemůže být využita některá optimalizace od JVM
- reflexe vyžaduje přístup v runtime, který nemusí být k dispozici, když se běží pod secirity managerem - zde např. pozor s Applety
- umožňuje to přístup k privátním položkám
- každý objekt je buď reference nebo primitivní typ
- všechny referenční typy dědí od java.lang.Object
- pro každý typ objektu JVM instancializuje neměnnou instanci třídy java.lang.Class, která poskytuje metody k prozkoumání runtime vlastností
- vstupní bod pro reflexní operace je právě třída Class
- s výjimkou třídy ReflectPermission žádná ze tříd v java.lang.reflect nemá veřejný konstruktor a dostaneme se k nim jen přes metody v Class
- pokud máme instanci nějakého objektu, Class získáme pomocí volání metody getClass()
- pole jsou také objekty, takže lze u nich volat getClass()
- máme přiřazení, že očekáváme objekt a přiřadí se tam objekt z podtřídy - volání getClass() na tomto vrátí Class pro onu podtřídu
- pokud nemáme instanci, tak lze volat .class na typu - získáme tak taky Class objekt
- pokud máme fully-qualified jméno třídy, můžeme volat Class.forName(), čímž získáme třídu s takovým jménem
- pomocí .class lze získat Class i pro primitivní typy, jinak to nejde
- když je vyvolána metoda, jsou zkontrolovány typy argumentů
- Field a Method položky implementují rozhraní Member
- Fields mají typ a hodnotu
- Methods mají návratovou hodnotu, parametry a mohou házet výjimky
- Constructors jsou podobné Methods, jen nemají návratové hodnoty, a jejich vyvolání vytváří nový objekt
- JNI - rozhraní, které umožňuje propojit kód běžící na JVM s nativními programy a knihovnami napsanými v jiných jazycích
- http://www.java2s.com/Tutorial/Java/0120__Development/0040__System-Properties.htm
- System.getProperty(String key)
- vrací hodnotu specifické property
- pokud neexistuje, vrací null
- existují systémové properties a uživatelsky definované properties
- např. java.class.path, java.library.path
- properties lze i nastavovat pomocí System.setProperty
- classloader - je to část JRE, která dynamicky načítá třídy do JVM
- http://www.ibm.com/developerworks/java/library/j-dyn0429/
- jak bude vypadat binární kód přeloženého programu, je definováno v JVM specifikaci
Související
Java a reflexe
14. června 2010 v 14:15 | MáŠa
|
Java
Součástí Javy je Java Reflection API. Jde o třídy a metody, díky kterým můžeme za běhu
získávat informace o třídách a jejich proměnných a metodách, aniž by bylo nutné znát tyto
informace v době kompilace. Stejně tak je možné vytvářet za běhu instance od zadaných tříd.
Reflexe je poměrně pokročilý rys Javy. Několik faktů k tomuto tématu v bodovité formě následuje (plus související):
získávat informace o třídách a jejich proměnných a metodách, aniž by bylo nutné znát tyto
informace v době kompilace. Stejně tak je možné vytvářet za běhu instance od zadaných tříd.
Reflexe je poměrně pokročilý rys Javy. Několik faktů k tomuto tématu v bodovité formě následuje (plus související):
- Všechny referenční typy dědí v Javě od třídy java.lang.Object.
- Pro každý objekt JVM vytváří instanci třídy java.lang.Class, prostřednictvím které lze za běhu zjišťovat informace o daném objektu.
- Prostřednictvím Class objektu lze vytvořit novou instanci třídy, kterou Class objekt
reprezentuje - stačí zavolat jeho metodu newInstance(). - U každého objektu lze volat metodu getClass(), díky čemuž jsme schopni zjistit, od jaké
třídy je objekt instancí. - Pokud máme k dispozici místo instance typ, lze Class objekt získat pomocí volání .class. Např. pro třídu MainFrame získáme Class objekt takto: Class c = MainFrame.class;
- Známe-li celý název třídy, lze pro ní získat Class objekt pomocí statické metody forName(String název) třídy Class. Příklad pro třídu MainFrame:Class c = Class.forName("windows.MainFrame");
- Instance třídy Class nereprezentuje pouze třídu v běžícím programu. Reprezentovat může
i rozhraní. - Třídy do JVM načítá classloader, přičemž standardní classloader hledá třídy
v CLASSPATH. To je argument nastavitelný přes příkazový řádek či proměnné prostředí. Tento argument JVM informuje o tom, kde má hledat uživatelem definované třídy. - Class objekt mimo jiné poskytuje metodu boolean isAssignableFrom(Class C), která odpovídá na to, jestli daná třída je stejná jako třída C. Případně, jestli není jeho nadtřídou. Pojem třída v této větě zahrnoval i rozhraní.
- Další metodou, kterou Class objekt nabízí, je metoda String getName(). Tato metoda vrací celé jméno třídy - tedy i včetně názvů balíčků.