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
- 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.