Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

10:uebungen_zur_programmierung_von_klassen [2018/06/03 22:53] (aktuell)
Zeile 1: Zeile 1:
 +====== Übungen zu Klassen ======
 +===== Aufgabe 1 =====
 +Erstelle zu folgendem Java-Code ein ausführliches Klassendiagramm
 +<​code>​
 +public class Auto{
 +    private String hersteller;
 +    private String modell;
 +    private String nummernschild;​
 +    private int ps;
 +
 +    public Auto(){
 +        hersteller = "​VW";​
 +    }
 +
 +    public int gibPs(){
 +        return ps;
 +    }
 +
 +    public void setzeNummernschild(String neueNummer){
 +        nummernschild=neueNummer;​
 +    }
 +}
 +</​code>​
 +
 +<hidden Lösung>
 +{{:​10:​02_einfuehrung_java:​u1_klassenkarte_auto.png?​nolink|}}\\
 +Bemerkung: Der Konstruktor wird in der obigen Klassenkarte nicht aufgeführt.
 +</​hidden>​
 +
 +===== Aufgabe 2 =====
 +Implementiere zu folgender ausführlicher Klassenkarte die Klasse in Java.\\
 +{{:​10:​02_einfuehrung_java:​u1_klassenkarte_konto.png?​nolink&​|}}\\
 +Was kann bei diesem Klassenentwurf zu Problemen führen?
 +<hidden Lösung>
 +
 +<​code>​
 +public class Konto{
 +    private int kontonr;
 +    private String kontoinhaber;​
 +    public double kontostand;
 +
 +    public String gibKontoinhaber(){
 +        return kontoinhaber;​
 +    }
 +
 +    private void setzeKontostand(double neuesSaldo){
 +        kontostand=neuesSaldo;​
 +    }
 +}
 +</​code>​
 +
 +Der Sichtbarkeitsmodifikator des Attributs kontostand ist öffentlich und damit von jedem beliebigen Objekt zu verändern.
 +</​hidden>​
 +
 +===== Aufgabe 3 =====
 +Implementiere zu folgender ausführlicher Klassenkarte die Klasse in Java.\\
 +{{:​10:​02_einfuehrung_java:​u1_klassenkarte_rechteck.png?​direct&​|}}\\
 +<hidden Lösung>
 +<​code>​
 +public class Rechteck
 +{
 +    private String name;
 +    private int laenge, breite;
 +    private int x,y;
 +
 +    public String gibName(){
 +        return name;
 +    }
 +
 +    public void setzeMasse(int neuL, int neuB){
 +        laenge=neuL;​
 +        breite=neuB;​
 +    }
 +
 +    public int gibLaenge(){
 +        return laenge;
 +    }
 +
 +    public int gibUmfang(){
 +        return 2*laenge+2*breite;​
 +    }
 +}
 +</​code>​
 +</​hidden>​
 +
 +
 +===== Aufgabe 4 =====
 +Der folgende Java-Code einer Klasse ist nicht korrekt. Korrigiere die Fehler.
 +<​code>​
 +public class Festplatte
 +{
 +    private kapazitaet int; 
 +    private int hersteller; ​
 +    private String modellbezeichnung;​
 +
 +    public Festplatte(){
 +        hersteller="​noname";​
 +    }
 +
 +    public void setzeKapazitaet(int anzahlGB){
 +        anzahlGB=kapazitaet; ​    
 +    }
 +
 +    public void gibKapazitaet(){  ​
 +        return kapazitaet;
 +    }
 +
 +    public String gibModell(){
 +        return modellbezeichnung;​
 +    }
 +
 +    public String gibHersteller(){
 +        return hersteller;
 +    }
 +
 +    public String gibInfo(){  ​
 +        System.out.println("​Die Festplatte kann " + kapazitaet + " speichern und stammt von " +
 +            hersteller + "​."​);​
 +    }
 +}
 +</​code>​
 +
 +<hidden Lösung>
 +<​code>​
 +public class Festplatte
 +{
 +    private int kapazitaet; //FEHLER: erst Datentyp, dann Name des Attributs
 +    private String hersteller; //FEHLER: notwendiger Datentyp ist String
 +    private String modellbezeichnung;​
 +
 +    public Festplatte(){
 +        hersteller="​noname";​
 +    }
 +
 +    public void setzeKapazitaet(int anzahlGB){
 +        kapazitaet=anzahlGB; ​   // FEHLER: das Attribut, das den Wert des Parameters erhält, ​
 +                                // steht auf der linken Seite des Gleichheitszeichens
 +    }
 +
 +    public int gibKapazitaet(){ // FEHLER: der Rückgabetyp der Funktion muss eine Ganzahl (int) sein 
 +        return kapazitaet;
 +    }
 +
 +    public String gibModell(){
 +        return modellbezeichnung;​
 +    }
 +
 +    public String gibHersteller(){
 +        return hersteller;
 +    }
 +
 +    public void gibInfo(){ ​ // FEHLER: der Rückgabetyp der Funktion ist vom Typ void
 +        System.out.println("​Die Festplatte kann " + kapazitaet + " speichern und stammt von " +
 +            hersteller + "​."​);​
 +    }
 +}
 +</​code>​
 +</​hidden>​
 +
 +===== Aufgabe 5 =====
 +Zur Verwaltung einer Bücherei soll eine Klasse Buch erstellt werden. Dabei sollen von jedem Buch der Autor, der Titel, das Erscheinungsjahr sowie der Preis verwaltet werden. Außerdem soll bei jedem Buch einfach festzustellen sein, ob es momentan entliehen ist.
 +
 +Mit Hilfe von Methoden können wichtige Informationen entnommen werden können. Beim Entleihen bzw. bei der Rückgabe eines Buches wird eine entsprechend Methoden der Status verändert.
 +
 +Erstelle ein ausführliches Klassendiagramm für die Klasse Buch.
 +<hidden Lösung>
 +{{:​10:​02_einfuehrung_java:​u1_klassenkarte_buch.png?​nolink&​|}}
 +</​hidden>​
 +\\
 +
 +Implementiere die Klasse.
 +
 +<hidden Lösung>
 +<​code>​
 +public class Buch
 +{
 +    private String titel;
 +    private String autor;
 +    private int erscheinungsjahr;​
 +    private double preis;
 +    private boolean entliehen;
 +
 +    public String gibTitel(){
 +        return titel;
 +    }
 +
 +    public boolean istEntliehen(){
 +        return entliehen;
 +    }
 +
 +    public void entleihe(){
 +        entliehen=true;​
 +    }
 +
 +    public void gibzurueck(){
 +        entliehen=false;​
 +    }
 +
 +}
 +</​code>​
 +Bemerkung:​\\
 +Die beiden Methoden ''​entleihe()''​ und ''​gibzurueck()''​ könnten auch durch die folgende Methode ersetzt werden:
 +<​code>​
 +    public void setzeEntleihstatus(boolean status){
 +        entliehen=status;​
 +    }
 +</​code>​
 +</​hidden>​
 +
 +
 +
 +{{quiz>​10:​Quiz_01_Implementierung_von_Klassen&​learning}}
  
Drucken/exportieren