Informatika2-2013/Gyakorlat12

A MathWikiből
(Változatok közti eltérés)
63. sor: 63. sor:
  
 
Egy szemléletesebb [http://math.bme.hu/~kkovacs/info2/folyadekok.py példa].
 
Egy szemléletesebb [http://math.bme.hu/~kkovacs/info2/folyadekok.py példa].
 +
 +
== Feladatok ==
 +
 +
=== Síkidomok ===
 +
 +
[http://math.bme.hu/~kkovacs/info2/sikidomok_kezdet.py Kezdeti file]
 +
 +
* Használni fogjuk az ismétlésben látott Vektor osztályt
 +
* Elõre megírtam az Alakzat alaposztályt, és az õ Negyszog leszármazottját.
 +
* Ezek alapjan írjátok meg a Hurnegyszog osztályt, õ is a 4 csúcsot kapja, hasonlóan a négyszöghöz, de neki van képlete a területére: [http://hu.wikipedia.org/wiki/H%C3%BArn%C3%A9gysz%C3%B6g#K.C3.A9pletek wikipedia]
 +
* A Tegla osztály a téglalap bal alsó sarkát kapja, és az x és y tengellyel párhuzamos oldalainak hosszát. Ebbõl kellene meghívni a Hurnegyszog õsének az __init__-jét. (Ki kell számolni a csúcsait.)
 +
* A Negyzet osztály olyan mint a Tegla, de csak 1 oldalhosszt kap.
 +
 +
 +
* Az Ellipszis a középpontját és a kis és nagy féltengelyének hosszát kapja. [http://hu.wikipedia.org/wiki/Ellipszis_(g%C3%B6rbe)#Ter.C3.BClete Területe], a kerületét nem kötelezõ kiszámolni...
 +
* A Kör a középpontját kapja és a sugarának hosszát. Neki már a kerületét is könnyen tudjuk számolni.
 +
 +
* Ha valakinek marad ideje, akkor a szabályos N szögnek is írjon osztályt.
 +
 +
 +
=== Alkalmazottak ===
 +
 +
[http://math.bme.hu/~kkovacs/info2/alkalmazott_kezdet.py Kezdeti file]
 +
 +
*

A lap 2013. április 30., 06:01-kori változata

Tartalomjegyzék

Ismétlés

Mûveletek átdefiniálása, osztályok részletesebben:

class Vektor(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, jobb):
        return Vektor(self.x + jobb.x, self.y + jobb.y)
    def __sub__(self, jobb):
        return Vektor(self.x - jobb.x, self.y - jobb.y)
    def __mul__(self, szam):
        return Vektor(self.x * szam, self.y * szam)
    def hossz(self):
        return sqrt(self.x ** 2 + self.y ** 2)
    def __repr__(self):
        return "(" + str(self.x) + ", " + str(self.y) + ")"
  • __init__: inicializálás
  • __add__: összeadás
  • __sub__: kivonás
  • __mul__: szorzás
  • __div__: osztás
  • __pow__: hatványozás
  • __len__: hossz lekérése
  • __repr__: karakterekkel való reprezentálás

Öröklõdés

class A(object):
    def __init__(self, x):
        print "A letrehozva"
        self.v1 = x
    def v1ketszeres(self):
        return self.v1 * 2
 
class B(A):
    def __init__(self, x, y):
        print "B letrehozva"
        super(B, self).__init__(x)
        self.v2 = y
    def v2haromszoros(self):
        return self.v2 * 3
 
 
objA = A(5)
print "========"
objB = B(1, 4)
 
print "========"
print objA.v1ketszeres()
 
print "========"
print objB.v1ketszeres()
print objB.v2haromszoros()

A super() függvénynek adunk egy osztályt, és egy objektumot, tekinthetjük úgy a mûködését, hogy a neki adott objektum azon részét adja vissza ami az adott osztály (B) õsosztályának (A) felel meg.

Egy szemléletesebb példa.

Feladatok

Síkidomok

Kezdeti file

  • Használni fogjuk az ismétlésben látott Vektor osztályt
  • Elõre megírtam az Alakzat alaposztályt, és az õ Negyszog leszármazottját.
  • Ezek alapjan írjátok meg a Hurnegyszog osztályt, õ is a 4 csúcsot kapja, hasonlóan a négyszöghöz, de neki van képlete a területére: wikipedia
  • A Tegla osztály a téglalap bal alsó sarkát kapja, és az x és y tengellyel párhuzamos oldalainak hosszát. Ebbõl kellene meghívni a Hurnegyszog õsének az __init__-jét. (Ki kell számolni a csúcsait.)
  • A Negyzet osztály olyan mint a Tegla, de csak 1 oldalhosszt kap.


  • Az Ellipszis a középpontját és a kis és nagy féltengelyének hosszát kapja. Területe, a kerületét nem kötelezõ kiszámolni...
  • A Kör a középpontját kapja és a sugarának hosszát. Neki már a kerületét is könnyen tudjuk számolni.
  • Ha valakinek marad ideje, akkor a szabályos N szögnek is írjon osztályt.


Alkalmazottak

Kezdeti file

Személyes eszközök