Projekt:2021/Fingerübungen: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Markierungen: Manuelle Zurücksetzung Mobile Bearbeitung Mobile Web-Bearbeitung
 
(30 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Projektseite
|Projekt=Fingerübungen
|Kurs=Informatik GK
|Schuljahr=2021/22
}}
== Fingerübungen zur Objektorientierten Programmierung ==
== Fingerübungen zur Objektorientierten Programmierung ==


Auf dieser Seite findest Du verschiedene Übungen zur Wiederholung und Festigung der Objektorientierten Programmierung (OOP). Die Übungen sind in verschiedene Kategorien einsortiert. Suche Dir Übungen heraus, bedienen Du noch Nachholbedarf hast.
Auf dieser Seite findest Du verschiedene Übungen zur Wiederholung und Festigung der Objektorientierten Programmierung (OOP). Die Übungen sind in verschiedene Kategorien einsortiert. Suche Dir Übungen heraus, bedienen Du noch Nachholbedarf hast.
=== Grundbegriffe ===
Der Kollege Herr Bolte hat eine [https://youtube.com/playlist?list=PLeKALosMKQIddK62MmKelLjGw7v8BRSWS YouTube-Playliste] zusammengestellt, die am Beispiel der BlueJ-Variante {{Greenfoot}} alle Grundlagen der OOP aus der EF durchgeht und an Beispielen wiederholt. Diese kannst du gut selber nacharbeiten (am besten, indem du die Beispiele direkt mitmachst).
<center>
{{#ev:youtubeplaylist|PLeKALosMKQIddK62MmKelLjGw7v8BRSWS}}
</center>
{{Aufgabe:Start}}
Beschreibe mit eigenen Worten so präzise wir möglich die folgenden Begriffe:
* lokale Variable
* Objektvariable
* Parameter
* Rückgabe
* Datentyp
* Objektreferenz
* Methodenaufruf
* Bedingte Anweisung
* logische Verknüpfung
* Array
{{Aufgabe:End}}
Diese Mindmaps zur OOP zeigt dir die wichtigsten Begriffe im Zusammenhang:
<coggle width="100%">https://embed.coggle.it/diagram/XOznaVTTBkqNLBAK</coggle>


=== Implementierungsdiagramme in Quelltext übersetzen ===
=== Implementierungsdiagramme in Quelltext übersetzen ===


{{Aufgabe:Start}}
{{Aufgabe:Start}}
Erstelle zu den UML-Diagrammen unten jeweils ein ''Klassengerüst'' mot allen gezeigten Methoden. Die Methoden müssen keine Funktionalität enthalten, ergänze bei Methoden mit Rückgaben einfach nur einen <code>return</code> Befehl.
Erstelle zu den UML-Diagrammen unten jeweils ein ''Klassengerüst'' mit allen gezeigten Methoden. Die Methoden müssen keine Funktionalität enthalten, ergänze bei Methoden mit Rückgaben einfach nur einen <code>return</code> Befehl.


Zum Beispiel zu <code>+wuerfeln(): int</code>
Zum Beispiel zu <code>+wuerfeln(): int</code>
Zeile 15: Zeile 45:
</syntaxhighlight>
</syntaxhighlight>


Halte Dich bei der Übersetzung immer genau an das UML-Diagramm. Manche der späteren Diagramme halten sich nicht strikt an unsere Konventionen (z.B. "Alle Objektvariablen sind private").
Halte Dich bei der Übersetzung immer '''genau''' an das UML-Diagramm. Manche der hinteren Diagramme halten sich nicht strikt an unsere Konventionen (z.B. "Alle Objektvariablen sind private"). Achte also auf die Sichtbarkeiten und Namen der Parameter.
{{Aufgabe:End}}
{{Aufgabe:End}}


==== Bruch ====
{{#mermaid:classDiagram
class Bruch {
    -int zaehler
    -int nenner
    +Bruch(pZaehler: int, pNenner: int)
    +getZaehler(): int
    +getNenner(): int
    +setZaehler(pZaehler: int): void
    +setNenner(pNenner: int): void
    +kuerzen(): void
    +asDecimal(): double
}
}}
==== Bank ====
{{#mermaid:classDiagram
class Kunde {
    -vorname: String;
    -nachname: String;
    -geburtstag: int;
    +Kunde(pVorname: String, pNachname: String, pGeburtstag: int)
    +getGeburtstag() int
    +getVorname() String
    +getNachname() String
    +setNachname(pNachname: String) void
}
class Bankkonto {
    -kontonummer: int
    -kontostand: double
    +Bankkonto(pKontonummer: int)
    +getKontonummer() int
    +getKontostand() int
    +getKunde() Kunde
    +setKunde(pKunde: Kunde) void 
    +einzahlen(pBetrag: double) double
    +abheben(pBetrag: double) double
}
Bankkonto --> "1" Kunde : -kunde
}}
==== Bibliothek ====
{{#mermaid:classDiagram
{{#mermaid:classDiagram
     class BankAccount
class Bibliothek {
     BankAccount : +String owner
    -String name
     BankAccount : +Bigdecimal balance
    -String adresse
     BankAccount : +deposit(amount)
    -String oeffungszeiten
     BankAccount : +withdrawl(amount)
     +Bibliothek(pName: String, pAdresse: String, pOeffnungszeiten: String)
    +getName() String
    +setName(pName: String) void
    +getAdresse() String
    +getOeffnungszeiten() String
    +setOeffnungszeiten(pZeiten: String) void
    +getAngestellte(): Mitarbeiter[]
    +addAngestellte(pMitarbeiter: Mitarbeiter) void
    +removeAngestellte(pMitarbeiter: Mitarbeiter) boolean
    +getBuecher() Medium[]
    +getBuch(pBezeichnung: String) Medium
}
class Mitarbeiter {
    +name: String
     +adresse: String
    +management: boolean
    +Mitarbeiter(pName: String, pAdresse: String, pIstManagement: boolean)
     +istManagement() boolean
    -setManagement(pManagement: boolean) void
    +getName() String
     +setName(pName: String) void
    +getAdresse() String
     +setAdresse(pAdresse: String) void
}
class Medium {
    +name: String
    +art: int
    +Medium(pName: String, pTyp: int)
    +getName() String
    +istBuch() boolean
    +istCD() boolean
    +istMagazin() boolean
}
Bibliothek--> "1..n" Mitarbeiter : +mitarbeiter[]
Bibliothek--> "1..n" Medium : -medien[]
}}
}}
{{Lösung:Start|Lösung Bruch}}
<syntaxhighlight lang="java" line="1">
public class Bruch {
private int nenner;
private int zaehler;
public Bruch(int pNenner, int pZaehler) {
nenner = pNenner;
zaehler = pZaehler;
}
public int getNenner() {
return nenner;
}
public void setNenner(int pNenner) {
nenner = pNenner;
}
public int getZaehler() {
return zaehler;
}
public void setZaehler(int pZaehler) {
zaehler = pZaehler;
}
public void kuerzen() {
}
public double asDecimal() {
return (double)zaehler/(double)nenner;
}
}
</syntaxhighlight>
{{Lösung:End}}


=== Mit Objektreferenzen arbeiten ===
=== Mit Objektreferenzen arbeiten ===


In diesem Video zeigt der Kollege Herr Bolte die Grundlagen von Objektreferenzen und der Interaktion von Objekten (hier am Beispiel der BlueJ-Variante {{Greenfoot}}). Die Erklärung aus dem Unterricht (mit dem Vergleich zu einem Paketschein) kannst Du unter [[Lernpfad:Objektorientierte Programmierung mit Java/Referenzen]] finden.
<center>
{{#ev:youtube|uxCjtxdSu24}}
{{#ev:youtube|uxCjtxdSu24}}
</center>


{{Aufgabe:Start}}
Übernimm die gezeigten Klassen in ein neues BlueJ-Projekt und löse die Aufgaben dazu.
{{Aufgabe:End}}
==== Brüche ====
Übernimm die Klasse <code>Bruch</code> von oben und die Klasse <code>Rechner</code> unten.
{{Hinweis|Für das Kürzen eines Bruches benötigst Du den größten gemeinsamen Teiler. Den ggT hatten wir [[Lernpfad:Einführung in Git/8|früher schonmal berechnet]].}}
<syntaxhighlight lang="java" line="1">
public class Rechner {
    /**
    * Multipliziert die Brüche a und b und gibt das Produkt als neues
    * Bruch-Objekt zurück.
    */
    public Bruch multipliziere(Bruch a, Bruch b) {
        return null;
    }
 
    /**
    * Addiert die Brüche a und b und gibt die Summe als neues
    * Bruch-Objekt zurück.
    */
    public Bruch addiere(Bruch a, Bruch b) {
        return null;
    }
    /**
    * Kürzt den Bruch b vollständig (und speichert den gekürzten Bruch in b).
    */
    public void kuerze(Bruch b) {
    }
    /**
    * Bildet den Kehrwert des Bruches (und speichert ihn in b).
    */
    public void kehrwert(Bruch b) {
    }
    /**
    * Dividiert die Brüche a und b und speichert das Ergebnis im Bruch a.
    */
    public Bruch dividiere(Bruch a, Bruch b) {
        return null;
    }
}
</syntaxhighlight>


=== Arrays ===
=== Arrays ===


<center>
{{#ev:youtube|F9Fg_YsZmz4}}
{{#ev:youtube|F9Fg_YsZmz4}}
</center>


[[Kategorie:Projekte:2021/22]]
[[Kategorie:Projekte:2021/22]]

Aktuelle Version vom 7. August 2022, 11:26 Uhr

Seite zum Projekt Fingerübungen des Informatik GK im Schuljahr 2021/22.

Fingerübungen zur Objektorientierten Programmierung

Auf dieser Seite findest Du verschiedene Übungen zur Wiederholung und Festigung der Objektorientierten Programmierung (OOP). Die Übungen sind in verschiedene Kategorien einsortiert. Suche Dir Übungen heraus, bedienen Du noch Nachholbedarf hast.

Grundbegriffe

Der Kollege Herr Bolte hat eine YouTube-Playliste zusammengestellt, die am Beispiel der BlueJ-Variante Greenfoot alle Grundlagen der OOP aus der EF durchgeht und an Beispielen wiederholt. Diese kannst du gut selber nacharbeiten (am besten, indem du die Beispiele direkt mitmachst).

Icon Heft.png
Arbeitsauftrag

Beschreibe mit eigenen Worten so präzise wir möglich die folgenden Begriffe:

  • lokale Variable
  • Objektvariable
  • Parameter
  • Rückgabe
  • Datentyp
  • Objektreferenz
  • Methodenaufruf
  • Bedingte Anweisung
  • logische Verknüpfung
  • Array


Diese Mindmaps zur OOP zeigt dir die wichtigsten Begriffe im Zusammenhang:

Implementierungsdiagramme in Quelltext übersetzen

Icon Heft.png
Arbeitsauftrag

Erstelle zu den UML-Diagrammen unten jeweils ein Klassengerüst mit allen gezeigten Methoden. Die Methoden müssen keine Funktionalität enthalten, ergänze bei Methoden mit Rückgaben einfach nur einen return Befehl.

Zum Beispiel zu +wuerfeln(): int

public int wuerfeln() {
    return 6;
}

Halte Dich bei der Übersetzung immer genau an das UML-Diagramm. Manche der hinteren Diagramme halten sich nicht strikt an unsere Konventionen (z.B. "Alle Objektvariablen sind private"). Achte also auf die Sichtbarkeiten und Namen der Parameter.


Bruch

Bank

Bibliothek

Lösung Bruch
public class Bruch {

	private int nenner;
	private int zaehler;

	public Bruch(int pNenner, int pZaehler) {
		nenner = pNenner;
		zaehler = pZaehler;
	}

	public int getNenner() {
		return nenner;
	}
	
	public void setNenner(int pNenner) {
		nenner = pNenner;
	}
	
	public int getZaehler() {
		return zaehler;
	}
	
	public void setZaehler(int pZaehler) {
		zaehler = pZaehler;
	}
	
	public void kuerzen() {
	
	}
	
	public double asDecimal() {
		return (double)zaehler/(double)nenner;
	}

}


Mit Objektreferenzen arbeiten

In diesem Video zeigt der Kollege Herr Bolte die Grundlagen von Objektreferenzen und der Interaktion von Objekten (hier am Beispiel der BlueJ-Variante Greenfoot). Die Erklärung aus dem Unterricht (mit dem Vergleich zu einem Paketschein) kannst Du unter Lernpfad:Objektorientierte Programmierung mit Java/Referenzen finden.

Icon Heft.png
Arbeitsauftrag

Übernimm die gezeigten Klassen in ein neues BlueJ-Projekt und löse die Aufgaben dazu.


Brüche

Übernimm die Klasse Bruch von oben und die Klasse Rechner unten.

Icon Info.png
Für das Kürzen eines Bruches benötigst Du den größten gemeinsamen Teiler. Den ggT hatten wir früher schonmal berechnet.
public class Rechner {

    /**
     * Multipliziert die Brüche a und b und gibt das Produkt als neues
     * Bruch-Objekt zurück.
     */
    public Bruch multipliziere(Bruch a, Bruch b) {
        return null;
    }
  
    /**
     * Addiert die Brüche a und b und gibt die Summe als neues
     * Bruch-Objekt zurück.
     */
    public Bruch addiere(Bruch a, Bruch b) {
        return null;
    }

    /**
     * Kürzt den Bruch b vollständig (und speichert den gekürzten Bruch in b).
     */
    public void kuerze(Bruch b) {

    }

    /**
     * Bildet den Kehrwert des Bruches (und speichert ihn in b).
     */
    public void kehrwert(Bruch b) {

    }

    /**
     * Dividiert die Brüche a und b und speichert das Ergebnis im Bruch a.
     */
    public Bruch dividiere(Bruch a, Bruch b) {
        return null;
    }

}

Arrays