Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:attribute:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
klassen2:attribute:start [2020/11/22 20:23] – [Beispiel 4: Ampel] Martin Pabstklassen2:attribute:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 135: Zeile 135:
 ===== Beispiel 4: Ampel ===== ===== Beispiel 4: Ampel =====
 Wir programmieren eine Klasse ''Ampel'', die eine einfache Fußgängerampel Zeichnet und Methoden ''schalteGrün()'' und ''schalteRot()'' zum Umschalten besitzt. Die Ampel besteht aus einem ''Rectangle''-Objekt und zwei ''Circle''-Objekten. Diese speichern wir als Attribute der Klasse ''Ampel''. Sie werden in der Methode ''init()'' instanziert und initialisiert. Wir programmieren eine Klasse ''Ampel'', die eine einfache Fußgängerampel Zeichnet und Methoden ''schalteGrün()'' und ''schalteRot()'' zum Umschalten besitzt. Die Ampel besteht aus einem ''Rectangle''-Objekt und zwei ''Circle''-Objekten. Diese speichern wir als Attribute der Klasse ''Ampel''. Sie werden in der Methode ''init()'' instanziert und initialisiert.
 +
 +<WRAP center round todo 60%>
 +Ich habe Dir noch etwas Arbeit im Programm hinterlassen (siehe die Kommentare). Vielleicht möchtest Du die Ampel auch noch etwas umfangreicher gestalten:
 +  * Umgib das Gehäuse mit einem dunkelgrauen Rahmen (Methode ''setBorderColor'' der ''Rectangle''-Klasse!)
 +  * Füge ein gelbes Licht hinzu!
 +  * Füge eine "Fuß" hinzu!
 +</WRAP>
 +
  
 <HTML> <HTML>
  
-<div class="java-online" style="height: 550px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Attribute4'}">+<div class="java-online" style="height: 550px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'Attribute4'}">
  
 <script type="text/plain" title="Attribute4.java"> <script type="text/plain" title="Attribute4.java">
 +Ampel a = new Ampel();
 +a.init();
 +a.schalteRot();
 +Input.readString("Drücke die Taste Enter!");
 +a.schalteGrün();
 +Input.readString("Drücke die Taste Enter!");
 +a.schalteAus();
  
 +class Ampel {
 +   Rectangle gehäuse;
 +   Circle lichtOben;
 +   Circle lichtUnten;
  
 +   void init() {
  
 +      // Instanzieren und Initialisieren des Gehäuses:
 +      gehäuse = new Rectangle(340, 140, 120, 220);
 +      gehäuse.setFillColor(Color.gray);
 +
 +      // Ergänze den Code zum Instanzieren und initialisieren der beiden Lichter!
 +      // Die Lichter sollen initial beide mit der Farbe Color.darkgray gefüllt sein.
 +
 +   }
 +
 +   void schalteRot() {
 +      lichtOben.setFillColor(Color.red);
 +      lichtUnten.setFillColor(Color.darkgray);
 +   }
 +
 +   // Ergänze Methoden schalteGrün() und schalteAus()!
 +
 +}
 </script> </script>
 </div> </div>
 </HTML> </HTML>
  
 +[[.ampelloesung:start|Hier geht's zur Lösung!]]
 ===== Aufgabe 1: Tiere ===== ===== Aufgabe 1: Tiere =====
 Erstelle eine Klasse ''Tier'' mit den Attributen ''art'' (Typ ''String''), ''name'' (Typ ''String'') und ''beinzahl'' (Typ ''int'') sowie einer Methode ''vorstellen()'', die im Falle der Katze Snoopy (mit zum Glück noch 4 Beinen) folgende Meldung ausgibt: Erstelle eine Klasse ''Tier'' mit den Attributen ''art'' (Typ ''String''), ''name'' (Typ ''String'') und ''beinzahl'' (Typ ''int'') sowie einer Methode ''vorstellen()'', die im Falle der Katze Snoopy (mit zum Glück noch 4 Beinen) folgende Meldung ausgibt:
Zeile 350: Zeile 388:
 Wir bestimmen den ggT von $24$ und $80$ (und nennen ihn im Folgenden kurz $x$).  Wir bestimmen den ggT von $24$ und $80$ (und nennen ihn im Folgenden kurz $x$). 
   * $x$ ist Teiler beider Zahlen und teilt daher auch $80 - 24 = 56$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $24$ und $56$) und setzen das Spiel damit fort.   * $x$ ist Teiler beider Zahlen und teilt daher auch $80 - 24 = 56$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $24$ und $56$) und setzen das Spiel damit fort.
-  * $x$ ist Teiler von $24$ und $56$ und teilt daher auch $56 - 24 = 32$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $18$ und $24$) und setzen das Spiel damit fort. +  * $x$ ist Teiler von $24$ und $56$ und teilt daher auch $56 - 24 = 32$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $32$ und $24$) und setzen das Spiel damit fort. 
-  * $x$ ist Teiler von $18$ und $24$ und teilt daher auch $24 18 6$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $6$ und $18$) und setzen das Spiel damit fort. +  * $x$ ist Teiler von $32$ und $24$ und teilt daher auch $32 24 8$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $24$ und $8$) und setzen das Spiel damit fort. 
-  * $x$ ist Teiler von $6$ und $18$ und teilt daher auch $18 12$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $6$ und $12$) und setzen das Spiel damit fort. +  * $x$ ist Teiler von $24$ und $8$ und teilt daher auch $24 16$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $16$ und $8$) und setzen das Spiel damit fort. 
-  * $x$ ist Teiler von $6$ und $12$ und teilt daher auch $12 6$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $6$ und $6$) und sind fertig, denn wir wissen jetzt, dass der ggT von $24$ und $80$ ein Teiler von $6$ ist. Gleichzeitig ist aber $6$ auch ein Teiler von $24$ und $80$, teilt also auch deren ggT. Daher ist $6$ der gesuchte ggT.+  * $x$ ist Teiler von $16$ und $8$ und teilt daher auch $16 8$. Wir nehmen jetzt die kleineren beiden dieser drei Zahlen (also $8$ und $8$) und sind fertig, denn wir wissen jetzt, dass der ggT von $24$ und $80$ ein Teiler von $8$ ist. Gleichzeitig ist aber $8$ auch ein Teiler von $24$ und $80$, teilt also auch deren ggT. Daher ist $8$ der gesuchte ggT.
  
  
-  * **Halt, halt, nicht so schnell!!** \\ Warum ist $6$ auch ein Teiler von $24$ und $80$? \\ \\ Denk' Dir einfach alle Schritte wieder rückwärts: die $6$ teilt $6$ und $6$, also teilt sie auch die Summe $12 6$. Da sie also die $6$ und die $12$ teilt, teilt sie auch $12 18$. Da sie $18$ und $6$ teilt, teilt sie auch $18 6 = 24$,  usw. Am Ende all dieser Schritte steht fest: $6$ teilt auch $24$ und $80$.+  * **Halt, halt, nicht so schnell!!** \\ Warum ist $6$ auch ein Teiler von $24$ und $80$? \\ \\ Denk' Dir einfach alle Schritte wieder rückwärts: die $8$ teilt $8$ und $8$, also teilt sie auch die Summe $16 8$. Da sie also die $8$ und die $16$ teilt, teilt sie auch $16 24$. Da sie $8$ und $24$ teilt, teilt sie auch $+ 24 = 32$,  usw. Am Ende all dieser Schritte steht fest: $8$ teilt auch $24$ und $80$.
 </WRAP> </WRAP>
  
-===== Aufgabe 5: Die Klasse Würfel (verbesserte Version ===== +===== Aufgabe 5: Bild mit verschiedenen Tageszeiten ===== 
- +{{ :klassen2:attribute:pasted:20201122-212921.png}} 
 +{{:klassen2:attribute:pasted:20201122-212757.png }} 
 +{{ :klassen2:attribute:pasted:20201122-212839.png }} 
 + \\  
 +Die Klasse Bild zeichnet das Bild einer Wüste mit Sonne und Himmel (s.u.) zu drei verschiedenen Tageszeiten. Sie besitzt die Methoden ''init()'' (zum Instanzieren und Initialisieren der Objekte), ''schalteMorgen()'' (schaltet auf das "Morgenbild" um), ''schalteMittag()'' und ''schalteAbend()''. \\ \\  
 +**Tipp:** Orientiere Dich beim Programmieren am [[#beispiel_4ampel|Ampel-Beispiel oben]]!
 <HTML> <HTML>
  
Zeile 367: Zeile 409:
  
 <script type="text/plain" title="AttributeAufgabe5.java"> <script type="text/plain" title="AttributeAufgabe5.java">
 +Bild b = new Bild();
 +b.init();
 +b.schalteMorgen();
 +b.schalteMittag();
 +b.schalteAbend();
  
 +class Bild {
 +
 +}
  
 </script> </script>
Zeile 373: Zeile 423:
 </HTML> </HTML>
  
 +[[.aufgabe5loesung:startxx|Hier geht's zur Lösung!]]
klassen2/attribute/start.1606073007.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki