DCV 2023 09/Uebung Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Sandro (Diskussion | Beiträge)
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Intro ==
{{TOC limit|4}}
In folgender Übung wird ein {{JSL|Enum}} verlangt. Ein {{JSL|Enum}}, ist einer Klasse sehr ähnlich, jedoch hat Sie zur Laufzeit eine Definierte Anzahl von Instanzen. Es können keine neuen Instanzen zur Laufzeit erstellt werden. Anbei ein Beispiel:


{{CSML|code=
== OOP ==
using System;
 
namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Hello World!");   
    }
  }
}
}}
{{CSSL|Console.WriteLine("Hello World!");}}
 
{{JML|code=
public void setData(int hallo) {
  System.out.println("Test");
}
}}
 
{{JSL|System.out.println("Test");}}
 
{{JML|code=
//Direction.java
public enum Direction {
  UP, DOWN, LEFT, RIGHT
}
 
//Moveable.java
public class Moveable {
  public void move(Direction dir) {
    //TODO
  }
}
 
//MoveMain.java
...
public static void main(String[] args) {
  Moveable moveable = createMoveable();
  Direction d = getRandomDirection();
  moveable.move(d);
}
}}
 
== Vorbereitung ==
# Öffne '''IntelliJ'''
# Schließe das bestehende Projekt
## File
## Close Project
# Nun solltest du den Welcome Screen von '''IntelliJ''' sehen
# Klicke auf '''Get from VCS'''
## Version control: '''Git'''
## URL: '''https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.oop.i.git'''
## Clone
 
{{TOC limit|4}}


== Wiederholung ==
Wiederholung zur strukturierten Programmierung.
==== Aufgabe 1) ====
==== Aufgabe 1) ====
Siehe Package: '''at/digitialcampus/codingcampus/repetition/excercise1'''
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'').
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.


'''Eingabe'''
Erstelle '''getter''' und '''setter''' für alle '''Attribute'''.
{{BML|code=
Bitte geben Sie einen Text ein:
>> Heute wird ein guter Tag
Wie oft soll der Text ausgegeben werden:
>> 3
}}


'''Ausgabe'''
Überschreibe weiters {{JSL|ToString()}} und erstelle einen {{JSL|string}} der alle relevanten Informationen enthält.
{{BML|code=
Heute wird ein guter Tag
Heute wird ein guter Tag
Heute wird ein guter Tag
}}


== OOP ==
Erstelle mindestens 10 verschiedene Personen in der '''Methode''' {{JSL|Aufgabe1_Main.Start()}} und gib diese aus.


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise2'''
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'''.
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 {{JSL|toString()}} und erstelle einen {{JSL|String}} der alle relevanten Informationen enthält.
Ü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}}.


  Erstelle mindestens 6 verschiedene Person in der {{JSL|main}} '''Methode''' und gib diese aus.
  Erstelle mindestens 3 verschiedene Häuser in der '''Methode''' {{JSL|Aufgabe2_Main.Start()}}, füge einige Personen hinzu, und gib dann das Haus aus.


==== Aufgabe 3) ====
==== Aufgabe 3) ====
Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise3'''
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.
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'''.
Erstelle mindestens 3 verschiedene Häuser in der '''Methode''' {{JSL|Aufgabe3_Main.Start()}}, füge einige Personen hinzu, und gib dann das Haus aus.


Ü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}}.
== Filesystem ==


Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} '''Methode''', füge einige Personen hinzu, und gib dann das Haus aus.
==== Aufgabe 4) ====
Frage den Anwender nach einem Dateipfad. Prüfe ob der Pfad gültig ist. Falls ja, finde die '''größte Datei''' im Verzeichnis. Hierfür können die Klassen {{JSL|Directory}} und {{JSL|FileInfo}} von nutzen sein.


==== Aufgabe 4) ====
==== Aufgabe 5 ====
Siehe Package: '''at/digitialcampus/codingcampus/oop/excercise4'''
Frage den Anwender nach einem Dateipfad. Prüfe ob der Pfad gültig ist. Falls ja, finde die '''größte Datei''' im Verzeichnis '''inklusive aller Unterverzeichnisse'''. Wie würde es aussehen, wenn du nicht nur die größte sondern die 5 größten Dateien suchen würdest? Stelle dazu überlegungen an.
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.
 
Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} '''Methode''', füge einige Personen hinzu, und gib dann das Haus aus.
==== '''Bonusaufgabe 6''' ====
Implementiere deine Überlegungen aus der vorhergehenden Aufgabe und finde die 5 größten Dateien in einem angegebenen Ordner inklusive Unterordner.

Aktuelle Version vom 24. November 2023, 06:51 Uhr

OOP

Aufgabe 1)

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 10 verschiedene Personen in der Methode Aufgabe1_Main.Start() und gib diese aus.

Aufgabe 2)

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 Methode Aufgabe2_Main.Start(), füge einige Personen hinzu, und gib dann das Haus aus.

Aufgabe 3)

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 Methode Aufgabe3_Main.Start(), füge einige Personen hinzu, und gib dann das Haus aus.

Filesystem

Aufgabe 4)

Frage den Anwender nach einem Dateipfad. Prüfe ob der Pfad gültig ist. Falls ja, finde die größte Datei im Verzeichnis. Hierfür können die Klassen Directory und FileInfo von nutzen sein.

Aufgabe 5

Frage den Anwender nach einem Dateipfad. Prüfe ob der Pfad gültig ist. Falls ja, finde die größte Datei im Verzeichnis inklusive aller Unterverzeichnisse. Wie würde es aussehen, wenn du nicht nur die größte sondern die 5 größten Dateien suchen würdest? Stelle dazu überlegungen an.

Bonusaufgabe 6

Implementiere deine Überlegungen aus der vorhergehenden Aufgabe und finde die 5 größten Dateien in einem angegebenen Ordner inklusive Unterordner.