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 kajuk vissza nevének beírása után:
+
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., 21: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:

 
 
 
 
Személyes eszközök