Kihagyás

Objektumorientált programozás

Az objektumorientált vagy objektumelvű programozás (angolul object-oriented programming, röviden OOP) az objektumok fogalmán alapuló programozási paradigma. Az objektumok egységbe foglalják az adatokat és a hozzájuk tartozó műveleteket. Az adatokat ismerik mezők, attribútumok, tulajdonságok néven, a műveleteket metódusokként szokták emlegetni. Az objektum által tartalmazott adatokon általában az objektum metódusai végeznek műveletet. A program egymással kommunikáló objektumok összességéből áll. A legtöbb objektumorientált nyelv osztály alapú, azaz az objektumok osztályok példányai, és típusuk az osztály.

Például egy hétköznapi fogalom, a „kutya” felfogható egy osztály (a kutyák osztálya) tagjaként, annak egyik objektumaként. Minden kutya objektum rendelkezik a kutyákra jellemző tulajdonságokkal (például szőrszín, méret stb.) és cselekvési képességekkel (például futás, ugatás).

A legtöbb széles körben alkalmazott nyelv többek között az objektumorientált programozást is támogatja, tipikusan az imperatív, procedurális programozással együtt. A legfontosabb objektumorientált nyelvek: Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, és Smalltalk.

Osztály létrehozása

Osztály létrehozásához használd a class kulcsszót:

class Auto:
    hossz = 50

Objektum létrehozása, példányosítása:

class Auto:
    hossz = 50

ferrari = Auto()

print(ferrari.hossz)

Konstruktor

A fenti példák osztályok és objektumok a legegyszerűbb formájukban, és nem igazán hasznosak a valós alkalmazásokban. Az osztályok jelentésének megértéséhez meg kell értenünk a beépített __init__() függvényt. Minden osztálynak van egy __init__() nevű függvénye, amely mindig végrehajtásra kerül az osztály indításakor. Használd az __init__() függvényt, hogy értékeket rendelj az objektum tulajdonságaihoz, vagy más műveleteket, amelyeket az objektum létrehozásakor kell elvégezni:

1
2
3
4
5
6
7
8
9
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)

Megjegyzés

Az __init__() függvény automatikusan meghívásra kerül minden alkalommal, amikor az osztályt új objektum létrehozására használják.

Metódusok

Az objektumok metódusokat is tartalmazhatnak. Az objektumokban lévő metódusok az objektumhoz tartozó függvények.

Hozzunk létre egy metódust a Person osztályban:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()

Megjegyzés

A self paraméter az osztály aktuális példányára való hivatkozás, és az osztályhoz tartozó változók elérésére szolgál.

self paraméter

A self paraméter az osztály aktuális példányára való hivatkozás, és az osztályhoz tartozó változók elérésére szolgál.

Nem kell önmagának nevezni, hívhatod, ahogy akarod, de az osztály bármely függvényének első paramétere kell legyen:

class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()

Attribútum

Az objektum attribútumának módosítása

Az objektumok tulajdonságait így módosíthatod:

p1.age = 40

Példa

class Person:
def __init__(self, name, age):
    self.name = name
    self.age = age

def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)

p1.age = 40

print(p1.age)