Informatika2-2014/teszt
A MathWikiből
(Változatok közti eltérés)
68. sor: | 68. sor: | ||
self.r = real | self.r = real | ||
self.i = imag | self.i = imag | ||
− | + | ||
def konjugalt(self): | def konjugalt(self): | ||
return Komplex(self.r, -self.i) | return Komplex(self.r, -self.i) | ||
</python> | </python> | ||
− | Használatára létrejön egy példány, melynek memóriacímét | + | Használatára létrejön egy példány, melynek memóriacímét kapjuk vissza nevének beírása után: |
<python> | <python> | ||
93. sor: | 93. sor: | ||
</python> | </python> | ||
− | + | További tulajdonságokkal ruházzuk fel a Komplex osztály objektumait. Ehhez a speciális metódusokat használjuk: | |
<python> | <python> | ||
+ | class Komplex: | ||
+ | """Komplex számok kezelése.""" | ||
+ | |||
+ | def __init__(self, real, imag): | ||
+ | """Komplex szám létrehozása""" | ||
+ | self.r = real | ||
+ | self.i = imag | ||
+ | |||
+ | def konjugalt(self): | ||
+ | return Komplex(self.r, -self.i) | ||
+ | |||
+ | def __add__(self, z): | ||
+ | """Az infix '+' művelet használatához.""" | ||
+ | return Komplex(self.r + z.r, self.i + z.i) | ||
+ | |||
+ | def __repr__(self): | ||
+ | """Komplex szám megjelenése interaktív módban. | ||
+ | Ugyanezt kapjuk a print parancsra is.""" | ||
+ | |||
+ | |||
+ | return repr(self.r) + repr(self.i) + "i" | ||
</python> | </python> | ||
+ | |||
+ | Alkalmazása: | ||
<python> | <python> |
A lap 2014. március 16., 22:01-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 kapjuk 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)
További tulajdonságokkal ruházzuk fel a Komplex osztály objektumait. Ehhez a speciális metódusokat használjuk:
class Komplex: """Komplex számok kezelése.""" def __init__(self, real, imag): """Komplex szám létrehozása""" self.r = real self.i = imag def konjugalt(self): return Komplex(self.r, -self.i) def __add__(self, z): """Az infix '+' művelet használatához.""" return Komplex(self.r + z.r, self.i + z.i) def __repr__(self): """Komplex szám megjelenése interaktív módban. Ugyanezt kapjuk a print parancsra is.""" return repr(self.r) + repr(self.i) + "i"
Alkalmazása: