Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- </head>
- <body>
- Cvičení zaměřené na implementaci a použití rozhraní.K dipozici jsou
- dvě rozhraní.
- <p>
- Rozhraní <code>Measurable</code> definuje metody pro
- základní měření objektů, tj. výšku, šířku a délku (respektive obvod
- u uzavřených 2D objektů).
- </p>
- <p>
- Rozhraní <code>Solid</code> definuje výpočet obsahu u uzavřených
- objektů.
- </p>
- <h3>Povinné úkoly:</h3>
- <ol>
- <li>
- [2 body] Upravte třídy <code>Triangle</code> a <code>Circle</code> tak,
- aby implementovaly rozhraní <code>Solid</code>.
- <ul>
- <li>
- Obsah trojúhelníku <code>S</code> se vypočítá následovně, ostatní vzorečky
- pro výpočet obvodu a obsahu viz základní škola:<br/>
- <code>s = o/2</code>, kde <code>o</code> je obvod trojúhelníka<br/>
- <code>S = sqrt(s * (s-d1) * (s-d2) * (s-d3))</code>, kde <code>sqrt</code>
- je druhá odmocnina a <code>d1, d2, d3</code> jsou délky stran.
- </li>
- <li>
- Výška/šířka trojúhelníku se vypočítá jako rozdíl maximální a minimální
- x-ové (u šířky) respektive y-ové (u výšky) souřadnice vrcholů.
- <img src="03a.png" alt="">
- </li>
- </ul>
- </li>
- <li>
- [1 bod] Vytvořte třídu <code>Gauger</code> ("měřidlo") se dvěma statickými přetíženými
- metodami <code>printMeasurement:</code>
- <ul>
- <li>První metoda vezme libovolný měřitelný objekt (tj. libovolný objekt implementující
- rozhraní <code>Measurable</code>) a
- <ul>
- <li>a) na std. výstup vypíše informace o objektu, viz metoda <code>toString()</code>,</li>
- <li>b) na další řádek vypíše <i>"Perimeter: <n>"</i>, kde <n> je obvod.</li>
- </ul>
- </li>
- <li>Druhá metoda vezme libovolný celistvý objekt (tj. libovolný objekt implementující rozhraní <code>Solid</code>) a
- <ul>
- <li>a) na std. výstup vypíše informace o objektu, viz metoda <code>toString()</code>,</li>
- <li>b) na další řádek vypíše <i>"Perimeter: <n>"</i>, kde <n> je obvod objektu,</li>
- <li>c) na další řádek vypíše <i>"Area: <m>"</i>, kde <m> je obsah objektu.</li>
- </ul>
- </li>
- <li>Vyhněte se opakování kódu tím, že druhá variata metody bude volat tu první.
- Pozor ale, ať nevolá sebe sama. Došlo by k zacyklení (<code>StackOverflowException</code>).</li>
- </ul>
- </li>
- <li>
- [1 bod] V metodě <code>isEquilateral</code> třídy <code>Triangle</code> používáme číslo <code>0.001</code>
- jako povolenou odchylku dvou reálných čísel (tzv. epsilon). Definujte tuto hodnotu jako
- <b>veřejnou konstantu</b> třídy <code>Triangle</code> a upravte adekvátně tomu kód metody.
- </li>
- </ol>
- <h3>Nepovinné úkoly:</h3>
- Vytvořte třídu <code>Snowman</code> (sněhulák). Sněhulák se skládá
- ze tří kružnic "postavených na sebe", směrem nahoru se kružnice zmenšují.
- Zmenšovací faktor bude dán jako parametr konstruktoru v podobě reálného čísla
- o rozhahu <code>(0..1></code>. V případě, že vstupní parametr nebude z požadovaného rozsahu,
- použije se hodnota <code>0.8</code>.
- <p/>
- Ruce sněhuláka
- (opět kružnice) budou mít třetinovou velikost oproti prosřední kružnici.
- Na hlavě bude mít sněhulák klobouk v podobě rovnostranného trojúhelníka posazeného
- na vršek hlavy ("hrotem" nahoru).
- <p/>
- Celý sněhulák vznikne v konstruktoru, nebojte se ale
- kód rozdělit do menších pomocných metod s viditelností <code>private</code>.
- </body>
- </html>
Add Comment
Please, Sign In to add comment