Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:constructors: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:constructors:start [2020/11/29 20:00] – [Beispiel 1: Würfel] Martin Pabstklassen2:constructors:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== Konstruktoren ====== ====== Konstruktoren ======
 +
 +{{youtube>y0az0x-mHx4?medium}}
 +
 Wir haben inzwischen schon viele Objekte instanziert, oft auch mit der Angabe von Parametern. Das folgende Programm instanziert beispielsweise ein Objekt der Klasse ''Rechteck'' und übergibt die Parameter (50, 50, 400, 300) für die Koordinaten der linken oberen Ecke (50, 50), die Breite (400) und die Höhe (300). Wir haben inzwischen schon viele Objekte instanziert, oft auch mit der Angabe von Parametern. Das folgende Programm instanziert beispielsweise ein Objekt der Klasse ''Rechteck'' und übergibt die Parameter (50, 50, 400, 300) für die Koordinaten der linken oberen Ecke (50, 50), die Breite (400) und die Höhe (300).
 <HTML> <HTML>
Zeile 57: Zeile 60:
  
 ===== Beispiel 2: Buntstift ===== ===== Beispiel 2: Buntstift =====
 +Schau' Dir das folgende Beispielprogramm an und überlege Dir, an welchen Stellen des Programms der Konstruktor ''Buntstift(Color farbe1)'' aufgerufen wird und welchen Zweck er hat.
  
 <HTML> <HTML>
Zeile 66: Zeile 69:
 Buntstift rotstift = new Buntstift(Color.red); Buntstift rotstift = new Buntstift(Color.red);
 rotstift.schreibe("Hallo Welt!"); rotstift.schreibe("Hallo Welt!");
 +
 Buntstift grünstift = new Buntstift(Color.lime); Buntstift grünstift = new Buntstift(Color.lime);
 grünstift.schreibe("Das ist grün"); grünstift.schreibe("Das ist grün");
Zeile 175: Zeile 179:
 </HTML> </HTML>
  
-===== Beispiel 2: Polynomrechner =====+===== Beispiel 3: Polynomrechner ===== 
 +Die Klasse ''PolynomZweitenGrades'' repräsentiert ein Polynom 2. Grades, also einen Term der Form $ax^2+bx+c$. Die Werte für die Konstanten a, b und c werden beim Instanzieren des Objekts dem Konstruktor übergeben und in den entsprechenden Attributen gespeichert, so dass dann in der Methode ''getWert(double x)'' für jeden beliebigen Wert von x der Wert des Polynoms berechnet werden kann.  
 <HTML> <HTML>
  
Zeile 181: Zeile 187:
  
 <script type="text/plain" title="Polynomrechner.java"> <script type="text/plain" title="Polynomrechner.java">
-PolynomZweitenGrades p = new PolynomZweitenGrades(1, 2, -3);+PolynomZweitenGrades p = new PolynomZweitenGrades(1, 2, -3);    // Definiert das Polynom 1x^2+2x-3
 println("p(4) = " + p.getWert(4)); println("p(4) = " + p.getWert(4));
 println("p(-1) = " + p.getWert(-1)); println("p(-1) = " + p.getWert(-1));
Zeile 204: Zeile 210:
 </HTML> </HTML>
  
-Die Klasse ''PolynomZweitenGrades'' repräsentiert ein Polynom 2. Grades, also einen Term der Form {{:klassen2:constructors:polynom_2._grades.png?nolink 120|}}. Die Werte für die Konstanten a, b und c werden beim Instanzieren des Objekts dem Konstruktor übergeben und in den entsprechenden Attributen gespeichert, so dass dann in der Methode ''getWert(double x)'' für jeden beliebigen Wert von x der Wert des Polynoms berechnet werden kann.  
  
-===== Aufgabe: Die Klasse Bruch =====+===== Aufgabe 1: Die Klasse Bruch =====
 Im vorhergehenden Kapitel haben wir eine [[[klassen2:attribute:start#aufgabe_4eine_klasse_zum_bruchrechnen|Klasse zum Bruchrechnen]] kennengelernt. Erweitere sie um einen Konstruktor, der Zähler und Nenner als Parameter entgegennimmt, so dass man statt Im vorhergehenden Kapitel haben wir eine [[[klassen2:attribute:start#aufgabe_4eine_klasse_zum_bruchrechnen|Klasse zum Bruchrechnen]] kennengelernt. Erweitere sie um einen Konstruktor, der Zähler und Nenner als Parameter entgegennimmt, so dass man statt
 <code myJava> <code myJava>
Zeile 224: Zeile 229:
 <script type="text/plain" title="Bruch.java"> <script type="text/plain" title="Bruch.java">
  
 +Bruch b1 = new Bruch(4, 3);
 +Bruch b2 = new Bruch(1, 2);
 +b1.ausgabeUnecht();
 +b1.ausgabeEcht();
 +b1.mal(b2);
 +b1.ausgabeUnecht();
 +
 +class Bruch {
 +
 +   int z;
 +   int n;
 +
 +   // Hier fehlt der Konstruktor!
 +
 +   public void ausgabeUnecht() {
 +      println(z + "/" + n);
 +   }
 +
 +   public void ausgabeEcht() {
 +
 +      int a1 = z;
 +
 +      if(Math.abs(z) >= n) {
 +         int ganzerAnteil = z / n;
 +         a1 = z - ganzerAnteil * n;
 +         if(a1 < 0) {
 +            a1 = -a1;
 +         }
 +         print(ganzerAnteil + " ");
 +      }
 +      
 +      println(a1 + "/" + n);
 +      
 +   }
 +
 +   public void mal(Bruch b2) {
 +      
 +      z = z * b2.z;
 +      n = n * b2.n;
 +
 +      kürze();
 +
 +   }
 +
 +   public void geteilt(Bruch b2) {
 +      
 +      z = z * b2.n;
 +      n = n * b2.z;
 +
 +      kürze();
 +
 +   }
 +
 +   public void addiere(Bruch b2) {
 +
 +      // a/b + c/d = (a*d)/(b*d) + (c*b)/(d*b) = (a*d + c*b)/(b*d)
 +
 +      z =(z * b2.n + b2.z * n);
 +      n = n * b2.n;
 +
 +      kürze();
 +
 +   }
 +
 +   public void subtrahiere(Bruch b2) {
 +
 +      // a/b - c/d = (a*d)/(b*d) - (c*b)/(d*b) = (a*d - c*b)/(b*d)
 +
 +      z =(z * b2.n - b2.z * n);
 +      n = n * b2.n;
 +
 +      kürze();
 +
 +   }
 +
 +   public void kürze() {
 +      
 +      for(int i = 2; i <= Math.sqrt(Math.abs(z)); i++) {
 +         
 +         if(z % i == 0 && n % i == 0) {
 +            z = z / i;
 +            n = n / i;
 +         }
 +
 +      }
 +
 +   }
 +}
  
 </script> </script>
Zeile 230: Zeile 323:
 </HTML> </HTML>
 [[.loesung:aufgabe1:start|Hier geht's zur Lösung!]] [[.loesung:aufgabe1:start|Hier geht's zur Lösung!]]
 +
 +===== Aufgabe 2: Die Klasse Tier =====
 +Füge der [[klassen2:attribute:start#aufgabe_1tiere|Klasse Tier aus dem vorangegangenen Kapitel]] einen Konstruktor hinzu, so dass man das Tier-Objekt zur Katze "Pirat" mit 3 Beinen folgendermaßen instanzieren kann:
 +<code myJava>
 +Tier p = new Tier("Katze", "Pirat", 3);
 +</code>
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 500px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'KonstruktorenAufgabe2'}">
 +
 +<script type="text/plain" title="Tier2.java">
 +Tier p = new Tier("Katze", "Pirat", 3);
 +p.vorstellen();
 +
 +class Tier {
 +   String art;
 +   String name;
 +   int beinzahl;
 +
 +   // Hier fehlt der Konstruktor!
 +   
 +   void vorstellen(){
 +      println("Ich heiße " + name + " und bin ein/e " + art + " mit " + beinzahl + " Beinen.");
 +   
 +   }
 +
 +}
 +</script>
 +
 +</div>
 +</HTML>
 +[[.loesung:aufgabe2:start|Hier geht's zur Lösung!]]
klassen2/constructors/start.1606676407.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki