Selbstkontrolle Objektorientierte Programmierung 1: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== Zeitlicher Ablauf == Ich würde eine Dauer von 3 Stunden vorschlagen. == Viel Spaß und Erfolg == == Vorbereitung == # Öffne '''IntelliJ''' # Schließe d…“
 
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Zeitlicher Ablauf ==
== Zeitlicher Ablauf ==
Ich würde eine Dauer von 3 Stunden vorschlagen.
1,5 Stunden


== Viel Spaß und Erfolg ==
== Viel Spaß und Erfolg ==
Zeile 12: Zeile 12:
# Klicke auf '''Get from VCS'''
# Klicke auf '''Get from VCS'''
## Version control: '''Git'''
## Version control: '''Git'''
## URL: '''https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.git'''
## URL: '''https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.oop.i.git'''
## Clone
## Clone


Zeile 19: Zeile 19:
# Export
# Export
# Export to zip file
# Export to zip file
# [vorname]_[nachname]_selbstkontrolle.zip
# [vorname]_[nachname]_selbstkontrolle_II.zip
# Zip an Gyula senden
# Zip an Lukas senden




{{TOC limit|4}}
{{TOC limit|4}}


== Schleifen ==
== Wiederholung ==
Siehe Package: '''at/digitialcampus/codingcampus/loops/'''
Wiederholung zur strukturierten Programmierung.
==== Aufgabe 1) ====
Zähle in einer '''for-Schleife''' '''rückwärts''' von '''10''' bis '''inklusive 0''' und gib jede Zahl aus.
 
'''Ausgabe'''
 
{{BSL|10 9 8 7 6 5 4 3 2 1 0}}
 
==== Aufgabe 2) ====
Zähle in einer '''for-Schleife''' von '''-30''' bis '''inklusive 30''' und gib jede Zahl aus die '''ohne Rest''' durch '''3''' teilbar ist.
 
'''Ausgabe'''
{{BML|code=
-30
-27
-24
...
24
27
30
}}
 
==== Aufgabe 3) ====
Zähle mit Hilfe einer '''while-Schleife''' und einer separaten Zählvariable von '''0''' bis '''inklusive 10''' und gib die Zahlen aus. Wenn die Zahl größer als '''5''' ist mach '''2 Zeilenumbrüche'''.
 
'''Ausgabe'''
 
{{BML|code=
0
1
2
3
4
5
6
 
7
 
8
 
9
 
10
}}
 
== Methoden ==
Siehe Package: '''at/digitialcampus/codingcampus/methods/'''
==== Aufgabe 1) ====
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben, in einer Zeile wiederholt ausgegeben und mit einem '''Whitespace''' getrennt werden.
 
'''Aufruf'''
 
{{JSL|printLineStipple("X", 10);}}
 
'''Ausgabe'''
 
{{BSL|X X X X X X X X X X}}
 
==== Aufgabe 2) ====
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parmeter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben in einer '''eigenen''' Zeile wiederholt werden. Trenne die Zeilen zusätzlich durch ein '''Linebreak'''.
 
'''Aufruf'''
 
{{JSL|printRowStipple("X", 3);}}
 
 
'''Ausgabe'''
 
{{BML|code=
X
 
X
 
X}}
 
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Nun sollen mit diesen beiden Parametern die beiden '''Methoden''' aus den vorhergehenden Aufgaben aufgerufen werden. Die Methoden aus den vorhergehenden Aufgaben sollen '''nicht''' neu geschrieben werden.
 
'''Aufruf'''
 
{{JSL|printStippleL("X", 3);}}
 
'''Ausgabe'''
 
{{BML|code=
X X X
X
 
X
 
X}}
 
== Input ==
Siehe Package: '''at/digitialcampus/codingcampus/input/'''
 
==== Aufgabe 1) ====
==== Aufgabe 1) ====
Siehe Package: '''at/digitialcampus/codingcampus/repetition/excercise1'''
Lies einen {{JSL|String}} vom Benutzer ein (ganze Zeile) und einen {{JSL|int}}. Die Zahl besagt wie oft der {{JSL|String}} ausgegeben werden soll. Wird ein leerer {{JSL|String}} oder eine ungültiger {{JSL|int}} eingegeben, so soll die Eingabe erneut erfolgen.
Lies einen {{JSL|String}} vom Benutzer ein (ganze Zeile) und einen {{JSL|int}}. Die Zahl besagt wie oft der {{JSL|String}} ausgegeben werden soll. Wird ein leerer {{JSL|String}} oder eine ungültiger {{JSL|int}} eingegeben, so soll die Eingabe erneut erfolgen.


Zeile 139: Zeile 46:
}}
}}


== Arrays ==
== OOP ==
Siehe Package: '''at/digitialcampus/codingcampus/array/'''
 
==== Aufgabe 1) ====
Erstelle eine '''Methode''' die ein {{JSL|int[]}} als Parameter erhält und das '''erste''' und '''letzte''' Element zu einem {{JSL|String}} zusammenfügt und zurückgibt. Verwende dazu die Beispielarrays in der Klasse und gib das Ergebnis aus.
 
