Informatika2-2014/teszt
A MathWikiből
(Változatok közti eltérés)
1. sor: | 1. sor: | ||
===OOP=== | ===OOP=== | ||
+ | |||
+ | [[http://docs.python.org/2/tutorial/classes.html]] | ||
+ | |||
+ | [[http://docs.python.org/2/library/operator.html]] | ||
+ | |||
; Egységbezárás (encapsulation): a procedurális megközelítéssel ellentétben az adatok és a függvények a program nem különálló részét képezik, azok összetartoznak: együtt alkotnak egy objektumot. Az objektum felülete(ke)n (interfész, interface) keresztül érhető el a többi objektum számára. | ; Egységbezárás (encapsulation): a procedurális megközelítéssel ellentétben az adatok és a függvények a program nem különálló részét képezik, azok összetartoznak: együtt alkotnak egy objektumot. Az objektum felülete(ke)n (interfész, interface) keresztül érhető el a többi objektum számára. | ||
40. sor: | 45. sor: | ||
>>> x.i | >>> x.i | ||
5 | 5 | ||
+ | >>> Osztalyom.i | ||
+ | 123 | ||
</python> | </python> | ||
+ | |||
+ | Objektum '''kívülről''' ráaggatott attribútumokkal (ritkán van erre szükség): | ||
<python> | <python> | ||
+ | >>> x.szamlalo = 1 | ||
+ | >>> while x.szamlalo < 10: | ||
+ | ... x.szamlalo = x.szamlalo * 2 | ||
+ | ... | ||
+ | >>> print x.szamlalo | ||
+ | 16 | ||
+ | >>> del x.szamlalo | ||
</python> | </python> | ||
+ | |||
+ | Konstruktor <code>__init__</code> | ||
<python> | <python> | ||
+ | class Komplex: | ||
+ | def __init__(self, real, imag): | ||
+ | self.r = real | ||
+ | self.i = imag | ||
+ | # | ||
+ | def konjugalt(self): | ||
+ | return Komplex(self.r, -self.i) | ||
</python> | </python> | ||
+ | |||
+ | Használatára létrejön egy példány, melynek memóriacímét kajuk vissza nevének beírása után: | ||
<python> | <python> | ||
+ | >>> z = Komplex(3, 4) | ||
+ | >>> z | ||
+ | <__main__.Komplex instance at 0x184a710> | ||
+ | >>> w = z.konjugalt() | ||
+ | >>> w | ||
+ | <__main__.Komplex instance at 0x184a758> | ||
</python> | </python> | ||
+ | |||
+ | Tulajdonságaik lekérdezhetők: | ||
+ | |||
+ | <python> | ||
+ | >>> z.r, z.i | ||
+ | (3, 4) | ||
+ | >>> w.r, w.i | ||
+ | (3, -4) | ||
+ | </python> | ||
+ | |||
+ | |||
<python> | <python> |
A lap 2014. március 16., 13:29-kori változata
OOP
[[1]]
[[2]]
- Egységbezárás (encapsulation)
- a procedurális megközelítéssel ellentétben az adatok és a függvények a program nem különálló részét képezik, azok összetartoznak: együtt alkotnak egy objektumot. Az objektum felülete(ke)n (interfész, interface) keresztül érhető el a többi objektum számára.
- Osztály (class)
- egy objektum prototípusa, tulajdonságokkal ellátva, melyek jellemzik az osztály példányait. A tulajdonságok osztály és példányváltozók, és metódusok (tagfüggvények). Pont-jelöléssel érhetők el.
- Attribútum/tulajdonság (attribute)
- egy objektum tulajdonsága, jellemzője, az objektum nevét követő pont után írjuk a nevét.
- Példány (instance)
- egy osztályhoz tartozó egyedi objektum.
- Példányosítás (instantiation)
- egy osztály egy példányának létrehozása.
- Példány változó (instance variable)
- metóduson belül definiált változó, mely csak az osztály adott példányához tartozik.
- Osztályváltozó (class variable)
- változó, melyet az osztály minden példánya elér.
- Metódus (method, tagfüggvény)
- osztályon belül definiált spec. függvény, első argumentuma tipikusan a self.
- Öröklődés (inheritance)
- származtatással egy már meglévő osztályból egy újat hozunk létre. Ez rendelkezni fog az ős minden tulajdonságával, amihez továbbiakat ad(hat)unk.
- Polimorfizmus/többalakúság (polymorphism)
- különböző viselkedésmódokkal ruházzuk fel az egymásból származtatott objektumokat.
- Névtér (namespace)
- megadja, hogy egy név melyik objektumhoz tartozik (leképezés a nevekről az objektumokra). (Példák névterekre: foglalt nevek, globális változók, egy függvény lokális nevei).
- Hatókör/szkóp (scope)
- a kód azon része, ahol a névtér közvetlenül (a teljes elérési út magadása nélkül) elérhető.
>>> class Osztalyom: ... "Egy egyszerű példa osztályra" ... i = 123 ... def f(self, i): ... self.i = i ... return 'hello vilag' ... >>> x = Osztalyom() >>> x.i 123 >>> x.f(5) 'hello vilag' >>> x.i 5 >>> Osztalyom.i 123
Objektum kívülről ráaggatott attribútumokkal (ritkán van erre szükség):
>>> x.szamlalo = 1 >>> while x.szamlalo < 10: ... x.szamlalo = x.szamlalo * 2 ... >>> print x.szamlalo 16 >>> del x.szamlalo
Konstruktor __init__
class Komplex: def __init__(self, real, imag): self.r = real self.i = imag # def konjugalt(self): return Komplex(self.r, -self.i)
Használatára létrejön egy példány, melynek memóriacímét kajuk vissza nevének beírása után:
>>> z = Komplex(3, 4) >>> z <__main__.Komplex instance at 0x184a710> >>> w = z.konjugalt() >>> w <__main__.Komplex instance at 0x184a758>
Tulajdonságaik lekérdezhetők:
>>> z.r, z.i (3, 4) >>> w.r, w.i (3, -4)