Guest User

Untitled

a guest
Jan 20th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 4.78 KB | None | 0 0
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4.     <head>
  5.         <title></title>
  6.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7.     </head>
  8.     <body>
  9.         Cvičení zaměřené na implementaci a použití rozhraní.K dipozici jsou
  10.         dvě rozhraní.
  11.        
  12.         <p>
  13.             Rozhraní <code>Measurable</code> definuje metody pro
  14.             základní měření objektů, tj. výšku, šířku a délku (respektive obvod
  15.             u uzavřených 2D objektů).
  16.         </p>
  17.        
  18.         <p>
  19.             Rozhraní <code>Solid</code> definuje výpočet obsahu u uzavřených
  20.             objektů.
  21.         </p>
  22.        
  23.         <h3>Povinné úkoly:</h3>
  24.         <ol>
  25.             <li>
  26.                 [2 body] Upravte třídy <code>Triangle</code> a <code>Circle</code> tak,
  27.                 aby implementovaly rozhraní <code>Solid</code>.
  28.                 <ul>
  29.                     <li>
  30.                         Obsah trojúhelníku <code>S</code> se vypočítá následovně, ostatní vzorečky
  31.                         pro výpočet obvodu a obsahu viz základní škola:<br/>
  32.                         <code>s = o/2</code>, kde <code>o</code> je obvod trojúhelníka<br/>
  33.                         <code>S = sqrt(s * (s-d1) * (s-d2) * (s-d3))</code>, kde <code>sqrt</code>
  34.                         je druhá odmocnina a <code>d1, d2, d3</code> jsou délky stran.
  35.                     </li>                    
  36.                     <li>
  37.                         Výška/šířka trojúhelníku se vypočítá jako rozdíl maximální a minimální
  38.                         x-ové (u šířky) respektive y-ové (u výšky) souřadnice vrcholů.
  39.                         <img src="03a.png" alt="">
  40.                     </li>
  41.                 </ul>
  42.             </li>
  43.  
  44.             <li>
  45.                 [1 bod] Vytvořte třídu <code>Gauger</code> ("měřidlo") se dvěma statickými přetíženými
  46.                 metodami <code>printMeasurement:</code>
  47.                 <ul>
  48.                     <li>První metoda vezme libovolný měřitelný objekt (tj. libovolný objekt implementující
  49.                         rozhraní <code>Measurable</code>) a
  50.                         <ul>
  51.                             <li>a) na std. výstup vypíše informace o objektu, viz metoda <code>toString()</code>,</li>
  52.                             <li>b) na další řádek vypíše <i>"Perimeter: <n>"</i>, kde <n> je obvod.</li>
  53.                         </ul>
  54.                     </li>
  55.                     <li>Druhá metoda vezme libovolný celistvý objekt (tj. libovolný objekt implementující rozhraní <code>Solid</code>) a
  56.                         <ul>
  57.                             <li>a) na std. výstup vypíše informace o objektu, viz metoda <code>toString()</code>,</li>
  58.                             <li>b) na další řádek vypíše <i>"Perimeter: <n>"</i>, kde <n> je obvod objektu,</li>
  59.                             <li>c) na další řádek vypíše <i>"Area: <m>"</i>, kde <m> je obsah objektu.</li>
  60.                         </ul>
  61.                     </li>
  62.                     <li>Vyhněte se opakování kódu tím, že druhá variata metody bude volat tu první.
  63.                         Pozor ale, ať nevolá sebe sama. Došlo by k zacyklení (<code>StackOverflowException</code>).</li>
  64.                 </ul>
  65.             </li>
  66.            
  67.             <li>
  68.                 [1 bod] V metodě <code>isEquilateral</code> třídy <code>Triangle</code> používáme číslo <code>0.001</code>
  69.                 jako povolenou odchylku dvou reálných čísel (tzv. epsilon). Definujte tuto hodnotu jako
  70.                 <b>veřejnou konstantu</b> třídy <code>Triangle</code> a upravte adekvátně tomu kód metody.
  71.             </li>
  72.            
  73.         </ol>
  74.        
  75.         <h3>Nepovinné úkoly:</h3>
  76.                 Vytvořte třídu <code>Snowman</code> (sněhulák). Sněhulák se skládá
  77.                 ze tří kružnic "postavených na sebe", směrem nahoru se kružnice zmenšují.
  78.                 Zmenšovací faktor bude dán jako parametr konstruktoru v podobě reálného čísla
  79.                 o rozhahu <code>(0..1></code>. V případě, že vstupní parametr nebude z požadovaného rozsahu,
  80.                 použije se hodnota <code>0.8</code>.
  81.                 <p/>
  82.                 Ruce sněhuláka
  83.                 (opět kružnice) budou mít třetinovou velikost oproti prosřední kružnici.
  84.                 Na hlavě bude mít sněhulák klobouk v podobě rovnostranného trojúhelníka posazeného
  85.                 na vršek hlavy ("hrotem" nahoru).
  86.                 <p/>
  87.                 Celý sněhulák vznikne v konstruktoru, nebojte se ale
  88.                 kód rozdělit do menších pomocných metod s viditelností <code>private</code>.
  89.     </body>
  90. </html>
Add Comment
Please, Sign In to add comment