'''Aufruf'''
 
{{JSL|System.out.println(getFirstAndLast(arr));}}
 
'''Ausgabe'''
 
{{BSL|First: 0, last: 10}}


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Ertelle jeweils eine '''Methode''' für '''Minimum''' (min), '''Maximum''' (max), und '''Durchschnitt''' (avg), welche den jeweiligen Wert für ein übergebenes {{JSL|int[]}} berechnet. Teste alle Methoden in der {{JSL|main}} Methode mit allen gegebenen {{JSL|int[]}} der Klasse.
Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise2'''
Erstelle folgend die '''Klasse''' '''Person'''. Diese '''Klasse''' soll die '''Attribute''' '''Name''', '''Age''' und '''Gender''' besitzen (Name, Alter, Geschlecht). Für das '''Geschlecht''' ist ein '''enum''' zu erstellen (''female'', ''male'', ''divers'').


'''Beispiel Aufruf'''
Erstelle '''getter''' und '''setter''' für alle '''Attribute'''.


{{JSL|System.out.println("Minimum: " + getMin(arr));}}
Überschreibe weiters {{JSL|toString()}} und erstelle einen {{JSL|String}} der alle relevanten Informationen enthält.


'''Beispiel Ausgabe'''
Erstelle mindestens 6 verschiedene Person in der {{JSL|main}} '''Methode''' und gib diese aus.
 
{{BSL|Minimum: 0}}
 
'''Beispiel Aufruf'''
 
{{JSL|System.out.println("Maximum: " + getMax(arr));}}
 
'''Beispiel Ausgabe'''
 
{{BSL|Maximum: 23}}


==== Aufgabe 3) ====
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche einen {{JSL|int}} als Parameter nimmt. Diese '''Methode''' soll ein {{JSL|int[]}} erstellen und das {{JSL|int[]}} mit den Zahlen von '''0''' bis '''inklusive der angegebenen Zahl''' befüllen und dann zurückgeben. Teste diese '''Methode''' in der {{JSL|main}} '''Methode''' und gib das Array aus (egal wie, z.b.: Schleife, oder {{JSL|Arrays.toString(...)}})
Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise3'''
Erstelle folgend die '''Klasse''' '''House'''. Ein Haus hat die '''Attribute''' '''Doors''', '''Windows''', '''Address''' (Türen, Fenster, Adresse) und eine {{JSL|List}} von '''Person'''. Verwende dafür die '''Person''' aus dem vorhergehenden Beispiel. Die '''Klasse''' '''House''' soll weiters die '''Methode''' {{JSL|addPerson(Person person)}} enthalten um Personen hinzuzufügen. Erstelle '''getter''' und '''setter''' für alle '''Attribute'''.


'''Aufruf'''
Überschreibe nun {{JSL|toString()}} und gib alle relevanten Informationen vom Haus zurück. Dazu gehören auch die Personen die darin leben (verwende {{JSL|toString()}} von {{JSL|Person}}.
{{JML|code=
int[] arr = fillArr(10);
//Ausgabe arr}}


'''Ausgabe'''
Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} '''Methode''', füge einige Personen hinzu, und gib dann das Haus aus.
{{BML|code=
0 1 2 3 4 5 6 7 8 9 10
}}


==== Aufgabe 4) ====
==== Aufgabe 4) ====
Sortiere das in der Klasse gegebene {{JSL|int[]}} mit Hilfe von '''Bubblesort''' und gib das Array aus. Ob '''aufsteigend''' oder '''absteigend''' Sortiert bleibt dir überlassen.
  Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise4'''
 
Erstelle eine '''Klasse''' '''SortedHouse''' welche von {{JSL|House}} aus dem vorhergehenden Beispiel erbt. Überschreibe {{JSL|addPerson(Person person)}} und sortiere, nach dem '''Namen''', entweder die {{JSL|List}} nach dem Einfügen der {{JSL|Person}} oder füge diese direkt an der richtigen Stelle ein.
== Kalender ==
  Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} '''Methode''', füge einige Personen hinzu, und gib dann das Haus aus.
  Siehe Package: '''at/digitialcampus/codingcampus/calendar/'''
==== Aufgabe 1) ====
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
 
'''Ausgabe'''
 
{{BSL|DI 19.10.2021}}
 
== String manipulation ==
Siehe Package: '''at/digitialcampus/codingcampus/stringmanipulation/'''
 
==== Aufgabe 1) ====
Ersetze mit Hilfe von '''regulären Ausdrücken''' folgendes aus dem in der Klasse gegebenen {{JSL|String}}. Folgende Aufzählung ist als Ganzes zu betrachten.
* '''a''' bis '''c''' durch '''X'''
* '''f''' bis '''z''' durch '''Y'''
* '''1''' bis '''5''' durch '''a'''
* '''4''' bis '''9''' durch '''b'''
und gib den {{JSL|String}}, bei dem alles ersetzt wurde, aus.
 
'''Ausgabe'''
 
{{BSL|HeYYe deY ab.a0.a0aa YYYd eYY YeYY YYYeY TXY. ZYXY YYXY eY YYYXY YYe eYYeY TeYY, deY aa LeYYe YXYYeYXeY, XXeY dXY YYY dYXY eYXY!}}
 
==== Aufgabe 2) ====
Erstelle einen regulären Ausdruck der folgendem Sachverhalt entspricht und prüfe diesen in der {{JSL|main}} '''Methode'''. Die Punkte gehören alle zum gleichen regulären Ausdruck und sollen nacheinander zutreffen:
# Drei oder mehr Kleinbuchstaben
# Eine Zahl größer als 0
# Zwei Zahlen
# Ein oder mehr Großbuchstaben
 
'''Aufruf'''{{Space10}}{{JSL|"abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
 
'''Aufruf'''{{Space10}}{{JSL|"Abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
'''Aufruf'''{{Space10}}{{JSL|"luke010A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
'''Aufruf'''{{Space10}}{{JSL|"test101ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
 
'''Aufruf'''{{Space10}}{{JSL|"test1ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
== Datenströme ==
  Siehe Package: '''at/digitialcampus/codingcampus/streams/'''
 
'''Die Einlesemethode in allen Aufgaben ist frei wählbar'''
 
==== Aufgabe 1) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib diesen anschließend aus.
 
==== Aufgabe 2) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib die Anzahl der Worte des {{JSL|String}} aus.
 
==== Aufgabe 3) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein, zerlege diesen in Worte und sortiere diese mittels '''Bubblesort''' '''lexikographisch''' ({{JSL|string.compareTo(otherString)}} und gib das sortierte {{JSL|String[]}} aus.
 
==== Aufgabe 4) Bonus ====
Sortiere wie in der vorhergehenden Aufgabe. Bei der Ausgabe sollen Wörter nicht mehrfach ausgegeben werden, weiters füge bei jedem Wort die Anzahl der vorkommnisse hinzu.

Aktuelle Version vom 15. November 2021, 07:46 Uhr

Zeitlicher Ablauf

1,5 Stunden

Viel Spaß und Erfolg

Vorbereitung

  1. Öffne IntelliJ
  2. Schließe das bestehende Projekt
    1. File
    2. Close Project
  3. Nun solltest du den Welcome Screen von IntelliJ sehen
  4. Klicke auf Get from VCS
    1. Version control: Git
    2. URL: https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.oop.i.git
    3. Clone

Abgabe

  1. File
  2. Export
  3. Export to zip file
  4. [vorname]_[nachname]_selbstkontrolle_II.zip
  5. Zip an Lukas senden


Wiederholung

Wiederholung zur strukturierten Programmierung.

Aufgabe 1)

Siehe Package: at/digitialcampus/codingcampus/repetition/excercise1

Lies einen String vom Benutzer ein (ganze Zeile) und einen int. Die Zahl besagt wie oft der String ausgegeben werden soll. Wird ein leerer String oder eine ungültiger int eingegeben, so soll die Eingabe erneut erfolgen.

Eingabe

Bitte geben Sie einen Text ein:
>> Heute wird ein guter Tag
Wie oft soll der Text ausgegeben werden:
>> 3

Ausgabe

Heute wird ein guter Tag
Heute wird ein guter Tag
Heute wird ein guter Tag

OOP

Aufgabe 2)

Siehe Package: at/digitialcampus/codingcampus/oop/excercise2

Erstelle folgend die Klasse Person. Diese Klasse soll die Attribute Name, Age und Gender besitzen (Name, Alter, Geschlecht). Für das Geschlecht ist ein enum zu erstellen (female, male, divers).

Erstelle getter und setter für alle Attribute.

Überschreibe weiters toString() und erstelle einen String der alle relevanten Informationen enthält.

Erstelle mindestens 6 verschiedene Person in der main Methode und gib diese aus.

Aufgabe 3)

Siehe Package: at/digitialcampus/codingcampus/oop/excercise3

Erstelle folgend die Klasse House. Ein Haus hat die Attribute Doors, Windows, Address (Türen, Fenster, Adresse) und eine List von Person. Verwende dafür die Person aus dem vorhergehenden Beispiel. Die Klasse House soll weiters die Methode addPerson(Person person) enthalten um Personen hinzuzufügen. Erstelle getter und setter für alle Attribute.

Überschreibe nun toString() und gib alle relevanten Informationen vom Haus zurück. Dazu gehören auch die Personen die darin leben (verwende toString() von Person.

Erstelle mindestens 3 verschiedene Häuser in der main Methode, füge einige Personen hinzu, und gib dann das Haus aus.

Aufgabe 4)

Siehe Package: at/digitialcampus/codingcampus/oop/excercise4

Erstelle eine Klasse SortedHouse welche von House aus dem vorhergehenden Beispiel erbt. Überschreibe addPerson(Person person) und sortiere, nach dem Namen, entweder die List nach dem Einfügen der Person oder füge diese direkt an der richtigen Stelle ein.

Erstelle mindestens 3 verschiedene Häuser in der main Methode, füge einige Personen hinzu, und gib dann das Haus aus.