Informatika2-2016/Gyakorlat8

A MathWikiből
(Változatok közti eltérés)
(Overload)
(Vászon)
22. sor: 22. sor:
 
Definiáljuk a '''Canvas''' (vászon) osztályt.  
 
Definiáljuk a '''Canvas''' (vászon) osztályt.  
 
* Egyetlen tagváltozója legyen a '''shapes''', ami alakzatok listáját tárolja.  
 
* Egyetlen tagváltozója legyen a '''shapes''', ami alakzatok listáját tárolja.  
 +
* Definiáljuk egy '''add''' metódust, amivel újabb '''Shape'''-et adunk a vászonhoz!
 
* Oldjuk meg, hogy az osztályunk iterálható legyen! Ehhez definiáljuk az '''__iter__(self)''' metódust, valamit a '''next(self)''' metódust, ahogy az előadáson láttuk.
 
* Oldjuk meg, hogy az osztályunk iterálható legyen! Ehhez definiáljuk az '''__iter__(self)''' metódust, valamit a '''next(self)''' metódust, ahogy az előadáson láttuk.
 
* Definiáljuk a '''crop''' metódust a következőképp: a bemeneti paraméter két pont koordinátája, ezek egy téglalap bal felső és jobb alsó pontjai. A függvény térjen vissza azon alakzatok listájával, amelyek a vásznon vannak és teljesen beleférnek az így definiált téglalapba. Ehhez a feladathoz az '''Ellipse''' és a '''Rectangle''' osztálynak is szüksége lesz egy '''box()''' metódusra, ami a legkisebb tartalmazó doboz bal felső és jobb alsó sarkait adja vissza.
 
* Definiáljuk a '''crop''' metódust a következőképp: a bemeneti paraméter két pont koordinátája, ezek egy téglalap bal felső és jobb alsó pontjai. A függvény térjen vissza azon alakzatok listájával, amelyek a vásznon vannak és teljesen beleférnek az így definiált téglalapba. Ehhez a feladathoz az '''Ellipse''' és a '''Rectangle''' osztálynak is szüksége lesz egy '''box()''' metódusra, ami a legkisebb tartalmazó doboz bal felső és jobb alsó sarkait adja vissza.

A lap 2016. április 7., 07:32-kori változata

Tartalomjegyzék

Előadás

8. elõadás

Feladatok

Nyissuk meg a Sypdert.

Alakzatok a vásznon

Alakzatok

Írjunk egy Shape osztályt.

  • Legyen x és y változója, ezek tárolják az alakzat pozícióját a síkon.
  • Legyen egy move metódusa, aminek egyetlen v paramétere van, egy kételemű lista, a vektor, amivel el kell mozgatni az alakzatot.

Definiáljuk a Shape osztály leszármazottaiként az

  • Ellipse ellipszis, legyen meg a kis- és nagytengelye (a,b)
  • Rectangle téglalap, legyen meg az oldalak hossza (a,b)

osztályokat. Mindkét esetben a pozíciójuk a súlypontjukat jelentse. Írjunk mindkét osztályhoz egy area függvényt, ami kiszámítja az alakzat területét!

Definiáljuk az Ellipse osztály equation metódusát, ami kiírja az adott ellipszis egyenletét!

Vászon

Definiáljuk a Canvas (vászon) osztályt.

  • Egyetlen tagváltozója legyen a shapes, ami alakzatok listáját tárolja.
  • Definiáljuk egy add metódust, amivel újabb Shape-et adunk a vászonhoz!
  • Oldjuk meg, hogy az osztályunk iterálható legyen! Ehhez definiáljuk az __iter__(self) metódust, valamit a next(self) metódust, ahogy az előadáson láttuk.
  • Definiáljuk a crop metódust a következőképp: a bemeneti paraméter két pont koordinátája, ezek egy téglalap bal felső és jobb alsó pontjai. A függvény térjen vissza azon alakzatok listájával, amelyek a vásznon vannak és teljesen beleférnek az így definiált téglalapba. Ehhez a feladathoz az Ellipse és a Rectangle osztálynak is szüksége lesz egy box() metódusra, ami a legkisebb tartalmazó doboz bal felső és jobb alsó sarkait adja vissza.

Overload

  1. Írjunk egy függvényt, aminek az első argumentuma n, egy int típusú változó. A függvény térjen vissza True-val, ha annyi extra paraméterrel hívták meg, mint az első bemeneti paraméter értéke, egyébként térjen vissza False-szal.
  2. Definiáljunk egy szumma függvényt, ami tetszőlegesen sok bemeneti paraméterének összegével tér vissza!
    1. Kezeljük le a kivételt, ha a paraméterek típusa nem azonos!
  3. Definiáljunk egy print_words függvényt, úgy, hogy a megadott (akármennyi) szavakat annyiszor írja ki, amennyit megadunk bemenetnként (szavanként)!
    1. Kezejük le kivételként, ha a bemeneten nem egész számot adtak meg a szó gyakoriságára!
Személyes eszközök