<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gyula</id>
	<title>CCWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gyula"/>
	<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php/Spezial:Beitr%C3%A4ge/Gyula"/>
	<updated>2026-04-14T05:23:43Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3740</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3740"/>
		<updated>2024-12-09T07:53:01Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Verwenden von Schriftarten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
==== Wiederholung CSS Selektor ====&lt;br /&gt;
&lt;br /&gt;
Schau noch einmal die CSS Selektoren an!&lt;br /&gt;
&lt;br /&gt;
Verwende Google (ChatGPT) für die Recherge:&lt;br /&gt;
* Welche CSS Anweisungen sind aktiv?&lt;br /&gt;
* Ab wann, bis wann gelten diese Anweisungen?&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verwenden von Schriftarten ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Schriftart laden ====&lt;br /&gt;
&lt;br /&gt;
Lade eine neue [https://www.w3schools.com/css/css_font.asp Schriftart] ein und verwende es in Headline 1.&lt;br /&gt;
Neue Fonts kann man auch in [https://fonts.google.com/ Google Fonts] finden.&lt;br /&gt;
&lt;br /&gt;
==== Fallback Mechanismus ====&lt;br /&gt;
&lt;br /&gt;
Definiere [https://www.w3schools.com/css/css_font_fallbacks.asp Fallback] für die Schriftart.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;br /&gt;
&lt;br /&gt;
== Fancy Gadgets ==&lt;br /&gt;
&lt;br /&gt;
Probiere aus verschiedene Werkzeuge:&lt;br /&gt;
* [https://www.w3schools.com/css/css3_transitions.asp Transition] (Verzögerte Aktion)&lt;br /&gt;
* [https://www.w3schools.com/css/css3_animations.asp Animation]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_2dtransforms.asp Transformation]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_gradients.asp Gradient]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_shadows.asp Schatten]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_variables.asp CSS Variablen]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3739</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3739"/>
		<updated>2024-12-09T07:49:55Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Fancy Gadgets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
==== Wiederholung CSS Selektor ====&lt;br /&gt;
&lt;br /&gt;
Schau noch einmal die CSS Selektoren an!&lt;br /&gt;
&lt;br /&gt;
Verwende Google (ChatGPT) für die Recherge:&lt;br /&gt;
* Welche CSS Anweisungen sind aktiv?&lt;br /&gt;
* Ab wann, bis wann gelten diese Anweisungen?&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verwenden von Schriftarten ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Schriftart laden ====&lt;br /&gt;
&lt;br /&gt;
Lade eine neue [https://www.w3schools.com/css/css_font.asp Schriftart] ein und verwende es in Headline 1.&lt;br /&gt;
&lt;br /&gt;
==== Fallback Mechanismus ====&lt;br /&gt;
&lt;br /&gt;
Definiere [https://www.w3schools.com/css/css_font_fallbacks.asp Fallback] für die Schriftart.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;br /&gt;
&lt;br /&gt;
== Fancy Gadgets ==&lt;br /&gt;
&lt;br /&gt;
Probiere aus verschiedene Werkzeuge:&lt;br /&gt;
* [https://www.w3schools.com/css/css3_transitions.asp Transition] (Verzögerte Aktion)&lt;br /&gt;
* [https://www.w3schools.com/css/css3_animations.asp Animation]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_2dtransforms.asp Transformation]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_gradients.asp Gradient]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_shadows.asp Schatten]&lt;br /&gt;
* [https://www.w3schools.com/css/css3_variables.asp CSS Variablen]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3738</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3738"/>
		<updated>2024-12-09T07:41:34Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
==== Wiederholung CSS Selektor ====&lt;br /&gt;
&lt;br /&gt;
Schau noch einmal die CSS Selektoren an!&lt;br /&gt;
&lt;br /&gt;
Verwende Google (ChatGPT) für die Recherge:&lt;br /&gt;
* Welche CSS Anweisungen sind aktiv?&lt;br /&gt;
* Ab wann, bis wann gelten diese Anweisungen?&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verwenden von Schriftarten ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Schriftart laden ====&lt;br /&gt;
&lt;br /&gt;
Lade eine neue [https://www.w3schools.com/css/css_font.asp Schriftart] ein und verwende es in Headline 1.&lt;br /&gt;
&lt;br /&gt;
==== Fallback Mechanismus ====&lt;br /&gt;
&lt;br /&gt;
Definiere [https://www.w3schools.com/css/css_font_fallbacks.asp Fallback] für die Schriftart.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;br /&gt;
&lt;br /&gt;
== Fancy Gadgets ==&lt;br /&gt;
&lt;br /&gt;
Probiere aus verschiedene Werkzeuge:&lt;br /&gt;
* Transformation&lt;br /&gt;
* Transaction&lt;br /&gt;
* Animation&lt;br /&gt;
* Gradient&lt;br /&gt;
* CSS Variablen&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3737</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3737"/>
		<updated>2024-12-09T07:31:51Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Daten tabellarisch darstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
==== Wiederholung CSS Selektor ====&lt;br /&gt;
&lt;br /&gt;
Schau noch einmal die CSS Selektoren an!&lt;br /&gt;
&lt;br /&gt;
Verwende Google (ChatGPT) für die Recherge:&lt;br /&gt;
* Welche CSS Anweisungen sind aktiv?&lt;br /&gt;
* Ab wann, bis wann gelten diese Anweisungen?&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verwenden von Schriftarten ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Schriftart laden ====&lt;br /&gt;
&lt;br /&gt;
Lade eine neue [https://www.w3schools.com/css/css_font.asp Schriftart] ein und verwende es in Headline 1.&lt;br /&gt;
&lt;br /&gt;
==== Fallback Mechanismus ====&lt;br /&gt;
&lt;br /&gt;
Definiere [https://www.w3schools.com/css/css_font_fallbacks.asp Fallback] für die Schriftart.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3736</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3736"/>
		<updated>2024-12-04T09:39:47Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Absolute / Relative Größe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
==== Wiederholung CSS Selektor ====&lt;br /&gt;
&lt;br /&gt;
Schau noch einmal die CSS Selektoren an!&lt;br /&gt;
&lt;br /&gt;
Verwende Google (ChatGPT) für die Recherge:&lt;br /&gt;
* Welche CSS Anweisungen sind aktiv?&lt;br /&gt;
* Ab wann, bis wann gelten diese Anweisungen?&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3735</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3735"/>
		<updated>2024-12-04T09:37:13Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Flex = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3734</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3734"/>
		<updated>2024-12-04T09:37:02Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Textformatierung ===&lt;br /&gt;
&lt;br /&gt;
Für mehr visuelle Möglichkeiten kannst du die [https://www.w3schools.com/css/css_font_size.asp Schriftgröße], [https://www.w3schools.com/css/css_font_style.asp Gewicht] und [https://www.w3schools.com/css/css_font.asp Schriftart] ändern.&lt;br /&gt;
&lt;br /&gt;
Fragen, die mithilfe von Google (ChatGPT) zu beantworten sind:&lt;br /&gt;
* Wie wählen wir Schriftarten aus?&lt;br /&gt;
* Welche Schriftarten passen gut zusammen?&lt;br /&gt;
* Worauf muss man mit Schriftarten aufpassen?&lt;br /&gt;
&lt;br /&gt;
==== Absolute / Relative Größe ====&lt;br /&gt;
&lt;br /&gt;
Verwende unterschiedliche Techniken, Größenverhältnisse anzupassen&lt;br /&gt;
* px&lt;br /&gt;
* cm&lt;br /&gt;
* em&lt;br /&gt;
* %&lt;br /&gt;
* vw&lt;br /&gt;
* vh&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die [https://developer.mozilla.org/en-US/docs/Web/CSS/clamp clamp()] CSS Funktionen gut brauchen...&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;br /&gt;
&lt;br /&gt;
=== Block und Inline Elemente ===&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen [https://www.w3schools.com/html/html_blocks.asp block und inline] Elemente? Welche sind die von bisher verwendeten Elementen Block-Elementen, welche sind Inline?&lt;br /&gt;
&lt;br /&gt;
=== DIV und SPAN ===&lt;br /&gt;
&lt;br /&gt;
Was ist die Rolle von [https://www.w3schools.com/html/html_div.asp div] und [https://www.w3schools.com/html/html_blocks.asp span] Elementen? Verwende in deiner Webseite beide!&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
Organisiere deine Webseite in verschiedene [https://www.w3schools.com/html/html_div.asp div]&#039;s. Probiere unterschiedliche Layouts aus.&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout durch [https://www.w3schools.com/css/css_float.asp Float] Technik.&lt;br /&gt;
&lt;br /&gt;
=== Flex ====&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css3_flexbox.asp Flexbox].&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Layout mit [https://www.w3schools.com/css/css_grid.asp Grid].&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3733</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3733"/>
		<updated>2024-12-04T08:53:05Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Überarbeite dein Inline CSS mit Anwendung von style Tage. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
Was sind [https://www.w3schools.com/css/css_selectors.asp Selektoren]? Welche Selektoren kennst du schon?&lt;br /&gt;
Eine längere Liste findest du [https://www.w3schools.com/cssref/css_selectors.php hier]!&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3732</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3732"/>
		<updated>2024-12-04T08:50:36Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
=== Daten tabellarisch darstellen ===&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_tables.asp Tabelle] mit Headline und Datenzeilen zu deiner Webseite.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3731</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3731"/>
		<updated>2024-12-04T08:48:51Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Verwende verschiedene Farben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden? Was bedeutet &#039;&#039;A&#039;&#039; in RGBA oder in HSLA?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3730</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3730"/>
		<updated>2024-12-04T08:47:22Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Verwende Text verschiedene Farbe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende verschiedene Farben ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern. Verwende [https://www.w3schools.com/html/html_colors.asp Farben], um das Aussehen deiner Webseite zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Verwende Farben:&lt;br /&gt;
* mit Namen&lt;br /&gt;
* mit HEX Code&lt;br /&gt;
* mit RGB Code&lt;br /&gt;
* mit HSL&lt;br /&gt;
&lt;br /&gt;
Was ist der Unterschied zwischen diese Methoden?&lt;br /&gt;
&lt;br /&gt;
Wie finde ich zusammenpassenden Farben? Verwende Google (oder ChatGPT) für deine Recherche!&lt;br /&gt;
&lt;br /&gt;
Worauf muss man bei Textfarben besonders achten? Welche Werkzeuge können da uns behilflich sein?&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3729</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3729"/>
		<updated>2024-12-04T08:41:40Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende Text verschiedene Farbe ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern.&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
Nur Text macht keinen guten ersten Eindruck für eine Webseite. Füge [https://www.w3schools.com/html/html_images.asp Bilder] zu der Seite ein.&lt;br /&gt;
&lt;br /&gt;
=== Favicon und Title ===&lt;br /&gt;
&lt;br /&gt;
Was ist ein Favicon und wo wird es angezeigt?&lt;br /&gt;
&lt;br /&gt;
Füge eine [https://www.w3schools.com/html/html_favicon.asp Favicon] zu deiner Seite!&lt;br /&gt;
&lt;br /&gt;
Füge einen [https://www.w3schools.com/html/html_page_title.asp Titel] zu deiner Seite!&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3728</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3728"/>
		<updated>2024-12-04T08:38:16Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende Text verschiedene Farbe ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit [https://www.w3schools.com/html/html_css.asp Inline CSS] ändern.&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der [https://www.w3schools.com/css/css_intro.asp CSS Sprache].&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine [https://www.w3schools.com/html/html_css.asp externe CSS Dokument] verwenden und anknüpfen.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3727</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3727"/>
		<updated>2024-12-04T08:35:52Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Weitere Dokumente verknüpfen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. [https://www.w3schools.com/html/html_links.asp Verlinke] die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende Text verschiedene Farbe ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit Inline CSS ändern.&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der CSS Sprache.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine externe CSS Dokument verwenden und anknüpfen.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3726</id>
		<title>DCV 2024 09/HTML</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/HTML&amp;diff=3726"/>
		<updated>2024-12-04T07:48:42Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „= HTML / CSS Übungen =  Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.  Die Prioritäten sind: * klare Code-Struktur * Angenehmes Design  == Pädagogische Konzept ==  Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet,…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HTML / CSS Übungen =&lt;br /&gt;
&lt;br /&gt;
Das Ziel des Moduls ist, eine Responsive Webseite mithilfe von HTML und CSS zu erstellen. Eine responsive Seite, kann auf unterschiedlichen Display Größen (zB: Monitor, Smartphone) vernünftig angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Prioritäten sind:&lt;br /&gt;
* klare Code-Struktur&lt;br /&gt;
* Angenehmes Design&lt;br /&gt;
&lt;br /&gt;
== Pädagogische Konzept ==&lt;br /&gt;
&lt;br /&gt;
Als HTML / CSS viel einfacher ist, als zB: Datenbankanbindung in Java, werden wir den Fokus auf Selbststudium setzen. Dies bedeutet, dass ihr einen Hinweis erhalten werdet, was-wo beschrieben ist und ihr musst die notwendige Information selbst zusammentragen.&lt;br /&gt;
&lt;br /&gt;
== HTML Sprache ==&lt;br /&gt;
Konzept der HTML-Sprache kennenlernen.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Was ist ein Tag?&lt;br /&gt;
* Wo beginnt ein Tag, wo endet es?&lt;br /&gt;
* Was ist ein Attribut?&lt;br /&gt;
* Was sind die Pflicht Tags für eine minimale Webseite?&lt;br /&gt;
&lt;br /&gt;
Literatur: [https://www.w3schools.com/html/default.asp HTML Basics]&lt;br /&gt;
&lt;br /&gt;
=== Hello World! in HTML ===&lt;br /&gt;
Erstelle ein HTML Dokument, die als minimal HTML dient und nichts anderes als &amp;quot;Hello World!&amp;quot; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
=== Erstelle ein Dokument mit mehreren Absätzen ===&lt;br /&gt;
&lt;br /&gt;
Verwende [https://www.w3schools.com/html/html_paragraphs.asp Paragraf] für eine strukturierte Form für längere Texte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Struktur eines Dokuments mit Headline H1 bis H6 ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Fan Page für deine Lieblings-TV-Serie (Fußballklub). Strukturiere die Information in [https://www.w3schools.com/html/html_headings.asp Kapiteln].&lt;br /&gt;
&lt;br /&gt;
=== Verwende Liste ===&lt;br /&gt;
&lt;br /&gt;
Liste der Schauspieler / Fußballspieler kann auch als Liste dargestellt werden. Welche Formen der Listen existieren.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Dokumente verknüpfen ===&lt;br /&gt;
&lt;br /&gt;
Erstelle Detail-Seite für die wichtigen Personen. Verlinke die Seiten auf die Hauptseite. Achte darauf, dass du auch zurücknavigieren musst.&lt;br /&gt;
&lt;br /&gt;
=== Verwende Text verschiedene Farbe ===&lt;br /&gt;
&lt;br /&gt;
Das Aussehen kannst du mit Inline CSS ändern.&lt;br /&gt;
&lt;br /&gt;
=== Überarbeite dein Inline CSS mit Anwendung von &#039;&#039;&#039;style&#039;&#039;&#039; Tage. ===&lt;br /&gt;
&lt;br /&gt;
Erkenne das spezielle Format der CSS Sprache.&lt;br /&gt;
&lt;br /&gt;
=== Anwendung externe CSS Dokument ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir eine harmonische, vergleichbare Aussehen zwischen verschiedenen Unterseiten brauchen, ist es ratsam eine externe CSS Dokument verwenden und anknüpfen.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3725</id>
		<title>DCV 2024 09</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3725"/>
		<updated>2024-12-04T07:27:30Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[DCV_2024_09/Allgemeines|Allgemeines]] ==&lt;br /&gt;
&lt;br /&gt;
== [[DCV_2024_09/Protokoll|Protokoll]] ==&lt;br /&gt;
&lt;br /&gt;
== Strukturierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Strukturierte_Programmierung_Uebungen|Übungen zur strukturierten Programmierung]]&lt;br /&gt;
* [[DCV_2024_09/Selbsttest|Selbsttest Herbstferien]]&lt;br /&gt;
&lt;br /&gt;
== Objektorientierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Objekt_Orientierte_Programmierung_Übungen|Übungen objektorientierte]]&lt;br /&gt;
* [[DCV_2024_09/OOP_Selbsttest|OOP Selbsttest 2024.11]]&lt;br /&gt;
&lt;br /&gt;
== Datenbanken ==&lt;br /&gt;
* [[DCV_2024_09/DB_Übungen|Datenbank Übungen]]&lt;br /&gt;
* [[DCV_2024_09/DB_Selbsttest|Selbsttest für DB Entwicklung]]&lt;br /&gt;
&lt;br /&gt;
== HTML / CSS ==&lt;br /&gt;
* [[DCV_2024_09/HTML|HTML Übungen]]&lt;br /&gt;
&lt;br /&gt;
== GIT ==&lt;br /&gt;
* [[DCV_2024_09/Git|Git]]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3724</id>
		<title>DCV 2024 09/DB Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3724"/>
		<updated>2024-12-02T09:05:28Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Selbsttest Datenbankentwicklung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Selbsttest Datenbankentwicklung =&lt;br /&gt;
&lt;br /&gt;
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ausgangspunkt ist der Quellkode für &#039;&#039;&#039;Zoo&#039;&#039;&#039;. Dieser Kode werden wir mit C.R.U.D so ergänzen, dass &#039;&#039;&#039;Tiere&#039;&#039;&#039; direkt in Datenbank gespeichert werden...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Model für die Datenbanktabelle beschreiben ==&lt;br /&gt;
&lt;br /&gt;
Beantworte schriftlich die folgenden Fragen in Bezug der &#039;&#039;&#039;Tiere&#039;&#039;&#039;:&lt;br /&gt;
* Wie soll die Tabelle genannt werden?&lt;br /&gt;
* Welche Spalten sind notwendig?&lt;br /&gt;
* Welche Datentypen passen zu meinem Java OOP Programm?&lt;br /&gt;
* Welche Spalte ist der PK?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Tabelle in DBeaver eingeben ==&lt;br /&gt;
&lt;br /&gt;
Erstelle die Tabelle (DDL) entsprechend deinen Plan aus der Aufgabe 1. Füge Testdaten mithilfe des DBeavers zu deiner Tabelle.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden ==&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden.&lt;br /&gt;
Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
public class DBManager {&lt;br /&gt;
    private static DBManager instance = null;&lt;br /&gt;
&lt;br /&gt;
    private DBManager(){&lt;br /&gt;
       // ...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static DBManager getInstance() {&lt;br /&gt;
        if (instance == null){&lt;br /&gt;
            instance = new DBManager();&lt;br /&gt;
        }&lt;br /&gt;
        return instance;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Diese Singleton Pattern hat den Vorteil, dass anderen Klassen des OOP ganz einfach aufrufen können:&lt;br /&gt;
{{JSL|DBManager.getInstance().myFunction();}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollst du erst alle Statements (SELECT, INSERT, ...) in DBeaver erstellen und wenn alles korrekt funktioniert in Java übernehmen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.1: SELECT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen...&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: INSERT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein INSERT einen neuen Rekord entsprechend einem Objekt in DB zufügt. Rufe diese Funktion als ein Test aus der main() auf.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: UPDATE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein UPDATE eine Änderung des Objekts in DB speichert. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.3: DELETE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein DELETE einen neuen Rekord, falls das Objekt gelöscht wurde.  An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 1 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Gehege&#039;&#039;&#039;. Achte auf die 1-N Relation (foreign key) zwischen &#039;&#039;&#039;Tier&#039;&#039;&#039; und &#039;&#039;&#039;Gehege&#039;&#039;&#039;. (1 Tier kann nur in einem Gehege sein, aber 1 Gehege kann viele Tiere beinhalten)&lt;br /&gt;
Füge mit DBeaver die notwendigen Gehege in der neue angelegte Tabelle.&lt;br /&gt;
Initialisiere die Liste der Gehege aus der Datenbank (SELECT).&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 2 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. Achte auf die N-M Relation (foreign key) zwischen &#039;&#039;&#039;Gehege&#039;&#039;&#039; und &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. (1 Pflegeperson kann mehrere Gehege auf die Aufgabeliste haben, und zu einem Gehege kann mehrere Pflegepersonen zuständig sein). &lt;br /&gt;
&lt;br /&gt;
Füge mit DBeaver die notwendigen Pfleger und Aufgaben in der neue angelegten Tabellen.&lt;br /&gt;
Initialisiere die Liste der Pflegeperson und Aufgaben aus der Datenbank (SELECT).&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3723</id>
		<title>DCV 2024 09/DB Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3723"/>
		<updated>2024-12-02T09:04:42Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe 3.1: SELECT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Selbsttest Datenbankentwicklung =&lt;br /&gt;
&lt;br /&gt;
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ausgangspunkt ist der Quellkode für &#039;&#039;&#039;Zoo&#039;&#039;&#039;. Dieser Kode werden wir so ergänzen, dass &#039;&#039;&#039;Tiere&#039;&#039;&#039; direkt in Datenbank gespeichert werden...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Model für die Datenbanktabelle beschreiben ==&lt;br /&gt;
&lt;br /&gt;
Beantworte schriftlich die folgenden Fragen in Bezug der &#039;&#039;&#039;Tiere&#039;&#039;&#039;:&lt;br /&gt;
* Wie soll die Tabelle genannt werden?&lt;br /&gt;
* Welche Spalten sind notwendig?&lt;br /&gt;
* Welche Datentypen passen zu meinem Java OOP Programm?&lt;br /&gt;
* Welche Spalte ist der PK?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Tabelle in DBeaver eingeben ==&lt;br /&gt;
&lt;br /&gt;
Erstelle die Tabelle (DDL) entsprechend deinen Plan aus der Aufgabe 1. Füge Testdaten mithilfe des DBeavers zu deiner Tabelle.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden ==&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden.&lt;br /&gt;
Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
public class DBManager {&lt;br /&gt;
    private static DBManager instance = null;&lt;br /&gt;
&lt;br /&gt;
    private DBManager(){&lt;br /&gt;
       // ...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static DBManager getInstance() {&lt;br /&gt;
        if (instance == null){&lt;br /&gt;
            instance = new DBManager();&lt;br /&gt;
        }&lt;br /&gt;
        return instance;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Diese Singleton Pattern hat den Vorteil, dass anderen Klassen des OOP ganz einfach aufrufen können:&lt;br /&gt;
{{JSL|DBManager.getInstance().myFunction();}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollst du erst alle Statements (SELECT, INSERT, ...) in DBeaver erstellen und wenn alles korrekt funktioniert in Java übernehmen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.1: SELECT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen...&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: INSERT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein INSERT einen neuen Rekord entsprechend einem Objekt in DB zufügt. Rufe diese Funktion als ein Test aus der main() auf.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: UPDATE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein UPDATE eine Änderung des Objekts in DB speichert. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.3: DELETE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein DELETE einen neuen Rekord, falls das Objekt gelöscht wurde.  An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 1 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Gehege&#039;&#039;&#039;. Achte auf die 1-N Relation (foreign key) zwischen &#039;&#039;&#039;Tier&#039;&#039;&#039; und &#039;&#039;&#039;Gehege&#039;&#039;&#039;. (1 Tier kann nur in einem Gehege sein, aber 1 Gehege kann viele Tiere beinhalten)&lt;br /&gt;
Füge mit DBeaver die notwendigen Gehege in der neue angelegte Tabelle.&lt;br /&gt;
Initialisiere die Liste der Gehege aus der Datenbank (SELECT).&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 2 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. Achte auf die N-M Relation (foreign key) zwischen &#039;&#039;&#039;Gehege&#039;&#039;&#039; und &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. (1 Pflegeperson kann mehrere Gehege auf die Aufgabeliste haben, und zu einem Gehege kann mehrere Pflegepersonen zuständig sein). &lt;br /&gt;
&lt;br /&gt;
Füge mit DBeaver die notwendigen Pfleger und Aufgaben in der neue angelegten Tabellen.&lt;br /&gt;
Initialisiere die Liste der Pflegeperson und Aufgaben aus der Datenbank (SELECT).&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3722</id>
		<title>DCV 2024 09/DB Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3722"/>
		<updated>2024-12-02T09:04:17Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Selbsttest Datenbankentwicklung =&lt;br /&gt;
&lt;br /&gt;
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ausgangspunkt ist der Quellkode für &#039;&#039;&#039;Zoo&#039;&#039;&#039;. Dieser Kode werden wir so ergänzen, dass &#039;&#039;&#039;Tiere&#039;&#039;&#039; direkt in Datenbank gespeichert werden...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Model für die Datenbanktabelle beschreiben ==&lt;br /&gt;
&lt;br /&gt;
Beantworte schriftlich die folgenden Fragen in Bezug der &#039;&#039;&#039;Tiere&#039;&#039;&#039;:&lt;br /&gt;
* Wie soll die Tabelle genannt werden?&lt;br /&gt;
* Welche Spalten sind notwendig?&lt;br /&gt;
* Welche Datentypen passen zu meinem Java OOP Programm?&lt;br /&gt;
* Welche Spalte ist der PK?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Tabelle in DBeaver eingeben ==&lt;br /&gt;
&lt;br /&gt;
Erstelle die Tabelle (DDL) entsprechend deinen Plan aus der Aufgabe 1. Füge Testdaten mithilfe des DBeavers zu deiner Tabelle.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden ==&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden.&lt;br /&gt;
Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
public class DBManager {&lt;br /&gt;
    private static DBManager instance = null;&lt;br /&gt;
&lt;br /&gt;
    private DBManager(){&lt;br /&gt;
       // ...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static DBManager getInstance() {&lt;br /&gt;
        if (instance == null){&lt;br /&gt;
            instance = new DBManager();&lt;br /&gt;
        }&lt;br /&gt;
        return instance;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Diese Singleton Pattern hat den Vorteil, dass anderen Klassen des OOP ganz einfach aufrufen können:&lt;br /&gt;
{{JSL|DBManager.getInstance().myFunction();}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollst du erst alle Statements (SELECT, INSERT, ...) in DBeaver erstellen und wenn alles korrekt funktioniert in Java übernehmen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.1: SELECT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: INSERT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein INSERT einen neuen Rekord entsprechend einem Objekt in DB zufügt. Rufe diese Funktion als ein Test aus der main() auf.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: UPDATE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein UPDATE eine Änderung des Objekts in DB speichert. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.3: DELETE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein DELETE einen neuen Rekord, falls das Objekt gelöscht wurde.  An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 1 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Gehege&#039;&#039;&#039;. Achte auf die 1-N Relation (foreign key) zwischen &#039;&#039;&#039;Tier&#039;&#039;&#039; und &#039;&#039;&#039;Gehege&#039;&#039;&#039;. (1 Tier kann nur in einem Gehege sein, aber 1 Gehege kann viele Tiere beinhalten)&lt;br /&gt;
Füge mit DBeaver die notwendigen Gehege in der neue angelegte Tabelle.&lt;br /&gt;
Initialisiere die Liste der Gehege aus der Datenbank (SELECT).&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 2 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. Achte auf die N-M Relation (foreign key) zwischen &#039;&#039;&#039;Gehege&#039;&#039;&#039; und &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. (1 Pflegeperson kann mehrere Gehege auf die Aufgabeliste haben, und zu einem Gehege kann mehrere Pflegepersonen zuständig sein). &lt;br /&gt;
&lt;br /&gt;
Füge mit DBeaver die notwendigen Pfleger und Aufgaben in der neue angelegten Tabellen.&lt;br /&gt;
Initialisiere die Liste der Pflegeperson und Aufgaben aus der Datenbank (SELECT).&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3721</id>
		<title>DCV 2024 09/DB Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_Selbsttest&amp;diff=3721"/>
		<updated>2024-12-02T08:58:14Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „= Selbsttest Datenbankentwicklung =  In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.  Ausgangspunkt ist der Quellkode für &amp;#039;&amp;#039;&amp;#039;Zoo&amp;#039;&amp;#039;&amp;#039;. Dieser Kode werden wir so ergänzen, dass &amp;#039;&amp;#039;&amp;#039;Tiere&amp;#039;&amp;#039;&amp;#039; direkt in Datenbank gespeichert werden...   == Aufgabe 1: Model für die Datenbanktabelle beschreiben ==  Beantworte schriftlich die folgenden Fragen in Bezug der &amp;#039;&amp;#039;&amp;#039;Tiere&amp;#039;&amp;#039;&amp;#039;: * Wie soll die Tabelle genannt werden? * Welche Spalten…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Selbsttest Datenbankentwicklung =&lt;br /&gt;
&lt;br /&gt;
In diesem Selbstest werden wir die SQL und OOP Kenntnisse wiederholen und überprüfen.&lt;br /&gt;
&lt;br /&gt;
Ausgangspunkt ist der Quellkode für &#039;&#039;&#039;Zoo&#039;&#039;&#039;. Dieser Kode werden wir so ergänzen, dass &#039;&#039;&#039;Tiere&#039;&#039;&#039; direkt in Datenbank gespeichert werden...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Model für die Datenbanktabelle beschreiben ==&lt;br /&gt;
&lt;br /&gt;
Beantworte schriftlich die folgenden Fragen in Bezug der &#039;&#039;&#039;Tiere&#039;&#039;&#039;:&lt;br /&gt;
* Wie soll die Tabelle genannt werden?&lt;br /&gt;
* Welche Spalten sind notwendig?&lt;br /&gt;
* Welche Datentypen passen zu meinem Java OOP Programm?&lt;br /&gt;
* Welche Spalte ist der PK?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Tabelle in DBeaver eingeben ==&lt;br /&gt;
&lt;br /&gt;
Erstelle die Tabelle (DDL) entsprechend deinen Plan aus der Aufgabe 1. Füge Testdaten mithilfe des DBeavers zu deiner Tabelle.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: Erweitere dein OOP Programm mit C.R.U.D Methoden ==&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Package / Klasse für die DBManager. Dazu kannst du auch ein Singleton Pattern verwenden.&lt;br /&gt;
Alle Funktionen, die direkt mit der SQL Datenbank arbeiten, sollen hier implementiert werden. Aus der main() oder andere Klassen, werden diese Funktionen aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollst du erst alle Statements (SELECT, INSERT, ...) in DBeaver erstellen und wenn alles korrekt funktioniert in Java übernehmen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.1: SELECT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein SELECT alle Rekorden aus der DB liest und die entsprechenden Objekte in OOP erstellt. Rufe diese Funktion aus der main() auf, anstatt Objekte manuell anzulegen...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: INSERT ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein INSERT einen neuen Rekord entsprechend einem Objekt in DB zufügt. Rufe diese Funktion als ein Test aus der main() auf.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.2: UPDATE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein UPDATE eine Änderung des Objekts in DB speichert. An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe 3.3: DELETE ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die durch ein DELETE einen neuen Rekord, falls das Objekt gelöscht wurde.  An welche Stelle ist die Änderung sichtbar? Wo muss die Funktion aufgerufen werden?&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 1 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Gehege&#039;&#039;&#039;. Achte auf die 1-N Relation (foreign key) zwischen &#039;&#039;&#039;Tier&#039;&#039;&#039; und &#039;&#039;&#039;Gehege&#039;&#039;&#039;. (1 Tier kann nur in einem Gehege sein, aber 1 Gehege kann viele Tiere beinhalten)&lt;br /&gt;
Füge mit DBeaver die notwendigen Gehege in der neue angelegte Tabelle.&lt;br /&gt;
Initialisiere die Liste der Gehege aus der Datenbank (SELECT).&lt;br /&gt;
&lt;br /&gt;
== Aufgabe Bonus 2 ==&lt;br /&gt;
&lt;br /&gt;
Definiere die Tabelle für die &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. Achte auf die N-M Relation (foreign key) zwischen &#039;&#039;&#039;Gehege&#039;&#039;&#039; und &#039;&#039;&#039;Pflegeperson&#039;&#039;&#039;. (1 Pflegeperson kann mehrere Gehege auf die Aufgabeliste haben, und zu einem Gehege kann mehrere Pflegepersonen zuständig sein). &lt;br /&gt;
&lt;br /&gt;
Füge mit DBeaver die notwendigen Pfleger und Aufgaben in der neue angelegten Tabellen.&lt;br /&gt;
Initialisiere die Liste der Pflegeperson und Aufgaben aus der Datenbank (SELECT).&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3720</id>
		<title>DCV 2024 09</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3720"/>
		<updated>2024-12-02T08:24:24Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Datenbanken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[DCV_2024_09/Allgemeines|Allgemeines]] ==&lt;br /&gt;
&lt;br /&gt;
== [[DCV_2024_09/Protokoll|Protokoll]] ==&lt;br /&gt;
&lt;br /&gt;
== Strukturierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Strukturierte_Programmierung_Uebungen|Übungen zur strukturierten Programmierung]]&lt;br /&gt;
* [[DCV_2024_09/Selbsttest|Selbsttest Herbstferien]]&lt;br /&gt;
&lt;br /&gt;
== Objektorientierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Objekt_Orientierte_Programmierung_Übungen|Übungen objektorientierte]]&lt;br /&gt;
* [[DCV_2024_09/OOP_Selbsttest|OOP Selbsttest 2024.11]]&lt;br /&gt;
&lt;br /&gt;
== Datenbanken ==&lt;br /&gt;
* [[DCV_2024_09/DB_Übungen|Datenbank Übungen]]&lt;br /&gt;
* [[DCV_2024_09/DB_Selbsttest|Selbsttest für DB Entwicklung]]&lt;br /&gt;
&lt;br /&gt;
== GIT ==&lt;br /&gt;
* [[DCV_2024_09/Git|Git]]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_%C3%9Cbungen&amp;diff=3717</id>
		<title>DCV 2024 09/DB Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_%C3%9Cbungen&amp;diff=3717"/>
		<updated>2024-11-26T11:50:11Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe SQL Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als &#039;&#039;&#039;D&#039;&#039;&#039;aten&#039;&#039;&#039;B&#039;&#039;&#039;ank&#039;&#039;&#039;M&#039;&#039;&#039;anagement &#039;&#039;&#039;S&#039;&#039;&#039;ystem wird &#039;&#039;&#039;MySQL&#039;&#039;&#039;[https://www.mysql.com/de/] verwendet&lt;br /&gt;
&lt;br /&gt;
= Überblick =&lt;br /&gt;
Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation Diagramme erstellen (&#039;&#039;&#039;Chen Notation&#039;&#039;&#039;)&lt;br /&gt;
* Implementieren des &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramms in &#039;&#039;&#039;MySQL&#039;&#039;&#039;&lt;br /&gt;
* Primär- und Fremdschlüssel&lt;br /&gt;
** Erstellen von Fremdschlüssel &#039;&#039;&#039;Constraints&#039;&#039;&#039;&lt;br /&gt;
* SQL Queries&lt;br /&gt;
** Daten Abfragen&lt;br /&gt;
{{BML|code=&lt;br /&gt;
USE mondial;&lt;br /&gt;
SELECT * from City limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, alle Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country;&lt;br /&gt;
&lt;br /&gt;
-- Konstant als Text&lt;br /&gt;
SELECT &#039;Hello World!&#039; Greeting;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital der erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT Name, Capital FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital mit eigenen Namen&lt;br /&gt;
SELECT Name Land, Capital Hauptstadt FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Name = &#039;Austria&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Population BETWEEN 1000000 AND 2000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name beginnend mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name am Ende mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;%A&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit NOT Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name NOT LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit OR Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; OR Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit AND Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; AND Population &amp;lt; 1000000;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
** Tabellen verknüpfen mit &#039;&#039;&#039;WHERE&#039;&#039;&#039; und &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Unterschied zwischen &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;LEFT OUTER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;RIGHT OUTER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Einfügen mittels &#039;&#039;&#039;INSERT&#039;&#039;&#039;&lt;br /&gt;
** Löschen mittels &#039;&#039;&#039;DELETE&#039;&#039;&#039;&lt;br /&gt;
** Aktualisieren mittels &#039;&#039;&#039;UPDATE&#039;&#039;&#039;&lt;br /&gt;
* Anbindung an die Datenbank mittels &#039;&#039;&#039;JDBC&#039;&#039;&#039; in &#039;&#039;&#039;Java&#039;&#039;&#039;&lt;br /&gt;
** Verbindung zur Datenbank herstellen&lt;br /&gt;
** Daten anlegen&lt;br /&gt;
** Daten abrufen&lt;br /&gt;
** Daten löschen&lt;br /&gt;
&lt;br /&gt;
= Übungen =&lt;br /&gt;
&lt;br /&gt;
Als Voraussetzung wird eine funktionierende &#039;&#039;&#039;MySQL&#039;&#039;&#039; installation mit &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; vorausgesetzt. &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; ist ein grafisches Tool um mit &#039;&#039;&#039;MySQL&#039;&#039;&#039; zu arbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Download für beide Tools findet sich [https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.27.1.msi hier].&lt;br /&gt;
* Add Product&lt;br /&gt;
* MySQL Server hinzufügen&lt;br /&gt;
* MySQL Workbench hinzufügen&lt;br /&gt;
&lt;br /&gt;
Für den Bereich &#039;&#039;&#039;S&#039;&#039;&#039;tructured &#039;&#039;&#039;Q&#039;&#039;&#039;uery &#039;&#039;&#039;L&#039;&#039;&#039;anguage wird weiters vorausgesetzt dass eine &#039;&#039;&#039;Datenbank&#039;&#039;&#039; mit folgenden Inhalten existiert:&lt;br /&gt;
 Ein großer Dank geht an die Uni Göttingen für die Bereitstellung der &#039;&#039;&#039;Mondial&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;göttingen&amp;quot;&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/&amp;lt;/ref&amp;gt; Datenbank&lt;br /&gt;
* [[Datei:Mondial-schema-mysql.zip]]&lt;br /&gt;
* [[Datei:Mondial-inputs-mysql.zip]]&lt;br /&gt;
&lt;br /&gt;
# Zuerst MySQL Workbench öffnen, mit dem DBMS verbinden.&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Schema auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
## Tritt ein Fehler auf &amp;gt;&amp;gt;,ORACLE&amp;lt;&amp;lt; aus der ersten Zeile entfernen&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Input auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
# Nun sollte die Datenbank Mondial existieren und es geht weiter mit den übungen zu SQL Abfragen&lt;br /&gt;
&lt;br /&gt;
== SQL Abfragen ==&lt;br /&gt;
Verschiedene Abfragen um Tabellen zu verbinden. Verwende für die Abfragen die &#039;&#039;&#039;Mondial&#039;&#039;&#039; Datenbank.&lt;br /&gt;
[[Datei:ER-Mondial.jpg|mini|none|600px|Mondial ER Diagramm&amp;lt;ref&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/mondial-abh.pdf&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Datei:Mondial Abhängingkeiten.jpg|mini|none|400px|Mondial Abhängigkeiten&amp;lt;ref name=&amp;quot;göttingen&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe SQL Queries ====&lt;br /&gt;
 Wie viele Einwohner hat Österreich?&lt;br /&gt;
&lt;br /&gt;
 Wie viele Einwohner hat der Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Österreich?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Europa (nur den Flussnamen)?&lt;br /&gt;
&lt;br /&gt;
 Wie viel Prozent der Menschen leben im Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen und deren Bundesländer mit Einwohnerzahl, sortiert nach Einwohnerzahl&lt;br /&gt;
&lt;br /&gt;
 Alle Flüsse die durch Europa fließen (nur Flüsse und deren Länge), sortiert nach Länge&lt;br /&gt;
&lt;br /&gt;
 Alle Inseln im Pazifik mit &amp;gt;50% islamischem Bekenntnis&lt;br /&gt;
&lt;br /&gt;
 Alle 3000er, welche in einem Land sind, welches zu mindestens 60% römisch Katholisch ist&lt;br /&gt;
&lt;br /&gt;
 Alle Länder mit mindestens einem See mit mindestens 100 Meter Tiefe und mindestens einem Berg mit mindestens 1500 Höhenmeter&lt;br /&gt;
&lt;br /&gt;
 Einwohnerzahl pro Religion&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen und die Meere dazu (keine Null Werte)&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen, und wenn sie haben, das Meer dazu&lt;br /&gt;
&lt;br /&gt;
 Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe &#039;&#039;&#039;African&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Welche Länder haben genau 3 Städte? Wie heißen diese Städte?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die 3 größten Städte von Amerika (Kontinent)?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Österreich? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Europa? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg pro Kontinent? Wie hoch sind diese?&lt;br /&gt;
&lt;br /&gt;
 Welches Land hat am meisten anerkannte Religionen? Wie viel sind es?&lt;br /&gt;
&lt;br /&gt;
 Welche Organisationen haben deren Hauptsitz in Österreich? Wie viele Mitglieder haben diese Organisationen?&lt;br /&gt;
&lt;br /&gt;
 Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache?&lt;br /&gt;
&lt;br /&gt;
== Create, Read, Update, Delete ==&lt;br /&gt;
Erstelle eine Objekt-Klasse für ein Land und erstelle für jede Aufgabe eine eigene &#039;&#039;&#039;Methode&#039;&#039;&#039; die...&lt;br /&gt;
* ein neues Land erstellt und in die Datenbank einfügt.&lt;br /&gt;
* ein bestimmtes Land in der Datenbank findet.&lt;br /&gt;
* ein bestimmtest Attribut eines Landes verändert.&lt;br /&gt;
* ein bestimmtes Land aus der Datenbank löscht.&lt;br /&gt;
&lt;br /&gt;
=== Bonus Aufgabe ===&lt;br /&gt;
*Erweitere dein Programm mit einer Console-Eingabe und teste deine Methoden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ER Entwurf ==&lt;br /&gt;
Für den Entwurf von &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elationship Modellen gibt es mehrere Möglichkeiten. Soll von einem bestehenden Datenbestand (in unnormalisierter Form) ein Datenbankmodell abgeleitet werden, so können die [https://www.datenbanken-verstehen.de/datenmodellierung/normalisierung/ Normalformen] angewandt werden, auf diese werden wir hier jedoch nicht eingehen. Wird ein ER-Modell direkt anhand einer Problemstellung entworfen, so ist diese bei korrektem Entwurf, inhärent normalisiert.&lt;br /&gt;
&lt;br /&gt;
Für die ER-Modellierung gibt es verschiedene Notationen:&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Chen-Notation Chen Notation und modifizierte Chen Notation]&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Min-Max-Notation Min/Max Notation]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Für die folgenden ER-Modelle soll die Chen Notation angewendet werden, diese ist am einfachsten und am wenigsten fehleranfällig. Nach der ER-Modellierung kann direkt ein logischer Entwurf abgeleitet werden, welcher dann &amp;quot;direkt&amp;quot; in die Datenbank übertragen werden kann.&lt;br /&gt;
&lt;br /&gt;
 Als Zeichenprogramm zum Datenbank Entwurf eignet sich [http://dia-installer.de/ Dia]&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Im folgenden finden sich einige Beispiele zur Übung des ER-Entwurfs. Es ist dabei sehr wichtig aus der textuellen Problemstellung herauszufinden was Teil des ER-Entwurfs ist, und was zum logischen Teil der Anwendung gehört und somit nichts mit dem Entwurf zu tun hat. Weiters ist es sehr wichtig, etwaige Lücken in der Problemstellung zu erkennen und auszufüllen.&lt;br /&gt;
&lt;br /&gt;
Für jedes Beispiel gilt:&lt;br /&gt;
* ER-Entwurf erstellen (inklusive aller wichtigen Attribute)&lt;br /&gt;
* Logischer Entwurf (Entweder in textueller oder tabellarischer Form)&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma ====&lt;br /&gt;
Eine Firma hat mehrere Mitarbeiter, diese arbeiten in einer Abteilung. Ein Mitarbeiter hat einen Vorgesetzten, dieser ist selbst wieder ein Mitarbeiter. Weiters gibt es Projekte an denen mehrere Mitarbeiter beteiligt sind, Mitarbeiter selbst können auch an mehreren Projekten mitarbeiten.&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma2 ====&lt;br /&gt;
Ergänze den Entwurf aus dem vorhergehenden Beispiel so, dass Mitarbeiter in einem gewissen Zeitraum an einem Projekt arbeiten können.&lt;br /&gt;
&lt;br /&gt;
 [[Datei:Uebungsfirma all.zip|mini|]] Enthält ER-Entwurf, logischer Entwurf, SQL Statements&lt;br /&gt;
[[Datei:Uebungsfirma.png|mini|none|400px|ER-Diagramm Übungsfirma]]&lt;br /&gt;
&lt;br /&gt;
==== Zoo ====&lt;br /&gt;
Mehrere in ganz Deutschland verteilte Zoos sollen mittels einer Datenbank verwaltet werden. Die Tiere werden von Pflegern gepflegt und befinden sich in Gehegen. Außerdem bekommen die Tiere eine spezielle Futtermischung, welche von Lieferanten geliefert wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zoo all.zip|mini]]&lt;br /&gt;
[[Datei:Zoo.png|mini|none|400px|Zoo ER-Diagramm]]&lt;br /&gt;
&lt;br /&gt;
==== Druckerproduzent ====&lt;br /&gt;
Eine Firma, die Drucker herstellt, benötigt eine Datenbank zur Verwaltung ihrer Geschäftsprozesse. Die Firma hat mehrere Abteilungen, wie zum Beispiel Lager, Fertigung, Vertrieb. Zur Herstellung der Drucker werden Zukaufteile benötigt, die also nicht in der Fertigung selbst hergestellt werden. Der Fabrikleiter möchte auch einen Überblick über die Mitarbeiter mit allen relevanten Daten haben.&lt;br /&gt;
&lt;br /&gt;
==== Restaurant ====&lt;br /&gt;
Sie besitzen ein Restaurant, natürlich haben Sie Angestellte die entweder Koch, Kellner oder Lieferant sein können, überlegen Sie sich die nötigen Attribute selbst. Kunden können bei Ihnen im Restaurant bestellen und dort essen, Sie bieten aber auch das Angebot die Bestellung nach Hause zu liefern. Der Kellner ist für die Bearbeitung der Bestellung zuständig und teilt die Kunden zu den jeweiligen Tischen ein.&lt;br /&gt;
&lt;br /&gt;
==== Ferienhausverwaltung ====&lt;br /&gt;
Eine Ferienhausvermietung braucht ein Datenbanksystem für die Verwaltung der Buchungen. Zwischen zwei Buchungen muss immer eine Reinigungskraft das gesamte Haus reinigen und auf Schäden kontrollieren. Für diese Reinigung und Kontrolle braucht die Reinigungskraft zwischen 3-6 Stunden, je nach Größe / Kategorie bzw. Nächtigungspreis des Hauses. Die Ferienhäuser werden demnach in drei Klassen unterteilt.&lt;br /&gt;
* &amp;lt; 150 € / Nacht (Reinigung &amp;amp; Kontrolle: 3 Stunden)&lt;br /&gt;
* &amp;lt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 5 Stunden)&lt;br /&gt;
* &amp;gt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 6 Stunden)&lt;br /&gt;
Bei Schäden muss das Haus für die Zeit, bis der Schaden repariert wurde, gesperrt werden.&lt;br /&gt;
Die Ferienhäuser haben zwischen ein und vier Stockwerke (inkl. Keller), sowie unterschiedliche Ausstattungen (Bsp. Garten, WLAN, Balkon, ...).&lt;br /&gt;
Fügen Sie weitere Attribute (Bsp. Quadratmeter) hinzu, welche Sie für wichtig erachten.&lt;br /&gt;
&lt;br /&gt;
== Datenbank Anwendung ==&lt;br /&gt;
Im folgenden soll in mehreren Schritten eine Datenbank Anwendung modelliert und erstellt werden. Diese Anwendung soll ein einfaches Zahlungssystem mit Überweisung und Bankomat beeinhalten.&lt;br /&gt;
* Kunden sollen angelegt werden&lt;br /&gt;
* Es sollen Konten angelegt werden&lt;br /&gt;
* Konten sollen Geld überweisen/einzahlen und überweisen können&lt;br /&gt;
* Jede Transaktion soll gespeichert werden mit Betrag, Quelle, Ziel und Datum&lt;br /&gt;
* Der Kontostand soll aufgrund aller vorhergehenden Transaktion berechnet werden&lt;br /&gt;
* Der Kunde soll Geld einzahlen und abheben können&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation (ER) Diagramm erstellen ====&lt;br /&gt;
Entwirf ein korrektes &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm für die Datenbankanwendung, zumindest sollen die Tabellen &#039;&#039;&#039;Kunde&#039;&#039;&#039;, &#039;&#039;&#039;Konto&#039;&#039;&#039; und &#039;&#039;&#039;Transaktion&#039;&#039;&#039; enthalten sein. Achte auf die korrekte Beziehung zwischen den Tabellen.&lt;br /&gt;
* Ein Kunde kann mehrere Konten haben&lt;br /&gt;
* Ein Konto kann mehrere Kunden haben, diese haben dann eine unterschiedliche Rolle (Besitzer, Zeichnungsberechtigt, etc...)&lt;br /&gt;
* Eine Transaktion muss ein Quell- und ein Zielkonto haben&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Anlegen der Datenbank in MySQL ====&lt;br /&gt;
Implementiere das erstellte &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm in MySQL. Achte auf das Anlegen von korrekten &#039;&#039;&#039;Primär-&#039;&#039;&#039; und &#039;&#039;&#039;Fremdschlüsseln.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Verbinden der Datenbank (JDBC) in Java ====&lt;br /&gt;
Verbinde dich über die &#039;&#039;&#039;JDBC&#039;&#039;&#039; Schnittstelle in Java mit der angelegten Datenbank. Das Anlegen einer Testdatenbank kann sehr hilfreich sein um Tests zu schreiben.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Kunden/Konten und Transaktionen in Java anlegen und abrufen ====&lt;br /&gt;
Erstelle die Modelle für deine Tabellen in Java und ermögliche über Methoden das &#039;&#039;&#039;Erstellen&#039;&#039;&#039;, &#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;, &#039;&#039;&#039;Lesen&#039;&#039;&#039; und &#039;&#039;&#039;Löschen.&lt;br /&gt;
 &#039;&#039;&#039;C&#039;&#039;&#039;reate &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;U&#039;&#039;&#039;pdate &#039;&#039;&#039;D&#039;&#039;&#039;elete&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: (Kommandozeilenanwendung) für den Bankomat erstellen ====&lt;br /&gt;
Erstelle ein Userinterface für die Bankomat Anwendung.&lt;br /&gt;
* Der Benutzer soll authentifiziert werden&lt;br /&gt;
* Es soll eine entsprechende Auswahl an Konten angezeigt werden&lt;br /&gt;
* Einzahlen/Auszahlen soll möglich sein&lt;br /&gt;
* Überweisung an anderes Konto&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_%C3%9Cbungen&amp;diff=3716</id>
		<title>DCV 2024 09/DB Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/DB_%C3%9Cbungen&amp;diff=3716"/>
		<updated>2024-11-25T09:20:45Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;aten&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;ank&amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;anagement &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;ystem wird &amp;#039;&amp;#039;&amp;#039;MySQL&amp;#039;&amp;#039;&amp;#039;[https://www.mysql.com/de/] verwendet  = Überblick = Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet. * &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039;ntity &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;elation Diagramme erstellen (&amp;#039;&amp;#039;&amp;#039;Chen Notation&amp;#039;&amp;#039;&amp;#039;) * Implementieren des &amp;#039;&amp;#039;&amp;#039;ER…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als &#039;&#039;&#039;D&#039;&#039;&#039;aten&#039;&#039;&#039;B&#039;&#039;&#039;ank&#039;&#039;&#039;M&#039;&#039;&#039;anagement &#039;&#039;&#039;S&#039;&#039;&#039;ystem wird &#039;&#039;&#039;MySQL&#039;&#039;&#039;[https://www.mysql.com/de/] verwendet&lt;br /&gt;
&lt;br /&gt;
= Überblick =&lt;br /&gt;
Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation Diagramme erstellen (&#039;&#039;&#039;Chen Notation&#039;&#039;&#039;)&lt;br /&gt;
* Implementieren des &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramms in &#039;&#039;&#039;MySQL&#039;&#039;&#039;&lt;br /&gt;
* Primär- und Fremdschlüssel&lt;br /&gt;
** Erstellen von Fremdschlüssel &#039;&#039;&#039;Constraints&#039;&#039;&#039;&lt;br /&gt;
* SQL Queries&lt;br /&gt;
** Daten Abfragen&lt;br /&gt;
{{BML|code=&lt;br /&gt;
USE mondial;&lt;br /&gt;
SELECT * from City limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, alle Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country;&lt;br /&gt;
&lt;br /&gt;
-- Konstant als Text&lt;br /&gt;
SELECT &#039;Hello World!&#039; Greeting;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital der erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT Name, Capital FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital mit eigenen Namen&lt;br /&gt;
SELECT Name Land, Capital Hauptstadt FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Name = &#039;Austria&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Population BETWEEN 1000000 AND 2000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name beginnend mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name am Ende mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;%A&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit NOT Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name NOT LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit OR Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; OR Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit AND Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; AND Population &amp;lt; 1000000;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
** Tabellen verknüpfen mit &#039;&#039;&#039;WHERE&#039;&#039;&#039; und &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Unterschied zwischen &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;LEFT OUTER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;RIGHT OUTER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Einfügen mittels &#039;&#039;&#039;INSERT&#039;&#039;&#039;&lt;br /&gt;
** Löschen mittels &#039;&#039;&#039;DELETE&#039;&#039;&#039;&lt;br /&gt;
** Aktualisieren mittels &#039;&#039;&#039;UPDATE&#039;&#039;&#039;&lt;br /&gt;
* Anbindung an die Datenbank mittels &#039;&#039;&#039;JDBC&#039;&#039;&#039; in &#039;&#039;&#039;Java&#039;&#039;&#039;&lt;br /&gt;
** Verbindung zur Datenbank herstellen&lt;br /&gt;
** Daten anlegen&lt;br /&gt;
** Daten abrufen&lt;br /&gt;
** Daten löschen&lt;br /&gt;
&lt;br /&gt;
= Übungen =&lt;br /&gt;
&lt;br /&gt;
Als Voraussetzung wird eine funktionierende &#039;&#039;&#039;MySQL&#039;&#039;&#039; installation mit &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; vorausgesetzt. &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; ist ein grafisches Tool um mit &#039;&#039;&#039;MySQL&#039;&#039;&#039; zu arbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Download für beide Tools findet sich [https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.27.1.msi hier].&lt;br /&gt;
* Add Product&lt;br /&gt;
* MySQL Server hinzufügen&lt;br /&gt;
* MySQL Workbench hinzufügen&lt;br /&gt;
&lt;br /&gt;
Für den Bereich &#039;&#039;&#039;S&#039;&#039;&#039;tructured &#039;&#039;&#039;Q&#039;&#039;&#039;uery &#039;&#039;&#039;L&#039;&#039;&#039;anguage wird weiters vorausgesetzt dass eine &#039;&#039;&#039;Datenbank&#039;&#039;&#039; mit folgenden Inhalten existiert:&lt;br /&gt;
 Ein großer Dank geht an die Uni Göttingen für die Bereitstellung der &#039;&#039;&#039;Mondial&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;göttingen&amp;quot;&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/&amp;lt;/ref&amp;gt; Datenbank&lt;br /&gt;
* [[Datei:Mondial-schema-mysql.zip]]&lt;br /&gt;
* [[Datei:Mondial-inputs-mysql.zip]]&lt;br /&gt;
&lt;br /&gt;
# Zuerst MySQL Workbench öffnen, mit dem DBMS verbinden.&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Schema auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
## Tritt ein Fehler auf &amp;gt;&amp;gt;,ORACLE&amp;lt;&amp;lt; aus der ersten Zeile entfernen&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Input auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
# Nun sollte die Datenbank Mondial existieren und es geht weiter mit den übungen zu SQL Abfragen&lt;br /&gt;
&lt;br /&gt;
== SQL Abfragen ==&lt;br /&gt;
Verschiedene Abfragen um Tabellen zu verbinden. Verwende für die Abfragen die &#039;&#039;&#039;Mondial&#039;&#039;&#039; Datenbank.&lt;br /&gt;
[[Datei:ER-Mondial.jpg|mini|none|600px|Mondial ER Diagramm&amp;lt;ref&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/mondial-abh.pdf&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Datei:Mondial Abhängingkeiten.jpg|mini|none|400px|Mondial Abhängigkeiten&amp;lt;ref name=&amp;quot;göttingen&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe SQL Queries ====&lt;br /&gt;
 Wie viele Einwohner hat Österreich?&lt;br /&gt;
&lt;br /&gt;
 Wie viele Einwohner hat der Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Österreich?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Europa (nur den Flussnamen)?&lt;br /&gt;
&lt;br /&gt;
 Wie viel Prozent der Menschen leben im Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen und deren Bundesländer mit Einwohnerzahl, sortiert nach Einwohnerzahl&lt;br /&gt;
&lt;br /&gt;
 Alle Flüsse die durch Europa fließen (nur Flüsse und deren Länge), sortiert nach Länge&lt;br /&gt;
&lt;br /&gt;
 Alle Inseln im Pazifik mit &amp;gt;50% islamischem Bekenntnis&lt;br /&gt;
&lt;br /&gt;
 Alle 3000er, welche in einem Land sind, welches zu mindestens 60% römisch Katholisch ist&lt;br /&gt;
&lt;br /&gt;
 Alle Länder mit mindestens einem See mit mindestens 100 Meter Tiefe und mindestens einem Berg mit mindestens 1500 Höhenmeter&lt;br /&gt;
&lt;br /&gt;
 Einwohnerzahl pro Religion&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen und die Meere dazu (keine Null Werte)&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen, und wenn sie haben, das Meer dazu&lt;br /&gt;
&lt;br /&gt;
 Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe &#039;&#039;&#039;African&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Welche Länder haben genau 3 Städte? Welche Länder sind dies?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die 3 größten Städte von Amerika (Kontinent)?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Österreich? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Europa? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg pro Kontinent? Wie hoch sind diese?&lt;br /&gt;
&lt;br /&gt;
 Welches Land hat am meisten anerkannte Religionen? Wie viel sind es?&lt;br /&gt;
&lt;br /&gt;
 Welche Organisationen haben deren Hauptsitz in Österreich? Wie viele Mitglieder haben diese Organisationen?&lt;br /&gt;
&lt;br /&gt;
 Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create, Read, Update, Delete ==&lt;br /&gt;
Erstelle eine Objekt-Klasse für ein Land und erstelle für jede Aufgabe eine eigene &#039;&#039;&#039;Methode&#039;&#039;&#039; die...&lt;br /&gt;
* ein neues Land erstellt und in die Datenbank einfügt.&lt;br /&gt;
* ein bestimmtes Land in der Datenbank findet.&lt;br /&gt;
* ein bestimmtest Attribut eines Landes verändert.&lt;br /&gt;
* ein bestimmtes Land aus der Datenbank löscht.&lt;br /&gt;
&lt;br /&gt;
=== Bonus Aufgabe ===&lt;br /&gt;
*Erweitere dein Programm mit einer Console-Eingabe und teste deine Methoden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ER Entwurf ==&lt;br /&gt;
Für den Entwurf von &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elationship Modellen gibt es mehrere Möglichkeiten. Soll von einem bestehenden Datenbestand (in unnormalisierter Form) ein Datenbankmodell abgeleitet werden, so können die [https://www.datenbanken-verstehen.de/datenmodellierung/normalisierung/ Normalformen] angewandt werden, auf diese werden wir hier jedoch nicht eingehen. Wird ein ER-Modell direkt anhand einer Problemstellung entworfen, so ist diese bei korrektem Entwurf, inhärent normalisiert.&lt;br /&gt;
&lt;br /&gt;
Für die ER-Modellierung gibt es verschiedene Notationen:&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Chen-Notation Chen Notation und modifizierte Chen Notation]&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Min-Max-Notation Min/Max Notation]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Für die folgenden ER-Modelle soll die Chen Notation angewendet werden, diese ist am einfachsten und am wenigsten fehleranfällig. Nach der ER-Modellierung kann direkt ein logischer Entwurf abgeleitet werden, welcher dann &amp;quot;direkt&amp;quot; in die Datenbank übertragen werden kann.&lt;br /&gt;
&lt;br /&gt;
 Als Zeichenprogramm zum Datenbank Entwurf eignet sich [http://dia-installer.de/ Dia]&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Im folgenden finden sich einige Beispiele zur Übung des ER-Entwurfs. Es ist dabei sehr wichtig aus der textuellen Problemstellung herauszufinden was Teil des ER-Entwurfs ist, und was zum logischen Teil der Anwendung gehört und somit nichts mit dem Entwurf zu tun hat. Weiters ist es sehr wichtig, etwaige Lücken in der Problemstellung zu erkennen und auszufüllen.&lt;br /&gt;
&lt;br /&gt;
Für jedes Beispiel gilt:&lt;br /&gt;
* ER-Entwurf erstellen (inklusive aller wichtigen Attribute)&lt;br /&gt;
* Logischer Entwurf (Entweder in textueller oder tabellarischer Form)&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma ====&lt;br /&gt;
Eine Firma hat mehrere Mitarbeiter, diese arbeiten in einer Abteilung. Ein Mitarbeiter hat einen Vorgesetzten, dieser ist selbst wieder ein Mitarbeiter. Weiters gibt es Projekte an denen mehrere Mitarbeiter beteiligt sind, Mitarbeiter selbst können auch an mehreren Projekten mitarbeiten.&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma2 ====&lt;br /&gt;
Ergänze den Entwurf aus dem vorhergehenden Beispiel so, dass Mitarbeiter in einem gewissen Zeitraum an einem Projekt arbeiten können.&lt;br /&gt;
&lt;br /&gt;
 [[Datei:Uebungsfirma all.zip|mini|]] Enthält ER-Entwurf, logischer Entwurf, SQL Statements&lt;br /&gt;
[[Datei:Uebungsfirma.png|mini|none|400px|ER-Diagramm Übungsfirma]]&lt;br /&gt;
&lt;br /&gt;
==== Zoo ====&lt;br /&gt;
Mehrere in ganz Deutschland verteilte Zoos sollen mittels einer Datenbank verwaltet werden. Die Tiere werden von Pflegern gepflegt und befinden sich in Gehegen. Außerdem bekommen die Tiere eine spezielle Futtermischung, welche von Lieferanten geliefert wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zoo all.zip|mini]]&lt;br /&gt;
[[Datei:Zoo.png|mini|none|400px|Zoo ER-Diagramm]]&lt;br /&gt;
&lt;br /&gt;
==== Druckerproduzent ====&lt;br /&gt;
Eine Firma, die Drucker herstellt, benötigt eine Datenbank zur Verwaltung ihrer Geschäftsprozesse. Die Firma hat mehrere Abteilungen, wie zum Beispiel Lager, Fertigung, Vertrieb. Zur Herstellung der Drucker werden Zukaufteile benötigt, die also nicht in der Fertigung selbst hergestellt werden. Der Fabrikleiter möchte auch einen Überblick über die Mitarbeiter mit allen relevanten Daten haben.&lt;br /&gt;
&lt;br /&gt;
==== Restaurant ====&lt;br /&gt;
Sie besitzen ein Restaurant, natürlich haben Sie Angestellte die entweder Koch, Kellner oder Lieferant sein können, überlegen Sie sich die nötigen Attribute selbst. Kunden können bei Ihnen im Restaurant bestellen und dort essen, Sie bieten aber auch das Angebot die Bestellung nach Hause zu liefern. Der Kellner ist für die Bearbeitung der Bestellung zuständig und teilt die Kunden zu den jeweiligen Tischen ein.&lt;br /&gt;
&lt;br /&gt;
==== Ferienhausverwaltung ====&lt;br /&gt;
Eine Ferienhausvermietung braucht ein Datenbanksystem für die Verwaltung der Buchungen. Zwischen zwei Buchungen muss immer eine Reinigungskraft das gesamte Haus reinigen und auf Schäden kontrollieren. Für diese Reinigung und Kontrolle braucht die Reinigungskraft zwischen 3-6 Stunden, je nach Größe / Kategorie bzw. Nächtigungspreis des Hauses. Die Ferienhäuser werden demnach in drei Klassen unterteilt.&lt;br /&gt;
* &amp;lt; 150 € / Nacht (Reinigung &amp;amp; Kontrolle: 3 Stunden)&lt;br /&gt;
* &amp;lt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 5 Stunden)&lt;br /&gt;
* &amp;gt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 6 Stunden)&lt;br /&gt;
Bei Schäden muss das Haus für die Zeit, bis der Schaden repariert wurde, gesperrt werden.&lt;br /&gt;
Die Ferienhäuser haben zwischen ein und vier Stockwerke (inkl. Keller), sowie unterschiedliche Ausstattungen (Bsp. Garten, WLAN, Balkon, ...).&lt;br /&gt;
Fügen Sie weitere Attribute (Bsp. Quadratmeter) hinzu, welche Sie für wichtig erachten.&lt;br /&gt;
&lt;br /&gt;
== Datenbank Anwendung ==&lt;br /&gt;
Im folgenden soll in mehreren Schritten eine Datenbank Anwendung modelliert und erstellt werden. Diese Anwendung soll ein einfaches Zahlungssystem mit Überweisung und Bankomat beeinhalten.&lt;br /&gt;
* Kunden sollen angelegt werden&lt;br /&gt;
* Es sollen Konten angelegt werden&lt;br /&gt;
* Konten sollen Geld überweisen/einzahlen und überweisen können&lt;br /&gt;
* Jede Transaktion soll gespeichert werden mit Betrag, Quelle, Ziel und Datum&lt;br /&gt;
* Der Kontostand soll aufgrund aller vorhergehenden Transaktion berechnet werden&lt;br /&gt;
* Der Kunde soll Geld einzahlen und abheben können&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation (ER) Diagramm erstellen ====&lt;br /&gt;
Entwirf ein korrektes &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm für die Datenbankanwendung, zumindest sollen die Tabellen &#039;&#039;&#039;Kunde&#039;&#039;&#039;, &#039;&#039;&#039;Konto&#039;&#039;&#039; und &#039;&#039;&#039;Transaktion&#039;&#039;&#039; enthalten sein. Achte auf die korrekte Beziehung zwischen den Tabellen.&lt;br /&gt;
* Ein Kunde kann mehrere Konten haben&lt;br /&gt;
* Ein Konto kann mehrere Kunden haben, diese haben dann eine unterschiedliche Rolle (Besitzer, Zeichnungsberechtigt, etc...)&lt;br /&gt;
* Eine Transaktion muss ein Quell- und ein Zielkonto haben&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Anlegen der Datenbank in MySQL ====&lt;br /&gt;
Implementiere das erstellte &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm in MySQL. Achte auf das Anlegen von korrekten &#039;&#039;&#039;Primär-&#039;&#039;&#039; und &#039;&#039;&#039;Fremdschlüsseln.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Verbinden der Datenbank (JDBC) in Java ====&lt;br /&gt;
Verbinde dich über die &#039;&#039;&#039;JDBC&#039;&#039;&#039; Schnittstelle in Java mit der angelegten Datenbank. Das Anlegen einer Testdatenbank kann sehr hilfreich sein um Tests zu schreiben.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Kunden/Konten und Transaktionen in Java anlegen und abrufen ====&lt;br /&gt;
Erstelle die Modelle für deine Tabellen in Java und ermögliche über Methoden das &#039;&#039;&#039;Erstellen&#039;&#039;&#039;, &#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;, &#039;&#039;&#039;Lesen&#039;&#039;&#039; und &#039;&#039;&#039;Löschen.&lt;br /&gt;
 &#039;&#039;&#039;C&#039;&#039;&#039;reate &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;U&#039;&#039;&#039;pdate &#039;&#039;&#039;D&#039;&#039;&#039;elete&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: (Kommandozeilenanwendung) für den Bankomat erstellen ====&lt;br /&gt;
Erstelle ein Userinterface für die Bankomat Anwendung.&lt;br /&gt;
* Der Benutzer soll authentifiziert werden&lt;br /&gt;
* Es soll eine entsprechende Auswahl an Konten angezeigt werden&lt;br /&gt;
* Einzahlen/Auszahlen soll möglich sein&lt;br /&gt;
* Überweisung an anderes Konto&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/OOP_Selbsttest&amp;diff=3715</id>
		<title>DCV 2024 09/OOP Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/OOP_Selbsttest&amp;diff=3715"/>
		<updated>2024-11-19T08:36:18Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „Willkommen zu diesem praxisnahen Selbsttest! Ziel ist es, die gelernte Konzepte der objektorientierten Programmierung (OOP) spielerisch zu wiederholen und zu üben. Es geht nicht darum, perfekt zu sein, sondern durch Übung Verständnis und Routine aufzubauen.  Geplanter Zeitaufwand: &amp;#039;&amp;#039;&amp;#039;1,5 Tage&amp;#039;&amp;#039;&amp;#039;  Das Ergebnis ist in einem eigenen Package unter deineName.week10.influencer &amp;#039;&amp;#039;&amp;#039;in GitHub zu speichern&amp;#039;&amp;#039;&amp;#039;.   Falls Fragen gibt, bitte direkt bei deinem Lehrer…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Willkommen zu diesem praxisnahen Selbsttest! Ziel ist es, die gelernte Konzepte der objektorientierten Programmierung (OOP) spielerisch zu wiederholen und zu üben. Es geht nicht darum, perfekt zu sein, sondern durch Übung Verständnis und Routine aufzubauen.&lt;br /&gt;
&lt;br /&gt;
Geplanter Zeitaufwand: &#039;&#039;&#039;1,5 Tage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis ist in einem eigenen Package unter deineName.week10.influencer &#039;&#039;&#039;in GitHub zu speichern&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Falls Fragen gibt, bitte direkt bei deinem Lehrer deines Vertrauens melden. ;-)&lt;br /&gt;
&lt;br /&gt;
== Ausgangssituation ==&lt;br /&gt;
&lt;br /&gt;
Diesmal fokussieren wir uns auf &#039;&#039;&#039;Influencer&#039;&#039;&#039;, die über verschiedene &#039;&#039;&#039;Channels&#039;&#039;&#039; ihre Reichweite aufbauen. &lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Influencer&#039;&#039;&#039; ist auf verschiedenen &#039;&#039;&#039;Channels&#039;&#039;&#039; aktiv. Ein &#039;&#039;&#039;Channel&#039;&#039;&#039; kann unterschiedlich sein, z.B. YouTube, Instagram oder TikTok, und hat spezifische Eigenschaften. Diese Channels sollen durch Vererbung modelliert werden.&lt;br /&gt;
&lt;br /&gt;
Die Aufgaben führen dich Schritt für Schritt durch das Erstellen einer flexiblen, wiederverwendbaren Struktur. Es gibt Fällen, in dem du weiteren Hilfsfunktionen schreiben musst. Verwende das Motto: &#039;&#039;So viel wie nötig, so wenig wie möglich.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Aufgabe 1: Die Klasse Influencer erstellen ==&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse {{JSL|Influencer}}, die die folgenden Attribute besitzt:&lt;br /&gt;
&lt;br /&gt;
* {{JSL|name}}(String): Der Name des Influencers.&lt;br /&gt;
* {{JSL|age}} (int): Das Alter des Influencers.&lt;br /&gt;
* {{JSL|category}} (String): Die Kategorie des Influencers (z. B. „Fitness“, „Tech“).&lt;br /&gt;
* {{JSL|channels}} (Vector&amp;lt;Channel&amp;gt;): Eine Liste von Channels, auf denen der Influencer aktiv ist.&lt;br /&gt;
* {{JSL|friends}} (Vector&amp;lt;Influencer&amp;gt;): Eine Liste von anderen Influencern, die seine/ihre Freunde sind.&lt;br /&gt;
&lt;br /&gt;
Schreibe einen Konstruktor, um diese Attribute zu initialisieren, und füge {{JSL|toString()}} für sie hinzu.&lt;br /&gt;
&lt;br /&gt;
Füge folgende Methoden hinzu:&lt;br /&gt;
* {{JSL|add_channel(Channel channel)}}: Fügt einen neuen Channel zum Influencer hinzu.&lt;br /&gt;
* {{JSL|print_channels()}}: Gibt alle Channels des Influencers in einem übersichtlichen Format aus.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 2: Superklasse Channel erstellen ==&lt;br /&gt;
&lt;br /&gt;
Erstelle eine abstrakte Klasse {{JSL|Channel}}, die die grundlegenden Eigenschaften eines Channels definiert:&lt;br /&gt;
&lt;br /&gt;
* {{JSL|platform_name}} (String): Der Name der Plattform (z.B. „YouTube“, „Instagram“).&lt;br /&gt;
* {{JSL|followers}} (int): Die Anzahl der Follower auf diesem Channel.&lt;br /&gt;
* {{JSL|engagement_rate}} (float): Die durchschnittliche Engagement-Rate in Prozent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Füge folgende Methode hinzu:&lt;br /&gt;
* {{JSL|show_channel_info()}}: Eine abstrakte Methode, die in den abgeleiteten Klassen überschrieben wird, um die Details eines Channels anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 3: Abgeleitete Klassen für Channels ==&lt;br /&gt;
&lt;br /&gt;
Erstelle spezifische Klassen für Plattformen, die von der Superklasse Channel erben, und füge zusätzliche Attribute hinzu:&lt;br /&gt;
&lt;br /&gt;
* {{JSL|YouTubeChannel}}:&lt;br /&gt;
** {{JSL|subscribers}} (int): Die Anzahl der Abonnenten.&lt;br /&gt;
** {{JSL|videos_uploaded}} (int): Die Anzahl der hochgeladenen Videos.&lt;br /&gt;
* {{JSL|InstagramChannel}}:&lt;br /&gt;
** {{JSL|posts}} (int): Die Anzahl der veröffentlichten Beiträge.&lt;br /&gt;
** {{JSL|reels_views}} (int): Die durchschnittlichen Views der Reels.&lt;br /&gt;
* {{TikTokChannel}}:&lt;br /&gt;
** {{JSL|videos_uploaded}} (int): Die Anzahl der hochgeladenen TikToks.&lt;br /&gt;
** {{JSL|average_views}} (int): Die durchschnittlichen Views pro Video.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Implementiere die Methode {{JSL|show_channel_info()}} in jeder Klasse, um die spezifischen Eigenschaften anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
== Aufgabe 4: Analysen der Reichweite ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Methode {{JSL|get_total_followers()}} in der Klasse Influencer, die die Anzahl der Follower über alle Channels hinweg summiert.&lt;br /&gt;
&lt;br /&gt;
Implementiere eine Methode {{JSL|find_most_popular_channel()}}, die den Channel mit den meisten Followern zurückgibt.&lt;br /&gt;
&lt;br /&gt;
Ergänze eine Methode {{JSL|print_channels_sorted_by_followers()}}, die alle Channels nach der Anzahl ihrer Follower sortiert auflistet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bonusaufgabe: Freunde speichern und analysieren==&lt;br /&gt;
&lt;br /&gt;
Füge eine Methode {{JSL|add_friend(Influencer friend)}} in die Klasse Influencer hinzu, um einen neuen Freund hinzuzufügen.&lt;br /&gt;
&lt;br /&gt;
Implementiere eine Methode {{JSL|find_most_influential_friend()}}, die den Freund mit der höchsten Gesamtzahl an Followern über alle Channels hinweg findet.&lt;br /&gt;
&lt;br /&gt;
Implementiere eine Methode {{JSL|find_least_influential_friend()}}, die den Freund mit der niedrigsten Gesamtzahl an Followern zurückgibt.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode {{JSL|print_friends_by_influence()}}, die die Freunde nach ihrer Reichweite sortiert auflistet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und vor allem: Hab Spaß beim Coden!&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3714</id>
		<title>DCV 2024 09</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09&amp;diff=3714"/>
		<updated>2024-11-19T07:48:40Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Objektorientierte Programmierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[DCV_2024_09/Allgemeines|Allgemeines]] ==&lt;br /&gt;
&lt;br /&gt;
== [[DCV_2024_09/Protokoll|Protokoll]] ==&lt;br /&gt;
&lt;br /&gt;
== Strukturierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Strukturierte_Programmierung_Uebungen|Übungen zur strukturierten Programmierung]]&lt;br /&gt;
* [[DCV_2024_09/Selbsttest|Selbsttest Herbstferien]]&lt;br /&gt;
&lt;br /&gt;
== Objektorientierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_09/Objekt_Orientierte_Programmierung_Übungen|Übungen objektorientierte]]&lt;br /&gt;
* [[DCV_2024_09/OOP_Selbsttest|OOP Selbsttest 2024.11]]&lt;br /&gt;
&lt;br /&gt;
== Datenbanken ==&lt;br /&gt;
* [[DCV_2024_09/DB_Übungen|Datenbank Übungen]]&lt;br /&gt;
&lt;br /&gt;
== GIT ==&lt;br /&gt;
* [[DCV_2024_09/Git|Git]]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3654</id>
		<title>DCV 2024 09/Objekt Orientierte Programmierung Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3654"/>
		<updated>2024-10-23T11:11:34Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe: Person */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Türkische Serie ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte einer TV-Serie speichern kann.&lt;br /&gt;
* Title&lt;br /&gt;
* Genre&lt;br /&gt;
* Jahr&lt;br /&gt;
* Originalsprache&lt;br /&gt;
&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
Erstelle weiterhin 2-3 Objekten, als typische türkische Serien.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datenklasse ===&lt;br /&gt;
Es soll eine &#039;&#039;&#039;Methode&#039;&#039;&#039; erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; eines {{JSL|int[]}} ermittelt und zurückgibt. Alle  ermittelten Werten sollen in einem Datenobjekt zurückgegeben werden. Erstelle dazu eine Datenklasse welche die entsprechenden Werte enthält. Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte&#039;&#039;&#039; ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3653</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Datenströme</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3653"/>
		<updated>2024-10-22T11:09:34Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Files ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verzeichnis auflisten ===&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses ausgegeben werden. Gib hierfür eine Liste aller Dateien aus.&lt;br /&gt;
&lt;br /&gt;
[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html Dokumentation von File]&lt;br /&gt;
&lt;br /&gt;
=== Bonusaufgabe: Verzeichnis auflisten in Reihenfolge ===&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien in folgender Rheinfolge auf.&lt;br /&gt;
* Unterverzeichnisse&lt;br /&gt;
* Dateien nach Größe absteigend&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl der Dateien im Verzeichnis&lt;br /&gt;
* Summe der Größe der Dateien (ohne der Größe von Unterverzeichnissen)&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen (Rekursiv) ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses &#039;&#039;&#039;und aller Unterverzeichnisse&#039;&#039;&#039; verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl Dateien in allen Verzeichnissen&lt;br /&gt;
* Summe der Größe der aller Dateien&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Größte Datei suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad. Suche nach der größten Datei in dem Verzeichnis inkl. seiner Unterverzeichnisse.&lt;br /&gt;
&lt;br /&gt;
Gib den relativen Pfad vom Startverzeichnis und die Größe aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datei nach Name suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad und nach einem Suchkriterium. Suche alle Dateien im Verzeichnis, inkl. Unterverzeichnisse, deren Name dem Suchkriterium entspricht.&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien mit deren relativem Pfad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Streams ==&lt;br /&gt;
&lt;br /&gt;
Im folgenden geht es um das einlesen und verarbeiten von Textdateien. Erstelle wo möglich und nötig für die einzelnen Schritte eine eigene Methode. Verwende dazu die Datei &#039;&#039;&#039;simpleText.txt&#039;&#039;&#039; im &#039;&#039;&#039;resources/txt/&#039;&#039;&#039; Ordner.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
//Bytestrom&lt;br /&gt;
InputStream inputStream = Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;);&lt;br /&gt;
//Zeichenstrom&lt;br /&gt;
Reader reader = new InputStreamReader(Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;)));&lt;br /&gt;
&lt;br /&gt;
//Bsp.: Scanner&lt;br /&gt;
Scanner scanner = new Scanner(inputStream);&lt;br /&gt;
//Bsp.: BufferedReader&lt;br /&gt;
BufferedReader bufferedReader = new BufferedReader(reader);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File schreiben ===&lt;br /&gt;
Lies, solange Eingaben vom Benutzer, bis eine Leerzeile eingegeben wird. Dann schreibe die Eingaben in eine Datei. Der Pfad soll lauten &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039; Datein mit einem schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Erstelle eine Klasse für Logging ===&lt;br /&gt;
&lt;br /&gt;
Der Logging schreibt fortlaufend eine Datei. Es wird nicht überschreiben.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
/* &lt;br /&gt;
   severity=1  --&amp;gt; ERROR&lt;br /&gt;
   severity=2  --&amp;gt; WARNING&lt;br /&gt;
   severity=3  --&amp;gt; INFO&lt;br /&gt;
&lt;br /&gt;
   Ergebnis:&lt;br /&gt;
   2022.04.26. 09:30:34 INFO: Guten Morgen! &lt;br /&gt;
   2022.04.26. 09:31:01 WARNING: Kein passende Aufgabe gefunden&lt;br /&gt;
   ...&lt;br /&gt;
*/&lt;br /&gt;
public static void log(int severity, String message){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Log Rotation&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es kann schwerwiegende Konsequenzen haben, wenn eine Software die komplette Festplatte vollschreibt.&lt;br /&gt;
Aus diesem Grund ist es üblich, dass im Fall die Logdatei die Größe (1 MByte) überschreitet, wird&lt;br /&gt;
als &amp;quot;.old&amp;quot; umgenannt. Falls eine weitere &amp;quot;.old&amp;quot; Datei existieren würde, wird die überschreiben. &lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File einlesen und Ausgeben ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; &#039;&#039;simpleText.txt&#039;&#039; aus den Ressources mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein.&lt;br /&gt;
# Gib die Anzahl der Buchstaben aus&lt;br /&gt;
# Erstelle eine Methode welche nur einen bestimmten Buchstaben des Texts zählt, welcher als Parameter mitgegeben wird.&lt;br /&gt;
# Erstelle eine Methode welche ein {{JSL|char[]}} von Bestimmten Buchstaben des Texts zählt. Das {{JSL|char[]}} soll als Parameter mitgegeben werden können. Es soll nur die Gesamtzahl aller Vorkommnisse der Buchstaben gezählt werden. Wie oft ein einzelner Buchstabe vorkommt ist hier uninteressant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 2)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JSL|System.out.println(countChar(text, &#039;a&#039;));}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 3)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
char[] charsToCount = new char[]{&#039;a&#039;, &#039;z&#039;, &#039;e&#039;};&lt;br /&gt;
System.out.println(countChars(text, charsToCount));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Und gib die Anzahl der Wörter aus. Es muss nicht exakt sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach einem &#039;&#039;&#039;bestimmten Wort&#039;&#039;&#039; und gib aus wie oft es vorkommt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter ersetzen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach &#039;&#039;&#039;zwei Wörtern&#039;&#039;&#039;. Das &#039;&#039;&#039;erste Wort&#039;&#039;&#039; soll durch das &#039;&#039;&#039;zweite Wort&#039;&#039;&#039; im Text ersetzt werden. Gib dannach den Text aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: File lesen und schreiben&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Programm, Bankkonto Daten in einem Text File speichert.&lt;br /&gt;
&lt;br /&gt;
* Beim Start des Programms frage (Konsole) nach dem Namen des Anwenders.&lt;br /&gt;
* Entsprechend der Name, öffnen im Verzeichnis &#039;&#039;&#039;assets/bank&#039;&#039;&#039; den &amp;quot;name&amp;quot;.txt File (mit relativen Pfad -- keine Ressources) und lese der aktuelle Kontostand aus&lt;br /&gt;
** Falls die Datei (der Konto) noch nicht existiert, es handelt um ein neues Konto mit 100 EUR Guthaben.&lt;br /&gt;
* Zeige an den Anwender sein aktueller Kontostand&lt;br /&gt;
* Frage nach einer Transaktion (positiver Wert = Einzahlen, negativer Wert = Auszahlen)&lt;br /&gt;
* Speichere den neuen Kontostand in der gleichen &amp;quot;name&amp;quot;.txt Datei&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3652</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Datenströme</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3652"/>
		<updated>2024-10-22T11:07:41Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Files ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verzeichnis auflisten ===&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses ausgegeben werden. Gib hierfür eine Liste aller Dateien aus.&lt;br /&gt;
&lt;br /&gt;
[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html Dokumentation von File]&lt;br /&gt;
&lt;br /&gt;
=== Bonusaufgabe: Verzeichnis auflisten in Reihenfolge ===&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien in folgender Rheinfolge auf.&lt;br /&gt;
* Unterverzeichnisse&lt;br /&gt;
* Dateien nach Größe absteigend&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl der Dateien im Verzeichnis&lt;br /&gt;
* Summe der Größe der Dateien (ohne der Größe von Unterverzeichnissen)&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen (Rekursiv) ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses &#039;&#039;&#039;und aller Unterverzeichnisse&#039;&#039;&#039; verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl Dateien in allen Verzeichnissen&lt;br /&gt;
* Summe der Größe der aller Dateien&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Größte Datei suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad. Suche nach der größten Datei in dem Verzeichnis inkl. seiner Unterverzeichnisse.&lt;br /&gt;
&lt;br /&gt;
Gib den relativen Pfad vom Startverzeichnis und die Größe aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datei nach Name suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad und nach einem Suchkriterium. Suche alle Dateien im Verzeichnis, inkl. Unterverzeichnisse, deren Name dem Suchkriterium entspricht.&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien mit deren relativem Pfad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Streams ==&lt;br /&gt;
&lt;br /&gt;
Im folgenden geht es um das einlesen und verarbeiten von Textdateien. Erstelle wo möglich und nötig für die einzelnen Schritte eine eigene Methode. Verwende dazu die Datei &#039;&#039;&#039;simpleText.txt&#039;&#039;&#039; im &#039;&#039;&#039;resources/txt/&#039;&#039;&#039; Ordner.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
//Bytestrom&lt;br /&gt;
InputStream inputStream = Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;);&lt;br /&gt;
//Zeichenstrom&lt;br /&gt;
Reader reader = new InputStreamReader(Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;)));&lt;br /&gt;
&lt;br /&gt;
//Bsp.: Scanner&lt;br /&gt;
Scanner scanner = new Scanner(inputStream);&lt;br /&gt;
//Bsp.: BufferedReader&lt;br /&gt;
BufferedReader bufferedReader = new BufferedReader(reader);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File schreiben ===&lt;br /&gt;
Lies, solange Eingaben vom Benutzer, bis eine Leerzeile eingegeben wird. Dann schreibe die Eingaben in eine Datei. Der Pfad soll lauten &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039; Datein mit einem schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Erstelle eine Klasse für Logging ===&lt;br /&gt;
&lt;br /&gt;
Der Logging schreibt fortlaufend eine Datei. Es wird nicht überschreiben.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
/* &lt;br /&gt;
   severity=1  --&amp;gt; ERROR&lt;br /&gt;
   severity=2  --&amp;gt; WARNING&lt;br /&gt;
   severity=3  --&amp;gt; INFO&lt;br /&gt;
&lt;br /&gt;
   Ergebnis:&lt;br /&gt;
   2022.04.26. 09:30:34 INFO: Guten Morgen! &lt;br /&gt;
   2022.04.26. 09:31:01 WARNING: Kein passende Aufgabe gefunden&lt;br /&gt;
   ...&lt;br /&gt;
*/&lt;br /&gt;
public static void log(int severity, String message){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Log Rotation&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es kann schwerwiegende Konsequenzen haben, wenn eine Software die komplette Festplatte vollschreibt.&lt;br /&gt;
Aus diesem Grund ist es üblich, dass im Fall die Logdatei die Größe (1 MByte) überschreitet, wird&lt;br /&gt;
als &amp;quot;.old&amp;quot; umgenannt. Falls eine weitere &amp;quot;.old&amp;quot; Datei existieren würde, wird die überschreiben. &lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File einlesen und Ausgeben ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; &#039;&#039;simpleText.txt&#039;&#039; aus den Ressources mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: File lesen und schreiben&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Programm, Bankkonto Daten in einem Text File speichert.&lt;br /&gt;
&lt;br /&gt;
* Beim Start des Programms frage (Konsole) nach dem Namen des Anwenders.&lt;br /&gt;
* Entsprechend der Name, öffnen im Verzeichnis &#039;&#039;&#039;assets/bank&#039;&#039;&#039; den &amp;quot;name&amp;quot;.txt File und lese der aktuelle Kontostand aus&lt;br /&gt;
** Falls die Datei (der Konto) noch nicht existiert, es handelt um ein neues Konto mit 100 EUR Guthaben.&lt;br /&gt;
* Zeige an den Anwender sein aktueller Kontostand&lt;br /&gt;
* Frage nach einer Transaktion (positiver Wert = Einzahlen, negativer Wert = Auszahlen)&lt;br /&gt;
* Speichere den neuen Kontostand in der gleichen &amp;quot;name&amp;quot;.txt Datei&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein.&lt;br /&gt;
# Gib die Anzahl der Buchstaben aus&lt;br /&gt;
# Erstelle eine Methode welche nur einen bestimmten Buchstaben des Texts zählt, welcher als Parameter mitgegeben wird.&lt;br /&gt;
# Erstelle eine Methode welche ein {{JSL|char[]}} von Bestimmten Buchstaben des Texts zählt. Das {{JSL|char[]}} soll als Parameter mitgegeben werden können. Es soll nur die Gesamtzahl aller Vorkommnisse der Buchstaben gezählt werden. Wie oft ein einzelner Buchstabe vorkommt ist hier uninteressant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 2)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JSL|System.out.println(countChar(text, &#039;a&#039;));}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 3)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
char[] charsToCount = new char[]{&#039;a&#039;, &#039;z&#039;, &#039;e&#039;};&lt;br /&gt;
System.out.println(countChars(text, charsToCount));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Und gib die Anzahl der Wörter aus. Es muss nicht exakt sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach einem &#039;&#039;&#039;bestimmten Wort&#039;&#039;&#039; und gib aus wie oft es vorkommt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter ersetzen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach &#039;&#039;&#039;zwei Wörtern&#039;&#039;&#039;. Das &#039;&#039;&#039;erste Wort&#039;&#039;&#039; soll durch das &#039;&#039;&#039;zweite Wort&#039;&#039;&#039; im Text ersetzt werden. Gib dannach den Text aus.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3651</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Datenströme</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Datenstr%C3%B6me&amp;diff=3651"/>
		<updated>2024-10-22T11:06:26Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe: File einlesen und Ausgeben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Files ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verzeichnis auflisten ===&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses ausgegeben werden. Gib hierfür eine Liste aller Dateien aus.&lt;br /&gt;
&lt;br /&gt;
[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html Dokumentation von File]&lt;br /&gt;
&lt;br /&gt;
=== Bonusaufgabe: Verzeichnis auflisten in Reihenfolge ===&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien in folgender Rheinfolge auf.&lt;br /&gt;
* Unterverzeichnisse&lt;br /&gt;
* Dateien nach Größe absteigend&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl der Dateien im Verzeichnis&lt;br /&gt;
* Summe der Größe der Dateien (ohne der Größe von Unterverzeichnissen)&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dateien Zählen und Summen (Rekursiv) ===&lt;br /&gt;
&lt;br /&gt;
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses &#039;&#039;&#039;und aller Unterverzeichnisse&#039;&#039;&#039; verarbeitet und folgendes kalkuliert werden:&lt;br /&gt;
* Anzahl Dateien in allen Verzeichnissen&lt;br /&gt;
* Summe der Größe der aller Dateien&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Größte Datei suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad. Suche nach der größten Datei in dem Verzeichnis inkl. seiner Unterverzeichnisse.&lt;br /&gt;
&lt;br /&gt;
Gib den relativen Pfad vom Startverzeichnis und die Größe aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datei nach Name suchen ===&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender nach einem Dateipfad und nach einem Suchkriterium. Suche alle Dateien im Verzeichnis, inkl. Unterverzeichnisse, deren Name dem Suchkriterium entspricht.&lt;br /&gt;
&lt;br /&gt;
Liste die Dateien mit deren relativem Pfad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Streams ==&lt;br /&gt;
&lt;br /&gt;
Im folgenden geht es um das einlesen und verarbeiten von Textdateien. Erstelle wo möglich und nötig für die einzelnen Schritte eine eigene Methode. Verwende dazu die Datei &#039;&#039;&#039;simpleText.txt&#039;&#039;&#039; im &#039;&#039;&#039;resources/txt/&#039;&#039;&#039; Ordner.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
//Bytestrom&lt;br /&gt;
InputStream inputStream = Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;);&lt;br /&gt;
//Zeichenstrom&lt;br /&gt;
Reader reader = new InputStreamReader(Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream(&amp;quot;txt/simpleText.txt&amp;quot;)));&lt;br /&gt;
&lt;br /&gt;
//Bsp.: Scanner&lt;br /&gt;
Scanner scanner = new Scanner(inputStream);&lt;br /&gt;
//Bsp.: BufferedReader&lt;br /&gt;
BufferedReader bufferedReader = new BufferedReader(reader);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File schreiben ===&lt;br /&gt;
Lies, solange Eingaben vom Benutzer, bis eine Leerzeile eingegeben wird. Dann schreibe die Eingaben in eine Datei. Der Pfad soll lauten &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: File lesen und schreiben&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Programm, Bankkonto Daten in einem Text File speichert.&lt;br /&gt;
&lt;br /&gt;
* Beim Start des Programms frage (Konsole) nach dem Namen des Anwenders.&lt;br /&gt;
* Entsprechend der Name, öffnen im Verzeichnis &#039;&#039;&#039;assets/bank&#039;&#039;&#039; den &amp;quot;name&amp;quot;.txt File und lese der aktuelle Kontostand aus&lt;br /&gt;
** Falls die Datei (der Konto) noch nicht existiert, es handelt um ein neues Konto mit 100 EUR Guthaben.&lt;br /&gt;
* Zeige an den Anwender sein aktueller Kontostand&lt;br /&gt;
* Frage nach einer Transaktion (positiver Wert = Einzahlen, negativer Wert = Auszahlen)&lt;br /&gt;
* Speichere den neuen Kontostand in der gleichen &amp;quot;name&amp;quot;.txt Datei&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle &#039;&#039;&#039;assets/tmp/output.txt&#039;&#039;&#039; Datein mit einem schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Erstelle eine Klasse für Logging ===&lt;br /&gt;
&lt;br /&gt;
Der Logging schreibt fortlaufend eine Datei. Es wird nicht überschreiben.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
/* &lt;br /&gt;
   severity=1  --&amp;gt; ERROR&lt;br /&gt;
   severity=2  --&amp;gt; WARNING&lt;br /&gt;
   severity=3  --&amp;gt; INFO&lt;br /&gt;
&lt;br /&gt;
   Ergebnis:&lt;br /&gt;
   2022.04.26. 09:30:34 INFO: Guten Morgen! &lt;br /&gt;
   2022.04.26. 09:31:01 WARNING: Kein passende Aufgabe gefunden&lt;br /&gt;
   ...&lt;br /&gt;
*/&lt;br /&gt;
public static void log(int severity, String message){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Log Rotation&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es kann schwerwiegende Konsequenzen haben, wenn eine Software die komplette Festplatte vollschreibt.&lt;br /&gt;
Aus diesem Grund ist es üblich, dass im Fall die Logdatei die Größe (1 MByte) überschreitet, wird&lt;br /&gt;
als &amp;quot;.old&amp;quot; umgenannt. Falls eine weitere &amp;quot;.old&amp;quot; Datei existieren würde, wird die überschreiben. &lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: File einlesen und Ausgeben ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; &#039;&#039;simpleText.txt&#039;&#039; aus den Ressources mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein und gib es aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein.&lt;br /&gt;
# Gib die Anzahl der Buchstaben aus&lt;br /&gt;
# Erstelle eine Methode welche nur einen bestimmten Buchstaben des Texts zählt, welcher als Parameter mitgegeben wird.&lt;br /&gt;
# Erstelle eine Methode welche ein {{JSL|char[]}} von Bestimmten Buchstaben des Texts zählt. Das {{JSL|char[]}} soll als Parameter mitgegeben werden können. Es soll nur die Gesamtzahl aller Vorkommnisse der Buchstaben gezählt werden. Wie oft ein einzelner Buchstabe vorkommt ist hier uninteressant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 2)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JSL|System.out.println(countChar(text, &#039;a&#039;));}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip zu 3)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
char[] charsToCount = new char[]{&#039;a&#039;, &#039;z&#039;, &#039;e&#039;};&lt;br /&gt;
System.out.println(countChars(text, charsToCount));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Und gib die Anzahl der Wörter aus. Es muss nicht exakt sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter zählen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach einem &#039;&#039;&#039;bestimmten Wort&#039;&#039;&#039; und gib aus wie oft es vorkommt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dynamisches Wörter ersetzen ===&lt;br /&gt;
Lies das &#039;&#039;&#039;File&#039;&#039;&#039; mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach &#039;&#039;&#039;zwei Wörtern&#039;&#039;&#039;. Das &#039;&#039;&#039;erste Wort&#039;&#039;&#039; soll durch das &#039;&#039;&#039;zweite Wort&#039;&#039;&#039; im Text ersetzt werden. Gib dannach den Text aus.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3634</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3634"/>
		<updated>2024-10-10T12:18:26Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} und {{JSL|substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bonuse String Vergleich ===&lt;br /&gt;
Betrachte und teste folgenden Code:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Scanner sc = new Scanner(System.in);&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 1 ein:&amp;quot;);&lt;br /&gt;
String word = sc.nextLine();&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 2 ein:&amp;quot;);&lt;br /&gt;
String word2 = sc.nextLine();&lt;br /&gt;
&lt;br /&gt;
System.out.println(&amp;quot;== &amp;quot;+(word == word2));&lt;br /&gt;
System.out.println(&amp;quot;equals &amp;quot;+(word.equals(word2))); &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Geben Sie String 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
Geben Sie String 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
== false&lt;br /&gt;
equals true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Warum ist: {{JML|code=&lt;br /&gt;
word == word2&lt;br /&gt;
}} {{JSL|false}}&lt;br /&gt;
und&lt;br /&gt;
{{JML|code=&lt;br /&gt;
word.equals(word2)&lt;br /&gt;
}} {{JSL|true}}?&lt;br /&gt;
=== Aufgabe: String Vergleich - Bonus ===&lt;br /&gt;
Warum ist folgender Ausdruck wahr:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
&amp;quot;Hallo&amp;quot; == &amp;quot;Hallo&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Furkan&amp;quot;, &amp;quot;Aylin&amp;quot;, &amp;quot;Thiemo&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;Akif&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Gyula&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3633</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3633"/>
		<updated>2024-10-08T11:58:17Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe: Bubblesort mit Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} und {{JSL|substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bonuse String Vergleich ===&lt;br /&gt;
Betrachte und teste folgenden Code:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Scanner sc = new Scanner(System.in);&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 1 ein:&amp;quot;);&lt;br /&gt;
String word = sc.nextLine();&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 2 ein:&amp;quot;);&lt;br /&gt;
String word2 = sc.nextLine();&lt;br /&gt;
&lt;br /&gt;
System.out.println(&amp;quot;== &amp;quot;+(word == word2));&lt;br /&gt;
System.out.println(&amp;quot;equals &amp;quot;+(word.equals(word2))); &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Geben Sie String 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
Geben Sie String 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
== false&lt;br /&gt;
equals true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Warum ist: {{JML|code=&lt;br /&gt;
word == word2&lt;br /&gt;
}} {{JSL|false}}&lt;br /&gt;
und&lt;br /&gt;
{{JML|code=&lt;br /&gt;
word.equals(word2)&lt;br /&gt;
}} {{JSL|true}}?&lt;br /&gt;
=== Aufgabe: String Vergleich - Bonus ===&lt;br /&gt;
Warum ist folgender Ausdruck wahr:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
&amp;quot;Hallo&amp;quot; == &amp;quot;Hallo&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Furkan&amp;quot;, &amp;quot;Aylin&amp;quot;, &amp;quot;Thiemo&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;Akif&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Gyula&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3632</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3632"/>
		<updated>2024-10-08T11:57:15Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} und {{JSL|substring(...)}} erarbeitet werden.  === Aufgabe: Bonuse String Vergleich === Betrachte und teste folgenden Code: {{JML|code= Scanner sc = new Scanner(System.in); System.out.println(&amp;quot;Geben Sie String 1 ein:&amp;quot;); String word = sc.nextLine(); System.out.println(&amp;quot;Geben Sie…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} und {{JSL|substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bonuse String Vergleich ===&lt;br /&gt;
Betrachte und teste folgenden Code:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Scanner sc = new Scanner(System.in);&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 1 ein:&amp;quot;);&lt;br /&gt;
String word = sc.nextLine();&lt;br /&gt;
System.out.println(&amp;quot;Geben Sie String 2 ein:&amp;quot;);&lt;br /&gt;
String word2 = sc.nextLine();&lt;br /&gt;
&lt;br /&gt;
System.out.println(&amp;quot;== &amp;quot;+(word == word2));&lt;br /&gt;
System.out.println(&amp;quot;equals &amp;quot;+(word.equals(word2))); &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Geben Sie String 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
Geben Sie String 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Test&lt;br /&gt;
== false&lt;br /&gt;
equals true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Warum ist: {{JML|code=&lt;br /&gt;
word == word2&lt;br /&gt;
}} {{JSL|false}}&lt;br /&gt;
und&lt;br /&gt;
{{JML|code=&lt;br /&gt;
word.equals(word2)&lt;br /&gt;
}} {{JSL|true}}?&lt;br /&gt;
=== Aufgabe: String Vergleich - Bonus ===&lt;br /&gt;
Warum ist folgender Ausdruck wahr:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
&amp;quot;Hallo&amp;quot; == &amp;quot;Hallo&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Samet&amp;quot;, &amp;quot;Franco&amp;quot;, &amp;quot;Demian&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Katherina&amp;quot;, &amp;quot;Irem&amp;quot;, &amp;quot;Ardijanla&amp;quot;, &amp;quot;Aki&amp;quot;, &amp;quot;Luki&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3627</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3627"/>
		<updated>2024-10-02T13:56:17Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Rehearsal.java RehearsalWeek01]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Rhomubs, X, Slash(True,False)&lt;br /&gt;
|content=&lt;br /&gt;
* Wiedholung Rehearsal (Funktionen, Schleifen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/FormatString.java StringFormat]&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Variablen.java Variablen]&lt;br /&gt;
|exercises=&lt;br /&gt;
* ChristmasTree, Circle&lt;br /&gt;
|content=&lt;br /&gt;
* Einführung in nächstes Kapitel&lt;br /&gt;
* Long&lt;br /&gt;
* Float&lt;br /&gt;
* Double&lt;br /&gt;
* System.out.Printf()&lt;br /&gt;
* Wiederholung von Variablen, Syntax&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week2/RehearsalWeek02Montag.java RehearsalWeek02Montag]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Christbaum&lt;br /&gt;
* Summe addieren&lt;br /&gt;
* Faktorial rechnen&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von letzter Woche&lt;br /&gt;
* String Format Beispiele&lt;br /&gt;
* Variablen und Funktionen mit rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung XMas-Tree&lt;br /&gt;
* Wiederholung String-Format&lt;br /&gt;
* Variable Scope (global, lokal)&lt;br /&gt;
* Anwendung von int/double Typen&lt;br /&gt;
* Unterschied zwischen int- und double-Division&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Rheien (Leibnitz, Nilakanta, Wurzeln 2,...)&lt;br /&gt;
* Aufgaben in Teilaufgaben aufteilen&lt;br /&gt;
* Wiederholung (Zeichnen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Console Input&lt;br /&gt;
* String einlesen&lt;br /&gt;
* Int einlesen&lt;br /&gt;
|content=&lt;br /&gt;
* Scanner sc&lt;br /&gt;
* Exception handling&lt;br /&gt;
* try catch&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Ratespiel&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von Donnerstag&lt;br /&gt;
* Gemeinsam coden (4 versionen von Int reader)&lt;br /&gt;
* Logik und Aufbau für Ratespiel besprechen, vor dem coden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 03 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 23. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Wiederholung Console Input (Zahlen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 24. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Taschenrechner&lt;br /&gt;
* Create and fill Arrays&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Arrays&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 25. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* createArray(int size) auf- und absteigend&lt;br /&gt;
* copyArray()&lt;br /&gt;
* printArray() with for-each, for-i, print 2th, 5th, 10th element, print every second element &lt;br /&gt;
|content=&lt;br /&gt;
* Arrays&lt;br /&gt;
* For-each&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 26. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 27. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 04 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 30. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 01. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 02. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* WildColors&lt;br /&gt;
|exercises=&lt;br /&gt;
* verschieden Sort Algorithmen&lt;br /&gt;
* 2-D Array Initialisieren&lt;br /&gt;
|content=&lt;br /&gt;
* Array of Array&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 03. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 04. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3626</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Arrays</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3626"/>
		<updated>2024-10-02T09:45:51Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe: Conways Game of life */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw.&lt;br /&gt;
&lt;br /&gt;
Erstelle ein zweites {{JSL|int[]}} und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Kopie ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
public static int[] makeACopy(int[] original){&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Random random = new Random();&lt;br /&gt;
...&lt;br /&gt;
int randomNumber = random.nextInt([Upper bound]);&lt;br /&gt;
}}&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;fori-Schleife&#039;&#039;&#039; aus. Das Ziel ist eine identische Ausgabe, wie {{JSL|Arrays.toString()}}&lt;br /&gt;
# Gib den zweiten, fünften und zehnten Wert des Arrays aus. Falls in Input Array die Werte nicht vorhanden sind, schreibe „nicht vorhanden“.&lt;br /&gt;
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer &#039;&#039;&#039;Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Crazy Range ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;-50&#039;&#039;&#039; bis &#039;&#039;&#039;50&#039;&#039;&#039; und gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Zählen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Werte größer als 30 zählt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Summe ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Summe der Werte zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Min/Max/Avg ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. Erstelle jeweils eine Methode für das &#039;&#039;&#039;Minimum&#039;&#039;&#039;, das &#039;&#039;&#039;Maximum&#039;&#039;&#039; und den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039;. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Version 1)&lt;br /&gt;
[89, 86, 100, 87, 93, 81, 97, 95, 92, 98]&lt;br /&gt;
Max Value found in this Array is = 100&lt;br /&gt;
Max Value found at Position 2&lt;br /&gt;
&lt;br /&gt;
Version2)&lt;br /&gt;
[94, 99, 83, 86, 96, 92, 92,...]&lt;br /&gt;
Max Value found in this Array is = 100&lt;br /&gt;
Index position found the highest Number: [17, 37, 43, 44]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Erstelle zwei weitere Funktionen, die den &#039;&#039;&#039;Index&#039;&#039;&#039; des Minimums und des Maximums zurückgeben.&lt;br /&gt;
* Erstelle eine weitere Funktion, die mehrere Index Positionen zurück gibt, wenn der Max oder Min Wert, mehr als einmal vorkommt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Zahlen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere der Größe nach aufsteigend (Ascending)&lt;br /&gt;
# Sortiere der Größe nach absteigend (Descending)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 15 verschiedene Sortieralgorithmen&#039;&#039;&#039; ===&lt;br /&gt;
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:&lt;br /&gt;
 https://www.youtube.com/watch?v=kPRA0W1kECg&lt;br /&gt;
&lt;br /&gt;
Den Pseudo-Code der Algorithmen findest du unter:&lt;br /&gt;
 https://panthema.net/2013/sound-of-sorting/SoS-CheatSheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: 2D-Array ===&lt;br /&gt;
Erstelle ein Zwei-Dimension-Array {{JSL|int[][]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Nach Eingabe von Anwender gebe zurück die Summe pro Zeile oder pro Spalte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pascal Dreieck ===&lt;br /&gt;
Frage den Anwender nach der gewünschten Größe und erstelle ein Pascal-Dreieck mit der entsprechenden Dimension.&lt;br /&gt;
 Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach &#039;&#039;&#039;Links&#039;&#039;&#039; und nach &#039;&#039;&#039;Oben&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;:&lt;br /&gt;
{{BML|code=&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
 1       1       1       1       1       1       1       1       1       1 &lt;br /&gt;
 1       2       3       4       5       6       7       8       9      10 &lt;br /&gt;
 1       3       6      10      15      21      28      36      45      55 &lt;br /&gt;
 1       4      10      20      35      56      84     120     165     220 &lt;br /&gt;
 1       5      15      35      70     126     210     330     495     715 &lt;br /&gt;
 1       6      21      56     126     252     462     792    1287    2002 &lt;br /&gt;
 1       7      28      84     210     462     924    1716    3003    5005 &lt;br /&gt;
 1       8      36     120     330     792    1716    3432    6435   11440 &lt;br /&gt;
 1       9      45     165     495    1287    3003    6435   12870   24310 &lt;br /&gt;
 1      10      55     220     715    2002    5005   11440   24310   48620&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck) ===&lt;br /&gt;
Wenn wir die Zahlen Diagonal lesen, bekommen wir die Koeffizienten von {{JSL|(a+b)^n}}&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 2ab + b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 3a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;b + 3ab&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + b&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender, welche Formular er braucht, und gib die konkrete Formel in der Konsole aus.&lt;br /&gt;
Verwende {{JSL|^}} für die Darstellung des Exponenten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: TicTacToe ===&lt;br /&gt;
Programmiere das Spiel TicTacToe.&lt;br /&gt;
&lt;br /&gt;
Für das Spielfeld, verwende {{JSL|int[3][3]}} Array, in dem&lt;br /&gt;
* 0 = Leer&lt;br /&gt;
* 1 = Spieler 1&lt;br /&gt;
* 2 = Spieler 2&lt;br /&gt;
&lt;br /&gt;
Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 4 in Rows&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Das Spiel wird auf einem senkrecht stehenden hohlen Spielbrett gespielt, in das die Spieler&lt;br /&gt;
abwechselnd ihre &#039;&#039;&#039;Spielsteine fallen lassen&#039;&#039;&#039;. Das Spielbrett besteht aus &#039;&#039;&#039;sieben Spalten (senkrecht) und sechs Reihen (waagerecht)&#039;&#039;&#039;. Jeder Spieler besitzt 21 gleichfarbige Spielsteine. Wenn ein Spieler einen&lt;br /&gt;
Spielstein in eine Spalte fallen lässt, besetzt dieser den untersten freien Platz der Spalte. Gewinner ist&lt;br /&gt;
der Spieler, der es als erster schafft, &#039;&#039;&#039;vier oder mehr seiner Spielsteine waagerecht, senkrecht oder diagonal in eine Linie&#039;&#039;&#039; zu bringen. &lt;br /&gt;
Das Spiel endet unentschieden, wenn das Spielbrett komplett gefüllt ist, ohne dass ein Spieler eine Viererlinie gebildet hat.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Conways Game of life ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens Conways Spiel des Lebens] implementiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Animated glider emblem.gif|mini|ohne|Glider&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
# Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier].&lt;br /&gt;
# Als Ausgangsfeld verwende folgende 2D-Arrays:&lt;br /&gt;
## {{JML|code=&lt;br /&gt;
    public static final int[][] GLEITER = {&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 1, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 1, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 1, 1, 1, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
    };&lt;br /&gt;
}}&lt;br /&gt;
## {{JML|code=&lt;br /&gt;
    public static final int[][] SEGLER = {&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},&lt;br /&gt;
    };&lt;br /&gt;
}}&lt;br /&gt;
## Ein zufällig generiertes Array&lt;br /&gt;
# Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code=&lt;br /&gt;
try {&lt;br /&gt;
    Thread.sleep(1000);&lt;br /&gt;
} catch(InterruptedException exc) {&lt;br /&gt;
    //noop &lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
# Rufe vor der Ausgabe {{JML|code=&lt;br /&gt;
    public static void clearScreen() {&lt;br /&gt;
        System.out.print(&amp;quot;\033[H\033[2J&amp;quot;);&lt;br /&gt;
        System.out.flush();&lt;br /&gt;
    }&lt;br /&gt;
}} auf&lt;br /&gt;
# Starte das Programm über {{BSL|git-bash}} {{BML|code=&lt;br /&gt;
cd [dein Pfad zum Projekt]/&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3622</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3622"/>
		<updated>2024-09-25T13:14:25Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Rehearsal.java RehearsalWeek01]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Rhomubs, X, Slash(True,False)&lt;br /&gt;
|content=&lt;br /&gt;
* Wiedholung Rehearsal (Funktionen, Schleifen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/FormatString.java StringFormat]&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Variablen.java Variablen]&lt;br /&gt;
|exercises=&lt;br /&gt;
* ChristmasTree, Circle&lt;br /&gt;
|content=&lt;br /&gt;
* Einführung in nächstes Kapitel&lt;br /&gt;
* Long&lt;br /&gt;
* Float&lt;br /&gt;
* Double&lt;br /&gt;
* System.out.Printf()&lt;br /&gt;
* Wiederholung von Variablen, Syntax&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week2/RehearsalWeek02Montag.java RehearsalWeek02Montag]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Christbaum&lt;br /&gt;
* Summe addieren&lt;br /&gt;
* Faktorial rechnen&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von letzter Woche&lt;br /&gt;
* String Format Beispiele&lt;br /&gt;
* Variablen und Funktionen mit rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung XMas-Tree&lt;br /&gt;
* Wiederholung String-Format&lt;br /&gt;
* Variable Scope (global, lokal)&lt;br /&gt;
* Anwendung von int/double Typen&lt;br /&gt;
* Unterschied zwischen int- und double-Division&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Rheien (Leibnitz, Nilakanta, Wurzeln 2,...)&lt;br /&gt;
* Aufgaben in Teilaufgaben aufteilen&lt;br /&gt;
* Wiederholung (Zeichnen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Console Input&lt;br /&gt;
* String einlesen&lt;br /&gt;
* Int einlesen&lt;br /&gt;
|content=&lt;br /&gt;
* Scanner sc&lt;br /&gt;
* Exception handling&lt;br /&gt;
* try catch&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Ratespiel&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von Donnerstag&lt;br /&gt;
* Gemeinsam coden (4 versionen von Int reader)&lt;br /&gt;
* Logik und Aufbau für Ratespiel besprechen, vor dem coden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 03 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 23. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Wiederholung Console Input (Zahlen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 24. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Taschenrechner&lt;br /&gt;
* Create and fill Arrays&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Arrays&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 25. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* createArray(int size) auf- und absteigend&lt;br /&gt;
* copyArray()&lt;br /&gt;
* printArray() with for-each, for-i, print 2th, 5th, 10th element, print every second element &lt;br /&gt;
|content=&lt;br /&gt;
* Arrays&lt;br /&gt;
* For-each&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 26. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 27. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 04 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 30. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 01. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 02. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 03. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 04. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3621</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Arrays</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3621"/>
		<updated>2024-09-25T12:05:38Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Aufgabe: Random Number Array */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw.&lt;br /&gt;
&lt;br /&gt;
Erstelle ein zweites {{JSL|int[]}} und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Kopie ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
public static int[] makeACopy(int[] original){&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Random random = new Random();&lt;br /&gt;
...&lt;br /&gt;
int randomNumber = random.nextInt([Upper bound]);&lt;br /&gt;
}}&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;fori-Schleife&#039;&#039;&#039; aus. Das Ziel ist eine identische Ausgabe, wie {{JSL|Arrays.toString()}}&lt;br /&gt;
# Gib den zweiten, fünften und zehnten Wert des Arrays aus. Falls in Input Array die Werte nicht vorhanden sind, schreibe „nicht vorhanden“.&lt;br /&gt;
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer &#039;&#039;&#039;Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Crazy Range ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;-50&#039;&#039;&#039; bis &#039;&#039;&#039;50&#039;&#039;&#039; und gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Zählen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Werte größer als 30 zählt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Summe ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Summe der Werte zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Min/Max/Avg ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. Erstelle jeweils eine Methode für das &#039;&#039;&#039;Minimum&#039;&#039;&#039;, das &#039;&#039;&#039;Maximum&#039;&#039;&#039; und den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039;. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.&lt;br /&gt;
&lt;br /&gt;
Erstelle zwei weitere Funktionen, die den &#039;&#039;&#039;Index&#039;&#039;&#039; des Minimums und des Maximums zurückgeben.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Zahlen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere der Größe nach aufsteigend (Ascending)&lt;br /&gt;
# Sortiere der Größe nach absteigend (Descending)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 15 verschiedene Sortieralgorithmen&#039;&#039;&#039; ===&lt;br /&gt;
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:&lt;br /&gt;
 https://www.youtube.com/watch?v=kPRA0W1kECg&lt;br /&gt;
&lt;br /&gt;
Den Pseudo-Code der Algorithmen findest du unter:&lt;br /&gt;
 https://panthema.net/2013/sound-of-sorting/SoS-CheatSheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: 2D-Array ===&lt;br /&gt;
Erstelle ein Zwei-Dimension-Array {{JSL|int[][]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Nach Eingabe von Anwender gebe zurück die Summe pro Zeile oder pro Spalte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pascal Dreieck ===&lt;br /&gt;
Frage den Anwender nach der gewünschten Größe und erstelle ein Pascal-Dreieck mit der entsprechenden Dimension.&lt;br /&gt;
 Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach &#039;&#039;&#039;Links&#039;&#039;&#039; und nach &#039;&#039;&#039;Oben&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;:&lt;br /&gt;
{{BML|code=&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
 1       1       1       1       1       1       1       1       1       1 &lt;br /&gt;
 1       2       3       4       5       6       7       8       9      10 &lt;br /&gt;
 1       3       6      10      15      21      28      36      45      55 &lt;br /&gt;
 1       4      10      20      35      56      84     120     165     220 &lt;br /&gt;
 1       5      15      35      70     126     210     330     495     715 &lt;br /&gt;
 1       6      21      56     126     252     462     792    1287    2002 &lt;br /&gt;
 1       7      28      84     210     462     924    1716    3003    5005 &lt;br /&gt;
 1       8      36     120     330     792    1716    3432    6435   11440 &lt;br /&gt;
 1       9      45     165     495    1287    3003    6435   12870   24310 &lt;br /&gt;
 1      10      55     220     715    2002    5005   11440   24310   48620&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck) ===&lt;br /&gt;
Wenn wir die Zahlen Diagonal lesen, bekommen wir die Koeffizienten von {{JSL|(a+b)^n}}&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 2ab + b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 3a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;b + 3ab&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + b&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender, welche Formular er braucht, und gib die konkrete Formel in der Konsole aus.&lt;br /&gt;
Verwende {{JSL|^}} für die Darstellung des Exponenten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: TicTacToe ===&lt;br /&gt;
Programmiere das Spiel TicTacToe.&lt;br /&gt;
&lt;br /&gt;
Für das Spielfeld, verwende {{JSL|int[3][3]}} Array, in dem&lt;br /&gt;
* 0 = Leer&lt;br /&gt;
* 1 = Spieler 1&lt;br /&gt;
* 2 = Spieler 2&lt;br /&gt;
&lt;br /&gt;
Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 4 in Rows&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Das Spiel wird auf einem senkrecht stehenden hohlen Spielbrett gespielt, in das die Spieler&lt;br /&gt;
abwechselnd ihre &#039;&#039;&#039;Spielsteine fallen lassen&#039;&#039;&#039;. Das Spielbrett besteht aus &#039;&#039;&#039;sieben Spalten (senkrecht) und sechs Reihen (waagerecht)&#039;&#039;&#039;. Jeder Spieler besitzt 21 gleichfarbige Spielsteine. Wenn ein Spieler einen&lt;br /&gt;
Spielstein in eine Spalte fallen lässt, besetzt dieser den untersten freien Platz der Spalte. Gewinner ist&lt;br /&gt;
der Spieler, der es als erster schafft, &#039;&#039;&#039;vier oder mehr seiner Spielsteine waagerecht, senkrecht oder diagonal in eine Linie&#039;&#039;&#039; zu bringen. &lt;br /&gt;
Das Spiel endet unentschieden, wenn das Spielbrett komplett gefüllt ist, ohne dass ein Spieler eine Viererlinie gebildet hat.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Conways Game of life ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens Conways Spiel des Lebens] implementiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Animated glider emblem.gif|mini|ohne|Glider&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
# Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier].&lt;br /&gt;
# Als Ausgangsfeld verwende folgende 2D-Arrays:&lt;br /&gt;
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.GLEITER}}&lt;br /&gt;
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.SEGLER}}&lt;br /&gt;
## Ein zufällig generiertes Array&lt;br /&gt;
# Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code=&lt;br /&gt;
try {&lt;br /&gt;
    Thread.sleep(1000);&lt;br /&gt;
} catch(InterruptedException exc) {&lt;br /&gt;
    //noop &lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
# Rufe vor der Ausgabe {{JSL|lukas.week3.day4.ConwaysGameOfLife.clearScreen();}} auf&lt;br /&gt;
# Starte das Programm über {{BSL|git-bash}} {{BML|code=&lt;br /&gt;
cd [dein Pfad zum Projekt]/&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3620</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3620"/>
		<updated>2024-09-24T12:28:17Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Rehearsal.java RehearsalWeek01]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Rhomubs, X, Slash(True,False)&lt;br /&gt;
|content=&lt;br /&gt;
* Wiedholung Rehearsal (Funktionen, Schleifen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/FormatString.java StringFormat]&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Variablen.java Variablen]&lt;br /&gt;
|exercises=&lt;br /&gt;
* ChristmasTree, Circle&lt;br /&gt;
|content=&lt;br /&gt;
* Einführung in nächstes Kapitel&lt;br /&gt;
* Long&lt;br /&gt;
* Float&lt;br /&gt;
* Double&lt;br /&gt;
* System.out.Printf()&lt;br /&gt;
* Wiederholung von Variablen, Syntax&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week2/RehearsalWeek02Montag.java RehearsalWeek02Montag]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Christbaum&lt;br /&gt;
* Summe addieren&lt;br /&gt;
* Faktorial rechnen&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von letzter Woche&lt;br /&gt;
* String Format Beispiele&lt;br /&gt;
* Variablen und Funktionen mit rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung XMas-Tree&lt;br /&gt;
* Wiederholung String-Format&lt;br /&gt;
* Variable Scope (global, lokal)&lt;br /&gt;
* Anwendung von int/double Typen&lt;br /&gt;
* Unterschied zwischen int- und double-Division&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Rheien (Leibnitz, Nilakanta, Wurzeln 2,...)&lt;br /&gt;
* Aufgaben in Teilaufgaben aufteilen&lt;br /&gt;
* Wiederholung (Zeichnen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Console Input&lt;br /&gt;
* String einlesen&lt;br /&gt;
* Int einlesen&lt;br /&gt;
|content=&lt;br /&gt;
* Scanner sc&lt;br /&gt;
* Exception handling&lt;br /&gt;
* try catch&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Ratespiel&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von Donnerstag&lt;br /&gt;
* Gemeinsam coden (4 versionen von Int reader)&lt;br /&gt;
* Logik und Aufbau für Ratespiel besprechen, vor dem coden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 03 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 23. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Wiederholung Console Input (Zahlen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 24. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Taschenrechner&lt;br /&gt;
* Create and fill Arrays&lt;br /&gt;
|content=&lt;br /&gt;
* Aufteilen der komplexe Aufgaben&lt;br /&gt;
* Platzhalter Funktionen verwenden&lt;br /&gt;
* Arrays&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 25. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 26. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 27. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 04 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 30. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 01. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 02. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 03. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 04. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3619</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Arrays</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Arrays&amp;diff=3619"/>
		<updated>2024-09-24T11:58:00Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung.  === Aufgabe: Number Array === Erstelle ein {{JSL|int[]}} mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw.  Erstelle ein zweites {{JSL|int[]}} und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1.    === Aufgabe: Kopie ===  Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt.  {{JML|code= public static int[] makeACopy(int[] original){ } }}…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw.&lt;br /&gt;
&lt;br /&gt;
Erstelle ein zweites {{JSL|int[]}} und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Kopie ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
public static int[] makeACopy(int[] original){&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Random random = new Random();&lt;br /&gt;
...&lt;br /&gt;
int randomNumber = random.nextInt([Upper bound]);&lt;br /&gt;
}}&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
# Gib es mit Hilfe einer &#039;&#039;&#039;fori-Schleife&#039;&#039;&#039; aus. Das Ziel ist eine identische Ausgabe, wie {{JSL|Arrays.toString()}}&lt;br /&gt;
# Gib den zweiten, fünften und zehnten Wert des Arrays aus.&lt;br /&gt;
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer &#039;&#039;&#039;Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Crazy Range ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;-50&#039;&#039;&#039; bis &#039;&#039;&#039;50&#039;&#039;&#039; und gib es mit Hilfe einer &#039;&#039;&#039;foreach-Schleife&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Zählen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Werte größer als 30 zählt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Summe ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Erstelle eine Funktion, die die Summe der Werte zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Random Number Array Min/Max/Avg ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;1&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. Erstelle jeweils eine Methode für das &#039;&#039;&#039;Minimum&#039;&#039;&#039;, das &#039;&#039;&#039;Maximum&#039;&#039;&#039; und den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039;. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.&lt;br /&gt;
&lt;br /&gt;
Erstelle zwei weitere Funktionen, die den &#039;&#039;&#039;Index&#039;&#039;&#039; des Minimums und des Maximums zurückgeben.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Zahlen ===&lt;br /&gt;
Erstelle ein {{JSL|int[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere der Größe nach aufsteigend (Ascending)&lt;br /&gt;
# Sortiere der Größe nach absteigend (Descending)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 15 verschiedene Sortieralgorithmen&#039;&#039;&#039; ===&lt;br /&gt;
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:&lt;br /&gt;
 https://www.youtube.com/watch?v=kPRA0W1kECg&lt;br /&gt;
&lt;br /&gt;
Den Pseudo-Code der Algorithmen findest du unter:&lt;br /&gt;
 https://panthema.net/2013/sound-of-sorting/SoS-CheatSheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: 2D-Array ===&lt;br /&gt;
Erstelle ein Zwei-Dimension-Array {{JSL|int[][]}} und befülle es mit Zufallszahlen von &#039;&#039;&#039;0&#039;&#039;&#039; bis &#039;&#039;&#039;100&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Nach Eingabe von Anwender gebe zurück die Summe pro Zeile oder pro Spalte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pascal Dreieck ===&lt;br /&gt;
Frage den Anwender nach der gewünschten Größe und erstelle ein Pascal-Dreieck mit der entsprechenden Dimension.&lt;br /&gt;
 Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach &#039;&#039;&#039;Links&#039;&#039;&#039; und nach &#039;&#039;&#039;Oben&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;:&lt;br /&gt;
{{BML|code=&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
 1       1       1       1       1       1       1       1       1       1 &lt;br /&gt;
 1       2       3       4       5       6       7       8       9      10 &lt;br /&gt;
 1       3       6      10      15      21      28      36      45      55 &lt;br /&gt;
 1       4      10      20      35      56      84     120     165     220 &lt;br /&gt;
 1       5      15      35      70     126     210     330     495     715 &lt;br /&gt;
 1       6      21      56     126     252     462     792    1287    2002 &lt;br /&gt;
 1       7      28      84     210     462     924    1716    3003    5005 &lt;br /&gt;
 1       8      36     120     330     792    1716    3432    6435   11440 &lt;br /&gt;
 1       9      45     165     495    1287    3003    6435   12870   24310 &lt;br /&gt;
 1      10      55     220     715    2002    5005   11440   24310   48620&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck) ===&lt;br /&gt;
Wenn wir die Zahlen Diagonal lesen, bekommen wir die Koeffizienten von {{JSL|(a+b)^n}}&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 2ab + b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (a+b)&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; = a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + 3a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;b + 3ab&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + b&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frage den Anwender, welche Formular er braucht, und gib die konkrete Formel in der Konsole aus.&lt;br /&gt;
Verwende {{JSL|^}} für die Darstellung des Exponenten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: TicTacToe ===&lt;br /&gt;
Programmiere das Spiel TicTacToe.&lt;br /&gt;
&lt;br /&gt;
Für das Spielfeld, verwende {{JSL|int[3][3]}} Array, in dem&lt;br /&gt;
* 0 = Leer&lt;br /&gt;
* 1 = Spieler 1&lt;br /&gt;
* 2 = Spieler 2&lt;br /&gt;
&lt;br /&gt;
Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: 4 in Rows&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Das Spiel wird auf einem senkrecht stehenden hohlen Spielbrett gespielt, in das die Spieler&lt;br /&gt;
abwechselnd ihre &#039;&#039;&#039;Spielsteine fallen lassen&#039;&#039;&#039;. Das Spielbrett besteht aus &#039;&#039;&#039;sieben Spalten (senkrecht) und sechs Reihen (waagerecht)&#039;&#039;&#039;. Jeder Spieler besitzt 21 gleichfarbige Spielsteine. Wenn ein Spieler einen&lt;br /&gt;
Spielstein in eine Spalte fallen lässt, besetzt dieser den untersten freien Platz der Spalte. Gewinner ist&lt;br /&gt;
der Spieler, der es als erster schafft, &#039;&#039;&#039;vier oder mehr seiner Spielsteine waagerecht, senkrecht oder diagonal in eine Linie&#039;&#039;&#039; zu bringen. &lt;br /&gt;
Das Spiel endet unentschieden, wenn das Spielbrett komplett gefüllt ist, ohne dass ein Spieler eine Viererlinie gebildet hat.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Conways Game of life ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens Conways Spiel des Lebens] implementiert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Animated glider emblem.gif|mini|ohne|Glider&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
# Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier].&lt;br /&gt;
# Als Ausgangsfeld verwende folgende 2D-Arrays:&lt;br /&gt;
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.GLEITER}}&lt;br /&gt;
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.SEGLER}}&lt;br /&gt;
## Ein zufällig generiertes Array&lt;br /&gt;
# Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code=&lt;br /&gt;
try {&lt;br /&gt;
    Thread.sleep(1000);&lt;br /&gt;
} catch(InterruptedException exc) {&lt;br /&gt;
    //noop &lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
# Rufe vor der Ausgabe {{JSL|lukas.week3.day4.ConwaysGameOfLife.clearScreen();}} auf&lt;br /&gt;
# Starte das Programm über {{BSL|git-bash}} {{BML|code=&lt;br /&gt;
cd [dein Pfad zum Projekt]/&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3617</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3617"/>
		<updated>2024-09-18T16:01:12Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Rehearsal.java RehearsalWeek01]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Rhomubs, X, Slash(True,False)&lt;br /&gt;
|content=&lt;br /&gt;
* Wiedholung Rehearsal (Funktionen, Schleifen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/FormatString.java StringFormat]&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Variablen.java Variablen]&lt;br /&gt;
|exercises=&lt;br /&gt;
* ChristmasTree, Circle&lt;br /&gt;
|content=&lt;br /&gt;
* Einführung in nächstes Kapitel&lt;br /&gt;
* Long&lt;br /&gt;
* Float&lt;br /&gt;
* Double&lt;br /&gt;
* System.out.Printf()&lt;br /&gt;
* Wiederholung von Variablen, Syntax&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week2/RehearsalWeek02Montag.java RehearsalWeek02Montag]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Christbaum&lt;br /&gt;
* Summe addieren&lt;br /&gt;
* Faktorial rechnen&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von letzter Woche&lt;br /&gt;
* String Format Beispiele&lt;br /&gt;
* Variablen und Funktionen mit rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung XMas-Tree&lt;br /&gt;
* Wiederholung String-Format&lt;br /&gt;
* Variable Scope (global, lokal)&lt;br /&gt;
* Anwendung von int/double Typen&lt;br /&gt;
* Unterschied zwischen int- und double-Division&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Rheien (Leibnitz, Nilakanta, Wurzeln 2,...)&lt;br /&gt;
* Aufgaben in Teilaufgaben aufteilen&lt;br /&gt;
* Wiederholung (Zeichnen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 03 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 23. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 24. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 25. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 26. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 27. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 04 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 30. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 01. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 02. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 03. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 04. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Console_Input&amp;diff=3616</id>
		<title>DCV 2024 09/Strukturierte Programmierung Uebungen/Console Input</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Strukturierte_Programmierung_Uebungen/Console_Input&amp;diff=3616"/>
		<updated>2024-09-18T07:40:10Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „Im folgenden werden verschiedene Aufgaben zum Lesen von Userinput gestellt. Erstelle wo nötig Methoden um die Komplexität gering zu halten.  === Aufgabe: String einlesen === Lies mit Hilfe des berühmten {{JSL|Scanners}} einen {{JSL|String}} des Benutzers ein und gib diesen aus.  === Aufgabe: Zahl einlesen === Lies mit Hilfe des berühmten {{JSL|Scanners}} einen {{JSL|int}} des Benutzers ein und gib diese aus. # Wird keine Zahl eingegeben kann das Progr…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden werden verschiedene Aufgaben zum Lesen von Userinput gestellt. Erstelle wo nötig Methoden um die Komplexität gering zu halten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: String einlesen ===&lt;br /&gt;
Lies mit Hilfe des berühmten {{JSL|Scanners}} einen {{JSL|String}} des Benutzers ein und gib diesen aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zahl einlesen ===&lt;br /&gt;
Lies mit Hilfe des berühmten {{JSL|Scanners}} einen {{JSL|int}} des Benutzers ein und gib diese aus.&lt;br /&gt;
# Wird keine Zahl eingegeben kann das Programm abstürzen&lt;br /&gt;
# Frag solange nach einer Zahl bis auch eine eingegeben wurde, das Programm darf bei Fehleingabe nicht abstürzen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Ratespiel ===&lt;br /&gt;
Es soll eine beliebige Zahl zwischen &#039;&#039;&#039;0 und 100&#039;&#039;&#039; mittels {{JSL|new Random().nextInt(...)}} gewählt werden. Nun soll die Zahl durch Eingabe über die Konsole erraten werden. Ist die Zahl zu hoch oder zu niedrig, so soll diese Information ausgegeben werden. Wurde die Zahl getroffen, so ist das Spiel gewonnen und das Programm wird beendet.&lt;br /&gt;
&lt;br /&gt;
 Wird keine Zahl eingegeben so darf das Programm nicht abstürzen und es soll erneut nach einer Zahl gefragt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen beim super coolen Zahlen Ratespiel!&lt;br /&gt;
Errate die Zahl zwischen 0 und 100!&lt;br /&gt;
Gib die Zahl nun ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;4&lt;br /&gt;
Die Zahl ist zu niedrig!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;90&lt;br /&gt;
Die Zahl ist zu hoch!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;30&lt;br /&gt;
Die Zahl ist zu hoch!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;15&lt;br /&gt;
Du hast gewonnen!!!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Erweitere die früheren Aufgaben um Benutzereingabe ===&lt;br /&gt;
Erweitere deine früheren Lösungen so, dass die Parameter über die Konsole eingegeben werden können.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Menü ===&lt;br /&gt;
Erstelle ein Menü dass über die Konsole gesteuert werden kann. Durch dieses Menü können die verschiedenen geometrischen Programme ausgewählt und ausgeführt werden. Hierbei kann auf die Methode der vorhergehenden Aufgabe zurückgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen bei meinen Aufgaben!&lt;br /&gt;
Was möchten Sie zeichnen?&lt;br /&gt;
1) Christbaum&lt;br /&gt;
2) Quader&lt;br /&gt;
3) Rhombus&lt;br /&gt;
Bitte wählen Sie nun?&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;2&lt;br /&gt;
Wie groß soll der Quader sein?&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;4&lt;br /&gt;
Welches Zeichen soll verwendet werden?&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;*&lt;br /&gt;
****&lt;br /&gt;
*  *&lt;br /&gt;
*  *&lt;br /&gt;
****&lt;br /&gt;
Möchten Sie noch etwas zeichnen? (j/n)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;n&lt;br /&gt;
Auf Wiedersehen!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Taschenrechner ===&lt;br /&gt;
Erstelle einen Taschenrechner. Lies mit Hilfe berühmten {{JSL|Scanners}} vom Benutzer zuerst einen {{JSL|float}} ein, dann den Operator (+,-,*,^,/), dann wieder einen {{JSL|float}} ein. Nach dem einlesen führe die gewünschte Rechenoperation aus. Bei Fehleingaben egal ob bei den Zahlen oder beim Operator, soll erneut nachgefragt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Taschenrechner (Code Review) ===&lt;br /&gt;
Mach ein Code Review mit einem von deinen Kollegen, identifiziere Verbesserungspotentiale (z.B. Code-Duplikate zu eliminieren)&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Taschenrechner extended ===&lt;br /&gt;
Erweitere den Taschenrechner aus der vorhergehenden Aufgabe so, dass nach der Berechnung nachgefragt wird, ob eine neue Berechnung stattfinden soll, falls nicht, soll das Programm beendet werden.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Taschenrechner weiterrechnen&#039;&#039;&#039; ===&lt;br /&gt;
Erweiter deinen Taschenrechner mit der Funktion, um das Zwischenergebnis weiterverwenden zu können&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
{{JSL|3}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|+}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|2}} (Ergebnis: 5)&lt;br /&gt;
&lt;br /&gt;
{{JSL|*}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|4}} (Ergebnis: 20)&lt;br /&gt;
&lt;br /&gt;
{{JSL|/}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|40}} (Ergebnis: 0.5)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Taschenrechner mit Memory Funktion&#039;&#039;&#039; ===&lt;br /&gt;
Erweiter deinen Taschenrechner mit der Memory Funktion.&lt;br /&gt;
&lt;br /&gt;
Neue Operationen sind: &lt;br /&gt;
&lt;br /&gt;
{{JSL|MC}} Memory Clear&lt;br /&gt;
&lt;br /&gt;
{{JSL|M+}} Memory Add&lt;br /&gt;
&lt;br /&gt;
{{JSL|M-}} Memory Sub&lt;br /&gt;
&lt;br /&gt;
{{JSL|MR}} Memory Read&lt;br /&gt;
&lt;br /&gt;
Die erwartete Funktion ist identisch mit dem normalen Taschenrechner&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Visitenkarte&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Applikation, die die Daten des Benutzers abfragt und diese schön (ASCII Graphisch) in der Konsole ausgibt. Das Ziel ist, das ganze wie eine echte Visitenkarte aussehen zu lassen. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anforderungen:&#039;&#039;&#039;&lt;br /&gt;
* Stern als Zeichen für Kartenrand&lt;br /&gt;
* Die Proportion der Karte entspricht dem Original (85mm x 55mm)&lt;br /&gt;
* Design (in der Mitte zentriert) Siehe: das Bild&lt;br /&gt;
&lt;br /&gt;
[[Datei:Visitenkarten-günstig-erstellen-und-drucken-lassen.webp|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Das Spiel beginnt&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Spiel, welche der Spieler fordert heraus eine Zahl zwischen 0 und 9999 zu erraten.&lt;br /&gt;
&lt;br /&gt;
Ablauf:&lt;br /&gt;
* Der Computer denkt sich eine Zahl aus.&lt;br /&gt;
{{JML|code=&lt;br /&gt;
Random rand = new Random();&lt;br /&gt;
int value = rand.nextInt(10000);&lt;br /&gt;
}}&lt;br /&gt;
* Der Benutzer muss durch Konsole eine Zahl eingeben&lt;br /&gt;
* Das Spiel antwortet&lt;br /&gt;
** So viele Ziffern sind korrekt und auf dem richtigen Platz&lt;br /&gt;
** So viele Ziffern sind vorhanden, aber stehen auf dem falschen Platz&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{BML|code=&lt;br /&gt;
( Der Computer hat die Zahl: 1234 )&lt;br /&gt;
Der Spieler wählt die 2354&lt;br /&gt;
Die Antwort lautet: 1 Ziffer ist korrekt, weitere 2 Ziffern sind vorhanden&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Das Spiel endet, wenn:&lt;br /&gt;
* der Spieler die richtige Zahl erraten hat&lt;br /&gt;
* der Spieler hat nach 20 Versuchen immer noch kein Erfolg&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3615</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3615"/>
		<updated>2024-09-17T13:30:15Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Rehearsal.java RehearsalWeek01]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Rhomubs, X, Slash(True,False)&lt;br /&gt;
|content=&lt;br /&gt;
* Wiedholung Rehearsal (Funktionen, Schleifen)&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/FormatString.java StringFormat]&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week1/Variablen.java Variablen]&lt;br /&gt;
|exercises=&lt;br /&gt;
* ChristmasTree, Circle&lt;br /&gt;
|content=&lt;br /&gt;
* Einführung in nächstes Kapitel&lt;br /&gt;
* Long&lt;br /&gt;
* Float&lt;br /&gt;
* Double&lt;br /&gt;
* System.out.Printf()&lt;br /&gt;
* Wiederholung von Variablen, Syntax&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* [https://github.com/gylhrvth/SoftwareDeveloper_2024.09.Feldkirch/blob/main/src/Sandro/Week2/RehearsalWeek02Montag.java RehearsalWeek02Montag]&lt;br /&gt;
|exercises=&lt;br /&gt;
* Christbaum&lt;br /&gt;
* Summe addieren&lt;br /&gt;
* Faktorial rechnen&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung von letzter Woche&lt;br /&gt;
* String Format Beispiele&lt;br /&gt;
* Variablen und Funktionen mit rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* Wiederholung XMas-Tree&lt;br /&gt;
* Wiederholung String-Format&lt;br /&gt;
* Variable Scope (global, lokal)&lt;br /&gt;
* Anwendung von int/double Typen&lt;br /&gt;
* Unterschied zwischen int- und double-Division&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 03 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 23. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 24. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 25. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 26. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 27. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Woche 04 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 30. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 01. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 02. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 03. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 04. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3594</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3594"/>
		<updated>2024-09-11T12:34:52Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Triange, Slash, Backslasch, Symetrical Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* boolean variables&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3593</id>
		<title>DCV 2024 09/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/Protokoll&amp;diff=3593"/>
		<updated>2024-09-10T09:55:34Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Woche 01 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 9. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* IntelliJ&lt;br /&gt;
* Git + GitHub&lt;br /&gt;
* main()&lt;br /&gt;
* for, while, if&lt;br /&gt;
* int Variablen&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 10. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* Squere, Rect, Triangle&lt;br /&gt;
|content=&lt;br /&gt;
* Funktionen ohne Parameter&lt;br /&gt;
* Funktionen mit Parameter&lt;br /&gt;
* Funktionen mit Rückgabewert&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 11. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 12. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 13. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Woche 02 ==&lt;br /&gt;
&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Montag 16. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Dienstag 17. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Mittwoch 18. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Donnerstag 19. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;br /&gt;
{{PROT&lt;br /&gt;
|date=Freitag 20. September 2024&lt;br /&gt;
|files=&lt;br /&gt;
* blank&lt;br /&gt;
|exercises=&lt;br /&gt;
* blank&lt;br /&gt;
|content=&lt;br /&gt;
* blank&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/DB_%C3%9Cbungen&amp;diff=3575</id>
		<title>DCV 2024 03/DB Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/DB_%C3%9Cbungen&amp;diff=3575"/>
		<updated>2024-05-08T09:44:42Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Create, Read, Update, Delete */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als &#039;&#039;&#039;D&#039;&#039;&#039;aten&#039;&#039;&#039;B&#039;&#039;&#039;ank&#039;&#039;&#039;M&#039;&#039;&#039;anagement &#039;&#039;&#039;S&#039;&#039;&#039;ystem wird &#039;&#039;&#039;MySQL&#039;&#039;&#039;[https://www.mysql.com/de/] verwendet&lt;br /&gt;
&lt;br /&gt;
= Überblick =&lt;br /&gt;
Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
===== SQL Queries =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
* Daten Abfragen&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{{SQLML|code=&lt;br /&gt;
USE mondial;&lt;br /&gt;
SELECT * from City limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, alle Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country;&lt;br /&gt;
&lt;br /&gt;
-- Konstant als Text&lt;br /&gt;
SELECT &#039;Hello World!&#039; Greeting;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital der erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT Name, Capital FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital mit eigenen Namen&lt;br /&gt;
SELECT Name Land, Capital Hauptstadt FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Name = &#039;Austria&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Population BETWEEN 1000000 AND 2000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name beginnend mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name am Ende mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;%A&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit NOT Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name NOT LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit OR Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; OR Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit AND Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; AND Population &amp;lt; 1000000;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tabellen verknüpfen mit &#039;&#039;&#039;WHERE&#039;&#039;&#039; und &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039;&lt;br /&gt;
* Unterschied zwischen &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;LEFT OUTER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;RIGHT OUTER JOIN&#039;&#039;&#039;&lt;br /&gt;
* Einfügen mittels &#039;&#039;&#039;INSERT&#039;&#039;&#039;&lt;br /&gt;
* Löschen mittels &#039;&#039;&#039;DELETE&#039;&#039;&#039;&lt;br /&gt;
* Aktualisieren mittels &#039;&#039;&#039;UPDATE&#039;&#039;&#039;&lt;br /&gt;
===== &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation Diagramme erstellen (&#039;&#039;&#039;Chen Notation&#039;&#039;&#039;) =====&lt;br /&gt;
===== Implementieren des &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramms in &#039;&#039;&#039;MySQL&#039;&#039;&#039; =====&lt;br /&gt;
===== Primär- und Fremdschlüssel =====&lt;br /&gt;
* Erstellen von Fremdschlüssel &#039;&#039;&#039;Constraints&#039;&#039;&#039;&lt;br /&gt;
===== Anbindung an die Datenbank mittels &#039;&#039;&#039;JDBC&#039;&#039;&#039; in &#039;&#039;&#039;Java&#039;&#039;&#039; =====&lt;br /&gt;
* Verbindung zur Datenbank herstellen&lt;br /&gt;
* Daten anlegen&lt;br /&gt;
* Daten abrufen&lt;br /&gt;
* Daten löschen&lt;br /&gt;
&lt;br /&gt;
= Übungen =&lt;br /&gt;
&lt;br /&gt;
Als Voraussetzung wird eine funktionierende &#039;&#039;&#039;MySQL&#039;&#039;&#039; installation mit &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; vorausgesetzt. &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; ist ein grafisches Tool um mit &#039;&#039;&#039;MySQL&#039;&#039;&#039; zu arbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Download für beide Tools findet sich [https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.37.0.msi hier].&lt;br /&gt;
* Add Product&lt;br /&gt;
* MySQL Server hinzufügen&lt;br /&gt;
* MySQL Workbench hinzufügen&lt;br /&gt;
&lt;br /&gt;
Für den Bereich &#039;&#039;&#039;S&#039;&#039;&#039;tructured &#039;&#039;&#039;Q&#039;&#039;&#039;uery &#039;&#039;&#039;L&#039;&#039;&#039;anguage wird weiters vorausgesetzt dass eine &#039;&#039;&#039;Datenbank&#039;&#039;&#039; mit folgenden Inhalten existiert:&lt;br /&gt;
 Ein großer Dank geht an die Uni Göttingen für die Bereitstellung der &#039;&#039;&#039;Mondial&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;göttingen&amp;quot;&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/&amp;lt;/ref&amp;gt; Datenbank&lt;br /&gt;
* [[Datei:Mondial-schema-mysql.zip]]&lt;br /&gt;
* [[Datei:Mondial-inputs-mysql.zip]]&lt;br /&gt;
&lt;br /&gt;
# Zuerst MySQL Workbench öffnen, mit dem DBMS verbinden.&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Schema auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
## Tritt ein Fehler auf &amp;gt;&amp;gt;,ORACLE&amp;lt;&amp;lt; aus der ersten Zeile entfernen&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Input auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
# Nun sollte die Datenbank Mondial existieren und es geht weiter mit den übungen zu SQL Abfragen&lt;br /&gt;
&lt;br /&gt;
== SQL Abfragen ==&lt;br /&gt;
Verschiedene Abfragen um Tabellen zu verbinden. Verwende für die Abfragen die &#039;&#039;&#039;Mondial&#039;&#039;&#039; Datenbank.&lt;br /&gt;
[[Datei:ER-Mondial.jpg|mini|none|600px|Mondial ER Diagramm&amp;lt;ref&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/mondial-abh.pdf&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Datei:Mondial Abhängingkeiten.jpg|mini|none|400px|Mondial Abhängigkeiten&amp;lt;ref name=&amp;quot;göttingen&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe SQL Queries ====&lt;br /&gt;
 Wie viele Einwohner hat Österreich?&lt;br /&gt;
&lt;br /&gt;
 Wie viele Einwohner hat der Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Österreich?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Europa (nur den Flussnamen)?&lt;br /&gt;
&lt;br /&gt;
 Wie viel Prozent der Menschen leben im Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen und deren Bundesländer mit Einwohnerzahl, sortiert nach Einwohnerzahl&lt;br /&gt;
&lt;br /&gt;
 Alle Flüsse die durch Europa fließen (nur Flüsse und deren Länge), sortiert nach Länge&lt;br /&gt;
&lt;br /&gt;
 Alle Inseln im Pazifik mit &amp;gt;50% islamischem Bekenntnis&lt;br /&gt;
&lt;br /&gt;
 Alle 3000er, welche in einem Land sind, welches zu mindestens 60% römisch Katholisch ist&lt;br /&gt;
&lt;br /&gt;
 Alle Länder mit mindestens einem See mit mindestens 100 Meter Tiefe und mindestens einem Berg mit mindestens 1500 Höhenmeter&lt;br /&gt;
&lt;br /&gt;
 Einwohnerzahl pro Religion&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen und die Meere dazu (keine Null Werte)&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen, und wenn sie haben, das Meer dazu&lt;br /&gt;
&lt;br /&gt;
 Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe &#039;&#039;&#039;African&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Welche Länder haben genau 3 Städte? Welche Länder sind dies?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die 3 größten Städte von Amerika (Kontinent)?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Österreich? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Europa? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg pro Kontinent? Wie hoch sind diese?&lt;br /&gt;
&lt;br /&gt;
 Welches Land hat am meisten anerkannte Religionen? Wie viel sind es?&lt;br /&gt;
&lt;br /&gt;
 Welche Organisationen haben deren Hauptsitz in Österreich? Wie viele Mitglieder haben diese Organisationen?&lt;br /&gt;
&lt;br /&gt;
 Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache?&lt;br /&gt;
&lt;br /&gt;
 Wieviele Länder sind Binnenländer und haben keinen Zugang zum Meer?&lt;br /&gt;
&lt;br /&gt;
 Welche Inseln haben keine Berge und gehören zu einer Provinz mit mindestens einem Fluß, der länger als 100km ist?&lt;br /&gt;
&lt;br /&gt;
 Welche Länder haben keinen See, dessen Fläche größer als 100 km² ist?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die 10 Organisationen mit den meisten Mitgliedsstaaten, die ihren Hauptsitz nicht in Europa haben?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die TOP 10 Städte mit den meisten Einwohnern in Afrika, die keinen Flughafen haben?&lt;br /&gt;
&lt;br /&gt;
 Welcher Fluß fließt durch die meisten Länder, mündet aber nicht im Meer?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Java und MySql miteinander verbinden ==&lt;br /&gt;
&lt;br /&gt;
=== Abfrage Städte im Land ... ===&lt;br /&gt;
&lt;br /&gt;
Erstelle ein Java Programm:&lt;br /&gt;
&lt;br /&gt;
# der von Benutzer ein Land Name fragt. (Es ist der letzte Schritt im Entwicklungsprozess)&lt;br /&gt;
# sich mit dem lokalen MySql Server verbindet &lt;br /&gt;
# mit dem Namen eine SQL Abfrage ausführt&lt;br /&gt;
# das Ergebnis in einer &amp;quot;schöne&amp;quot; tabellarische Form darstellt&lt;br /&gt;
&lt;br /&gt;
Achte darauf:&lt;br /&gt;
* Alle geöffnete Ressourcen wieder zuzumachen&lt;br /&gt;
* Keine Tür für SQL-Injection offenzulassen&lt;br /&gt;
&lt;br /&gt;
=== Object Oriented Programming und MySql ===&lt;br /&gt;
&lt;br /&gt;
Erstelle die folgenden Klassen (ähnlich wie damals beim Zoo)&lt;br /&gt;
&lt;br /&gt;
* Welt (Synonym für Zoo)&lt;br /&gt;
* Country (Synonym für Gehege)&lt;br /&gt;
* City (Synonym für Tier)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Software, welche die Daten aus der Datenbank holt, die jeweilige Objekte initialisiert und zusammenfügt...&lt;br /&gt;
Erstelle eine Funktion in der &amp;quot;Welt&amp;quot; Klasse, für die Struktur auszudrucken.&lt;br /&gt;
&lt;br /&gt;
== Create, Read, Update, Delete ==&lt;br /&gt;
Erstelle eine Objekt-Klasse für ein Land und erstelle für jede Aufgabe eine eigene &#039;&#039;&#039;Methode&#039;&#039;&#039; die...&lt;br /&gt;
* ein neues Land erstellt und in die Datenbank einfügt.&lt;br /&gt;
* ein bestimmtes Land in der Datenbank findet.&lt;br /&gt;
* ein bestimmtest Attribut eines Landes verändert.&lt;br /&gt;
* ein bestimmtes Land aus der Datenbank löscht.&lt;br /&gt;
&lt;br /&gt;
=== Bonus Aufgabe ===&lt;br /&gt;
*Erweitere dein Programm mit einer Console-Eingabe und teste deine Methoden.&lt;br /&gt;
&lt;br /&gt;
== ER Entwurf ==&lt;br /&gt;
Für den Entwurf von &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elationship Modellen gibt es mehrere Möglichkeiten. Soll von einem bestehenden Datenbestand (in unnormalisierter Form) ein Datenbankmodell abgeleitet werden, so können die [https://www.datenbanken-verstehen.de/datenmodellierung/normalisierung/ Normalformen] angewandt werden, auf diese werden wir hier jedoch nicht eingehen. Wird ein ER-Modell direkt anhand einer Problemstellung entworfen, so ist diese bei korrektem Entwurf, inhärent normalisiert.&lt;br /&gt;
&lt;br /&gt;
Für die ER-Modellierung gibt es verschiedene Notationen:&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Chen-Notation Chen Notation und modifizierte Chen Notation]&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Min-Max-Notation Min/Max Notation]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Für die folgenden ER-Modelle soll die Chen Notation angewendet werden, diese ist am einfachsten und am wenigsten fehleranfällig. Nach der ER-Modellierung kann direkt ein logischer Entwurf abgeleitet werden, welcher dann &amp;quot;direkt&amp;quot; in die Datenbank übertragen werden kann.&lt;br /&gt;
&lt;br /&gt;
 Als Zeichenprogramm zum Datenbank Entwurf eignet sich [http://dia-installer.de/ Dia]&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Im folgenden finden sich einige Beispiele zur Übung des ER-Entwurfs. Es ist dabei sehr wichtig aus der textuellen Problemstellung herauszufinden was Teil des ER-Entwurfs ist, und was zum logischen Teil der Anwendung gehört und somit nichts mit dem Entwurf zu tun hat. Weiters ist es sehr wichtig, etwaige Lücken in der Problemstellung zu erkennen und auszufüllen.&lt;br /&gt;
&lt;br /&gt;
Für jedes Beispiel gilt:&lt;br /&gt;
* ER-Entwurf erstellen (inklusive aller wichtigen Attribute)&lt;br /&gt;
* Logischer Entwurf (Entweder in textueller oder tabellarischer Form)&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma ====&lt;br /&gt;
Eine Firma hat mehrere Mitarbeiter, diese arbeiten in einer Abteilung. Ein Mitarbeiter hat einen Vorgesetzten, dieser ist selbst wieder ein Mitarbeiter. Weiters gibt es Projekte an denen mehrere Mitarbeiter beteiligt sind, Mitarbeiter selbst können auch an mehreren Projekten mitarbeiten.&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma2 ====&lt;br /&gt;
Ergänze den Entwurf aus dem vorhergehenden Beispiel so, dass Mitarbeiter in einem gewissen Zeitraum an einem Projekt arbeiten können.&lt;br /&gt;
&lt;br /&gt;
 [[Datei:Uebungsfirma all.zip|mini|]] Enthält ER-Entwurf, logischer Entwurf, SQL Statements&lt;br /&gt;
[[Datei:Uebungsfirma.png|mini|none|400px|ER-Diagramm Übungsfirma]]&lt;br /&gt;
&lt;br /&gt;
==== Zoo ====&lt;br /&gt;
Mehrere in ganz Deutschland verteilte Zoos sollen mittels einer Datenbank verwaltet werden. Die Tiere werden von Pflegern gepflegt und befinden sich in Gehegen. Außerdem bekommen die Tiere eine spezielle Futtermischung, welche von Lieferanten geliefert wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zoo all.zip|mini]]&lt;br /&gt;
[[Datei:Zoo.png|mini|none|400px|Zoo ER-Diagramm]]&lt;br /&gt;
&lt;br /&gt;
==== Druckerproduzent ====&lt;br /&gt;
Eine Firma, die Drucker herstellt, benötigt eine Datenbank zur Verwaltung ihrer Geschäftsprozesse. Die Firma hat mehrere Abteilungen, wie zum Beispiel Lager, Fertigung, Vertrieb. Zur Herstellung der Drucker werden Zukaufteile benötigt, die also nicht in der Fertigung selbst hergestellt werden. Der Fabrikleiter möchte auch einen Überblick über die Mitarbeiter mit allen relevanten Daten haben.&lt;br /&gt;
&lt;br /&gt;
==== Restaurant ====&lt;br /&gt;
Sie besitzen ein Restaurant, natürlich haben Sie Angestellte die entweder Koch, Kellner oder Lieferant sein können, überlegen Sie sich die nötigen Attribute selbst. Kunden können bei Ihnen im Restaurant bestellen und dort essen, Sie bieten aber auch das Angebot die Bestellung nach Hause zu liefern. Der Kellner ist für die Bearbeitung der Bestellung zuständig und teilt die Kunden zu den jeweiligen Tischen ein.&lt;br /&gt;
&lt;br /&gt;
==== Ferienhausverwaltung ====&lt;br /&gt;
Eine Ferienhausvermietung braucht ein Datenbanksystem für die Verwaltung der Buchungen. Zwischen zwei Buchungen muss immer eine Reinigungskraft das gesamte Haus reinigen und auf Schäden kontrollieren. Für diese Reinigung und Kontrolle braucht die Reinigungskraft zwischen 3-6 Stunden, je nach Größe / Kategorie bzw. Nächtigungspreis des Hauses. Die Ferienhäuser werden demnach in drei Klassen unterteilt.&lt;br /&gt;
* &amp;lt; 150 € / Nacht (Reinigung &amp;amp; Kontrolle: 3 Stunden)&lt;br /&gt;
* &amp;lt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 5 Stunden)&lt;br /&gt;
* &amp;gt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 6 Stunden)&lt;br /&gt;
Bei Schäden muss das Haus für die Zeit, bis der Schaden repariert wurde, gesperrt werden.&lt;br /&gt;
Die Ferienhäuser haben zwischen ein und vier Stockwerke (inkl. Keller), sowie unterschiedliche Ausstattungen (Bsp. Garten, WLAN, Balkon, ...).&lt;br /&gt;
Fügen Sie weitere Attribute (Bsp. Quadratmeter) hinzu, welche Sie für wichtig erachten.&lt;br /&gt;
&lt;br /&gt;
== Datenbank Anwendung ==&lt;br /&gt;
Im folgenden soll in mehreren Schritten eine Datenbank Anwendung modelliert und erstellt werden. Diese Anwendung soll ein einfaches Zahlungssystem mit Überweisung und Bankomat beeinhalten.&lt;br /&gt;
* Kunden sollen angelegt werden&lt;br /&gt;
* Es sollen Konten angelegt werden&lt;br /&gt;
* Konten sollen Geld überweisen/einzahlen und überweisen können&lt;br /&gt;
* Jede Transaktion soll gespeichert werden mit Betrag, Quelle, Ziel und Datum&lt;br /&gt;
* Der Kontostand soll aufgrund aller vorhergehenden Transaktion berechnet werden&lt;br /&gt;
* Der Kunde soll Geld einzahlen und abheben können&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation (ER) Diagramm erstellen ====&lt;br /&gt;
Entwirf ein korrektes &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm für die Datenbankanwendung, zumindest sollen die Tabellen &#039;&#039;&#039;Kunde&#039;&#039;&#039;, &#039;&#039;&#039;Konto&#039;&#039;&#039; und &#039;&#039;&#039;Transaktion&#039;&#039;&#039; enthalten sein. Achte auf die korrekte Beziehung zwischen den Tabellen.&lt;br /&gt;
* Ein Kunde kann mehrere Konten haben&lt;br /&gt;
* Ein Konto kann mehrere Kunden haben, diese haben dann eine unterschiedliche Rolle (Besitzer, Zeichnungsberechtigt, etc...)&lt;br /&gt;
* Eine Transaktion muss ein Quell- und ein Zielkonto haben&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Anlegen der Datenbank in MySQL ====&lt;br /&gt;
Implementiere das erstellte &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm in MySQL. Achte auf das Anlegen von korrekten &#039;&#039;&#039;Primär-&#039;&#039;&#039; und &#039;&#039;&#039;Fremdschlüsseln.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Verbinden der Datenbank (JDBC) in Java ====&lt;br /&gt;
Verbinde dich über die &#039;&#039;&#039;JDBC&#039;&#039;&#039; Schnittstelle in Java mit der angelegten Datenbank. Das Anlegen einer Testdatenbank kann sehr hilfreich sein um Tests zu schreiben.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Kunden/Konten und Transaktionen in Java anlegen und abrufen ====&lt;br /&gt;
Erstelle die Modelle für deine Tabellen in Java und ermögliche über Methoden das &#039;&#039;&#039;Erstellen&#039;&#039;&#039;, &#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;, &#039;&#039;&#039;Lesen&#039;&#039;&#039; und &#039;&#039;&#039;Löschen.&lt;br /&gt;
 &#039;&#039;&#039;C&#039;&#039;&#039;reate &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;U&#039;&#039;&#039;pdate &#039;&#039;&#039;D&#039;&#039;&#039;elete&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: (Kommandozeilenanwendung) für den Bankomat erstellen ====&lt;br /&gt;
Erstelle ein Userinterface für die Bankomat Anwendung.&lt;br /&gt;
* Der Benutzer soll authentifiziert werden&lt;br /&gt;
* Es soll eine entsprechende Auswahl an Konten angezeigt werden&lt;br /&gt;
* Einzahlen/Auszahlen soll möglich sein&lt;br /&gt;
* Überweisung an anderes Konto&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/OOP_Selbsttest&amp;diff=3562</id>
		<title>DCV 2024 03/OOP Selbsttest</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/OOP_Selbsttest&amp;diff=3562"/>
		<updated>2024-04-29T07:58:50Z</updated>

		<summary type="html">&lt;p&gt;Gyula: Die Seite wurde neu angelegt: „== Intro == 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:  {{JML|code= //Direction.java public enum Direction {   UP, DOWN, LEFT, RIGHT }  //Moveable.java public class Moveable {   public void move(Direction dir) {      //TODO   } }  //MoveMain.java ...…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Intro ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
//Direction.java&lt;br /&gt;
public enum Direction {&lt;br /&gt;
  UP, DOWN, LEFT, RIGHT&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Moveable.java&lt;br /&gt;
public class Moveable {&lt;br /&gt;
  public void move(Direction dir) {&lt;br /&gt;
     //TODO&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//MoveMain.java&lt;br /&gt;
...&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
  Moveable moveable = createMoveable();&lt;br /&gt;
  Direction d = getRandomDirection();&lt;br /&gt;
  moveable.move(d);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
# Öffne &#039;&#039;&#039;IntelliJ&#039;&#039;&#039;&lt;br /&gt;
# Schließe das bestehende Projekt&lt;br /&gt;
## File&lt;br /&gt;
## Close Project&lt;br /&gt;
# Nun solltest du den Welcome Screen von &#039;&#039;&#039;IntelliJ&#039;&#039;&#039; sehen&lt;br /&gt;
# Klicke auf &#039;&#039;&#039;Get from VCS&#039;&#039;&#039;&lt;br /&gt;
## Version control: &#039;&#039;&#039;Git&#039;&#039;&#039;&lt;br /&gt;
## URL: &#039;&#039;&#039;https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.oop.i.git&#039;&#039;&#039;&lt;br /&gt;
## Clone&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|4}}&lt;br /&gt;
&lt;br /&gt;
== Wiederholung ==&lt;br /&gt;
Wiederholung zur strukturierten Programmierung.&lt;br /&gt;
==== Aufgabe 1) ====&lt;br /&gt;
 Siehe Package: &#039;&#039;&#039;at/digitialcampus/codingcampus/repetition/excercise1&#039;&#039;&#039;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eingabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte geben Sie einen Text ein:&lt;br /&gt;
&amp;gt;&amp;gt; Heute wird ein guter Tag&lt;br /&gt;
Wie oft soll der Text ausgegeben werden:&lt;br /&gt;
&amp;gt;&amp;gt; 3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter Tag&lt;br /&gt;
Heute wird ein guter Tag&lt;br /&gt;
Heute wird ein guter Tag&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== OOP ==&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe 2) ====&lt;br /&gt;
 Siehe Package: &#039;&#039;&#039;at/digitialcampus/codingcampus/oop/excercise2&#039;&#039;&#039;&lt;br /&gt;
Erstelle folgend die &#039;&#039;&#039;Klasse&#039;&#039;&#039; &#039;&#039;&#039;Person&#039;&#039;&#039;. Diese &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll die &#039;&#039;&#039;Attribute&#039;&#039;&#039; &#039;&#039;&#039;Name&#039;&#039;&#039;, &#039;&#039;&#039;Age&#039;&#039;&#039; und &#039;&#039;&#039;Gender&#039;&#039;&#039; besitzen (Name, Alter, Geschlecht). Für das &#039;&#039;&#039;Geschlecht&#039;&#039;&#039; ist ein &#039;&#039;&#039;enum&#039;&#039;&#039; zu erstellen (&#039;&#039;female&#039;&#039;, &#039;&#039;male&#039;&#039;, &#039;&#039;divers&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039; für alle &#039;&#039;&#039;Attribute&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Überschreibe weiters {{JSL|toString()}} und erstelle einen {{JSL|String}} der alle relevanten Informationen enthält.&lt;br /&gt;
&lt;br /&gt;
 Erstelle mindestens 6 verschiedene Person in der {{JSL|main}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib diese aus.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe 3) ====&lt;br /&gt;
 Siehe Package: &#039;&#039;&#039;at/digitialcampus/codingcampus/oop/excercise3&#039;&#039;&#039;&lt;br /&gt;
Erstelle folgend die &#039;&#039;&#039;Klasse&#039;&#039;&#039; &#039;&#039;&#039;House&#039;&#039;&#039;. Ein Haus hat die &#039;&#039;&#039;Attribute&#039;&#039;&#039; &#039;&#039;&#039;Doors&#039;&#039;&#039;, &#039;&#039;&#039;Windows&#039;&#039;&#039;, &#039;&#039;&#039;Address&#039;&#039;&#039; (Türen, Fenster, Adresse) und eine {{JSL|List}} von &#039;&#039;&#039;Person&#039;&#039;&#039;. Verwende dafür die &#039;&#039;&#039;Person&#039;&#039;&#039; aus dem vorhergehenden Beispiel. Die &#039;&#039;&#039;Klasse&#039;&#039;&#039; &#039;&#039;&#039;House&#039;&#039;&#039; soll weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|addPerson(Person person)}} enthalten um Personen hinzuzufügen. Erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039; für alle &#039;&#039;&#039;Attribute&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ü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}}.&lt;br /&gt;
&lt;br /&gt;
 Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} &#039;&#039;&#039;Methode&#039;&#039;&#039;, füge einige Personen hinzu, und gib dann das Haus aus.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe 4) ====&lt;br /&gt;
 Siehe Package: &#039;&#039;&#039;at/digitialcampus/codingcampus/oop/excercise4&#039;&#039;&#039;&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; &#039;&#039;&#039;SortedHouse&#039;&#039;&#039; welche von {{JSL|House}} aus dem vorhergehenden Beispiel erbt. Überschreibe {{JSL|addPerson(Person person)}} und sortiere, nach dem &#039;&#039;&#039;Namen&#039;&#039;&#039;, entweder die {{JSL|List}} nach dem Einfügen der {{JSL|Person}} oder füge diese direkt an der richtigen Stelle ein.&lt;br /&gt;
 Erstelle mindestens 3 verschiedene Häuser in der {{JSL|main}} &#039;&#039;&#039;Methode&#039;&#039;&#039;, füge einige Personen hinzu, und gib dann das Haus aus.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03&amp;diff=3561</id>
		<title>DCV 2024 03</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03&amp;diff=3561"/>
		<updated>2024-04-29T07:58:30Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Objektorientierte Programmierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[DCV_2024_03/Allgemeines|Allgemeines]] ==&lt;br /&gt;
&lt;br /&gt;
== [[DCV_2024_03/Protokoll|Protokoll]] ==&lt;br /&gt;
&lt;br /&gt;
== Strukturierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_03/Strukturierte_Programmierung_Uebungen|Übungen zur strukturierten Programmierung]]&lt;br /&gt;
* [[DCV_2024_03/Uebungen_Osterferien|Uebungen Osterferien]]&lt;br /&gt;
&lt;br /&gt;
== Objektorientierte Programmierung ==&lt;br /&gt;
* [[DCV_2024_03/Objekt_Orientierte_Programmierung_Übungen|Übungen objektorientierte]]&lt;br /&gt;
* [[DCV_2024_03/OOP_Selbsttest|OOP Selbsttest für den 1. Mai]]&lt;br /&gt;
&lt;br /&gt;
== GIT ==&lt;br /&gt;
* [[DCV_2022_03/Git|Git]]&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3560</id>
		<title>DCV 2024 03/Objekt Orientierte Programmierung Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3560"/>
		<updated>2024-04-29T07:54:11Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Simulationen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Objekt orientierte Min-Max-Avg ===&lt;br /&gt;
Wir haben die Erfahrung mit Min, Max und Avarage Rechnungen über Arrays.&lt;br /&gt;
Es soll eine gleichwertige OOP (Object Oriented Programming) Lösung erstellt werden.&lt;br /&gt;
* Erstelle eine Klasse mit einem sinnvollen Namen&lt;br /&gt;
* Füge eine Objekt-Variable für Speichern eines {{JSL|int[]}}&lt;br /&gt;
* Erstelle ein Konstruktor, der diese Variable initialisiert&lt;br /&gt;
* Erstelle 3 (non-static) Funktionen {{JSL|calcMin()}},  {{JSL|calcMax()}}, {{JSL|calcAvg()}}, die über die gespeicherte Member-Variable (Objekt-Variable) arbeiten.&lt;br /&gt;
* Teste diese &#039;&#039;&#039;Methoden&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rückgabewert min-max-avg in einem Object ===&lt;br /&gt;
Es soll eine {{JSL|calcMinMaxAvg(int[])}} Methode erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; des {{JSL|int[]}} Parameters ermittelt und ein Objekt mit Min, Max und Avarage zurückgibt.  Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig ist für&lt;br /&gt;
* die Initialisierung des Zoos und aller seiner Bestandteile&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; der als Beschreibung des Geheges dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere deinen Zoo, sodass Gehege dynamisch hinzugefügt und entfernt werden können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um eine Funktion, die die Struktur des Zoos ausgibt. Der erwartete Ausdruck sieht folgendermaßen aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storch&lt;br /&gt;
│       ├── Hugo, Storch&lt;br /&gt;
│       ├── Idaxis, Storch&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm um Tierpfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Namen&#039;&#039; und mit einer dynamischen Liste von &#039;&#039;Gehegen&#039;&#039;, wofür der Pfleger zuständig ist. Erweitere die Klasse &#039;&#039;Zoo&#039;&#039;, dass die eine Liste der &#039;&#039;Pfleger&#039;&#039; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck um die neu eingeführten Pfleger.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jedem Tag gehen die Pfleger los und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt er das Gehege und nimmt das nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird er zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Übungen Zur Modellierung ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Übungen haben das Ziel, schnell ein Model zu erfassen, das die folgenden Aspekte beinhaltet:&lt;br /&gt;
# Klassen&lt;br /&gt;
# Kompositionen&lt;br /&gt;
# Vererbungen&lt;br /&gt;
# Methoden / Funktionen&lt;br /&gt;
# Variablen / Attribute&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-class-diagram-cheat-sheet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Erklärung dazu findet sich beim Klick auf diesen Verweis: [https://ccwiki.digitalcampusvorarlberg.at/index.php/UML_Klassendiagramm].&lt;br /&gt;
&lt;br /&gt;
=== Schwarzwald Klinik ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Krankenhaus&#039;&#039;&#039; mit unterschiedlichen &#039;&#039;&#039;Abteilungen&#039;&#039;&#039;. Manche Abteilungen sind &#039;&#039;&#039;Ambulanz&#039;&#039;&#039;en anderen sind &#039;&#039;&#039;Station&#039;&#039;&#039;en. Ambulanzen haben eine Öffnungszeit sowie einen Warteraum mit einer definierten Anzahl von Plätzen. Stationen beinhalten &#039;&#039;&#039;Zimmer&#039;&#039;&#039; in denen sich &#039;&#039;&#039;Betten&#039;&#039;&#039; befinden.&lt;br /&gt;
Wenn ein Patient ins Krankenhaus kommt, besucht dieser entsprechend seiner Erkrankung eine Ambulanz. Falls der Fall schwerwiegender ist, muss er in einer Station aufgenommen werden. Patienten werden untersucht, behandelt und eventuell gepflegt. Aus der Ambulanzen dürfen die Patienten nach kurzer Zeit wieder nach Hause gehen. Patienten die in Stationen behandelt werden, müssen solange da bleiben, bis sie vollständig geheilt sind.&lt;br /&gt;
&lt;br /&gt;
=== Restaurant &#039;&#039;Dolce Vita&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Restaurant&#039;&#039;&#039;, das aus mehreren Räumen besteht. Jeder &#039;&#039;&#039;Raum&#039;&#039;&#039; hat einen zuständigen &#039;&#039;&#039;Kellner&#039;&#039;&#039;. In jedem &#039;&#039;&#039;Raum&#039;&#039;&#039; befinden sich unterschiedliche Tische. Manche sind groß, andere sind winzig klein. Wenn eine &#039;&#039;&#039;Gruppe&#039;&#039;&#039; eintrifft, werden sie vom &#039;&#039;&#039;Hauptkellner&#039;&#039;&#039; begrüßt. Der Hauptkellner führt sie zu einem Tisch und übergibt die Gruppe an den im jeweiligen Raum zuständigen Kellner. Die Gruppe der Gäste bekommt eine &#039;&#039;&#039;Speisekarte&#039;&#039;&#039; mit den Speisen und Getränken. Der Kellner nimmt die Bestellungen auf und serviert diese anschließend. Nach dem Essen fragt die Gruppe nach der &#039;&#039;&#039;Rechnung&#039;&#039;&#039; und bezahlt diese.&lt;br /&gt;
&lt;br /&gt;
Am Ende des Tages macht der Hauptkellner eine Gesamtabrechnung und eine Analyse:&lt;br /&gt;
* Welcher Kellner hat die meisten Gäste bedient?&lt;br /&gt;
* Welcher Kellner hat den Höchsten Umsatz generiert?&lt;br /&gt;
* Welcher Kellner hat den größten Gewinnn erwirtschaftet? (Dazu braucht man die Selbstkosten pro Speise/Getränk)&lt;br /&gt;
* Was war die beliebteste Speise?&lt;br /&gt;
* Was war das beliebteste Getränk?&lt;br /&gt;
&lt;br /&gt;
=== Museum: Neue Pinakothek ===&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Museum&#039;&#039;&#039; besteht aus Gängen und Ausstellungsräume. Jeder &#039;&#039;&#039;Gang&#039;&#039;&#039; und &#039;&#039;&#039;Ausstellungsraum&#039;&#039;&#039; kennt über die benachbarten Räume. In jedem Ausstellungsraum sind &#039;&#039;&#039;Kunststücke&#039;&#039;&#039; ausgestellt. Ein Kunststück kann ein Zeichen, Gemälde, Statue, oder ein Kunstobjekt sein.&lt;br /&gt;
Es gibt einen besonderen Gang im Museum, der als Eingang für Gäste dient. Ab dem Zeitpunkt der Öffnung dürfen Gäste ins Museum kommen. Ein Gast in einem Gang wählt einen zufälligen Raum, den er betritt. Falls sich ein Gast in einem Ausstellungsraum befindet, kann er ein zufälliges Kunststück beobachten oder in den nächsten Raum gehen. Falls ein Gast nach einer Zeit müde wird, geht er nach Hause. Zwischen den Gästen sind einige mit bösen Absichten. Ein &#039;&#039;&#039;Dieb&#039;&#039;&#039; stiehlt den beobachteten Gegenstand, falls er sich allein in einem Raum befindet. Um die Diebstähle zu verhindern sind einige &#039;&#039;&#039;Wächter&#039;&#039;&#039; im Museum unterwegs. Die Wächter beobachten keine Kunstobjekte, sondern sie versuchen sich in Räumen zu befinden in denen auch anderen Gäste präsent sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
 Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgiebig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Interface ===&lt;br /&gt;
Gleiche Aufgabe wie zuvor, verwende jedoch ein &#039;&#039;&#039;Interface&#039;&#039;&#039; anstatt eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; für die Geometry.&lt;br /&gt;
 Welche möglichen Vorteile ergeben sich dadurch?&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry Interface.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Enhanced Version ===&lt;br /&gt;
  Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm (kann wiederverwendet werden)&lt;br /&gt;
&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Geometrische Form Stern und Haus vom Nikolaus. Verwende soviel Code wie möglich wieder.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Hausvomnikolaus.png|mini|none|Haus vom Nikolaus|150px]] || [[Datei:Kompass Stern.png|mini|Kompass Stern|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte, ansonsten die gesamte Strecke. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren, verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;br /&gt;
&lt;br /&gt;
=== Schule: Volksschule Rotkreuz (Lustenau) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt eine &#039;&#039;&#039;Schule&#039;&#039;&#039;. In der Schule sind verschiedene Räume, so wie &#039;&#039;&#039;KlassenRaum&#039;&#039;&#039;, &#039;&#039;&#039;SportHalle&#039;&#039;&#039;, &#039;&#039;&#039;Handwerk &amp;amp; Technik Raum&#039;&#039;&#039;. Die Schule hat ein &#039;&#039;&#039;Schuldirektor&#039;&#039;&#039; und viele &#039;&#039;&#039;Lehrer&#039;&#039;&#039;.  Die &#039;&#039;&#039;Schüler&#039;&#039;&#039;, die die Schule besuchen, gehören zu einer &#039;&#039;&#039;SchuleKlasse&#039;&#039;&#039;. Jede SchuleKlasse hat einen fixen Tagesablauf, die im &#039;&#039;&#039;Kursplan&#039;&#039;&#039; festgelegt ist. Der Kursplan beinhaltet, das Thema, den Lehrer und den Raum, wo es stattfindet.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.1 ====&lt;br /&gt;
&lt;br /&gt;
Morgen kommen alle Lehrer und alle Schüler in die Schule. Die Schüler, die zu spät erscheinen, müssen zu dem Direktor.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.2 ====&lt;br /&gt;
&lt;br /&gt;
Die Schüler haben einen fixen Tagesablauf. 45 Minuten Stunden, 15 Minuten Pause, 45 Minuten Stunde, ....&lt;br /&gt;
Am Beginn jeder Unterrichtsstunde gehen die Schüler in den entsprechenden Kursraum, wie es im Stundenplan vorgesehen ist.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.3 ====&lt;br /&gt;
&lt;br /&gt;
Die Lehrer gehen in den Kursraum, wo sie gebraucht sind. Nach der Stunde kommen sie in dem Lehrerzimmer zurück. Falls sie keine Kursstunde haben, bleiben sie im Lehrerzimmer und korrigieren Hausaufgaben und Tests.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3559</id>
		<title>DCV 2024 03/Objekt Orientierte Programmierung Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3559"/>
		<updated>2024-04-29T07:53:26Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Objekt orientierte Min-Max-Avg ===&lt;br /&gt;
Wir haben die Erfahrung mit Min, Max und Avarage Rechnungen über Arrays.&lt;br /&gt;
Es soll eine gleichwertige OOP (Object Oriented Programming) Lösung erstellt werden.&lt;br /&gt;
* Erstelle eine Klasse mit einem sinnvollen Namen&lt;br /&gt;
* Füge eine Objekt-Variable für Speichern eines {{JSL|int[]}}&lt;br /&gt;
* Erstelle ein Konstruktor, der diese Variable initialisiert&lt;br /&gt;
* Erstelle 3 (non-static) Funktionen {{JSL|calcMin()}},  {{JSL|calcMax()}}, {{JSL|calcAvg()}}, die über die gespeicherte Member-Variable (Objekt-Variable) arbeiten.&lt;br /&gt;
* Teste diese &#039;&#039;&#039;Methoden&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rückgabewert min-max-avg in einem Object ===&lt;br /&gt;
Es soll eine {{JSL|calcMinMaxAvg(int[])}} Methode erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; des {{JSL|int[]}} Parameters ermittelt und ein Objekt mit Min, Max und Avarage zurückgibt.  Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig ist für&lt;br /&gt;
* die Initialisierung des Zoos und aller seiner Bestandteile&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; der als Beschreibung des Geheges dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere deinen Zoo, sodass Gehege dynamisch hinzugefügt und entfernt werden können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um eine Funktion, die die Struktur des Zoos ausgibt. Der erwartete Ausdruck sieht folgendermaßen aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storch&lt;br /&gt;
│       ├── Hugo, Storch&lt;br /&gt;
│       ├── Idaxis, Storch&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm um Tierpfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Namen&#039;&#039; und mit einer dynamischen Liste von &#039;&#039;Gehegen&#039;&#039;, wofür der Pfleger zuständig ist. Erweitere die Klasse &#039;&#039;Zoo&#039;&#039;, dass die eine Liste der &#039;&#039;Pfleger&#039;&#039; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck um die neu eingeführten Pfleger.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jedem Tag gehen die Pfleger los und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt er das Gehege und nimmt das nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird er zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Übungen Zur Modellierung ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Übungen haben das Ziel, schnell ein Model zu erfassen, das die folgenden Aspekte beinhaltet:&lt;br /&gt;
# Klassen&lt;br /&gt;
# Kompositionen&lt;br /&gt;
# Vererbungen&lt;br /&gt;
# Methoden / Funktionen&lt;br /&gt;
# Variablen / Attribute&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-class-diagram-cheat-sheet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Erklärung dazu findet sich beim Klick auf diesen Verweis: [https://ccwiki.digitalcampusvorarlberg.at/index.php/UML_Klassendiagramm].&lt;br /&gt;
&lt;br /&gt;
=== Schwarzwald Klinik ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Krankenhaus&#039;&#039;&#039; mit unterschiedlichen &#039;&#039;&#039;Abteilungen&#039;&#039;&#039;. Manche Abteilungen sind &#039;&#039;&#039;Ambulanz&#039;&#039;&#039;en anderen sind &#039;&#039;&#039;Station&#039;&#039;&#039;en. Ambulanzen haben eine Öffnungszeit sowie einen Warteraum mit einer definierten Anzahl von Plätzen. Stationen beinhalten &#039;&#039;&#039;Zimmer&#039;&#039;&#039; in denen sich &#039;&#039;&#039;Betten&#039;&#039;&#039; befinden.&lt;br /&gt;
Wenn ein Patient ins Krankenhaus kommt, besucht dieser entsprechend seiner Erkrankung eine Ambulanz. Falls der Fall schwerwiegender ist, muss er in einer Station aufgenommen werden. Patienten werden untersucht, behandelt und eventuell gepflegt. Aus der Ambulanzen dürfen die Patienten nach kurzer Zeit wieder nach Hause gehen. Patienten die in Stationen behandelt werden, müssen solange da bleiben, bis sie vollständig geheilt sind.&lt;br /&gt;
&lt;br /&gt;
=== Restaurant &#039;&#039;Dolce Vita&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Restaurant&#039;&#039;&#039;, das aus mehreren Räumen besteht. Jeder &#039;&#039;&#039;Raum&#039;&#039;&#039; hat einen zuständigen &#039;&#039;&#039;Kellner&#039;&#039;&#039;. In jedem &#039;&#039;&#039;Raum&#039;&#039;&#039; befinden sich unterschiedliche Tische. Manche sind groß, andere sind winzig klein. Wenn eine &#039;&#039;&#039;Gruppe&#039;&#039;&#039; eintrifft, werden sie vom &#039;&#039;&#039;Hauptkellner&#039;&#039;&#039; begrüßt. Der Hauptkellner führt sie zu einem Tisch und übergibt die Gruppe an den im jeweiligen Raum zuständigen Kellner. Die Gruppe der Gäste bekommt eine &#039;&#039;&#039;Speisekarte&#039;&#039;&#039; mit den Speisen und Getränken. Der Kellner nimmt die Bestellungen auf und serviert diese anschließend. Nach dem Essen fragt die Gruppe nach der &#039;&#039;&#039;Rechnung&#039;&#039;&#039; und bezahlt diese.&lt;br /&gt;
&lt;br /&gt;
Am Ende des Tages macht der Hauptkellner eine Gesamtabrechnung und eine Analyse:&lt;br /&gt;
* Welcher Kellner hat die meisten Gäste bedient?&lt;br /&gt;
* Welcher Kellner hat den Höchsten Umsatz generiert?&lt;br /&gt;
* Welcher Kellner hat den größten Gewinnn erwirtschaftet? (Dazu braucht man die Selbstkosten pro Speise/Getränk)&lt;br /&gt;
* Was war die beliebteste Speise?&lt;br /&gt;
* Was war das beliebteste Getränk?&lt;br /&gt;
&lt;br /&gt;
=== Museum: Neue Pinakothek ===&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Museum&#039;&#039;&#039; besteht aus Gängen und Ausstellungsräume. Jeder &#039;&#039;&#039;Gang&#039;&#039;&#039; und &#039;&#039;&#039;Ausstellungsraum&#039;&#039;&#039; kennt über die benachbarten Räume. In jedem Ausstellungsraum sind &#039;&#039;&#039;Kunststücke&#039;&#039;&#039; ausgestellt. Ein Kunststück kann ein Zeichen, Gemälde, Statue, oder ein Kunstobjekt sein.&lt;br /&gt;
Es gibt einen besonderen Gang im Museum, der als Eingang für Gäste dient. Ab dem Zeitpunkt der Öffnung dürfen Gäste ins Museum kommen. Ein Gast in einem Gang wählt einen zufälligen Raum, den er betritt. Falls sich ein Gast in einem Ausstellungsraum befindet, kann er ein zufälliges Kunststück beobachten oder in den nächsten Raum gehen. Falls ein Gast nach einer Zeit müde wird, geht er nach Hause. Zwischen den Gästen sind einige mit bösen Absichten. Ein &#039;&#039;&#039;Dieb&#039;&#039;&#039; stiehlt den beobachteten Gegenstand, falls er sich allein in einem Raum befindet. Um die Diebstähle zu verhindern sind einige &#039;&#039;&#039;Wächter&#039;&#039;&#039; im Museum unterwegs. Die Wächter beobachten keine Kunstobjekte, sondern sie versuchen sich in Räumen zu befinden in denen auch anderen Gäste präsent sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
 Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgiebig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Interface ===&lt;br /&gt;
Gleiche Aufgabe wie zuvor, verwende jedoch ein &#039;&#039;&#039;Interface&#039;&#039;&#039; anstatt eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; für die Geometry.&lt;br /&gt;
 Welche möglichen Vorteile ergeben sich dadurch?&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry Interface.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Enhanced Version ===&lt;br /&gt;
  Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm (kann wiederverwendet werden)&lt;br /&gt;
&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Geometrische Form Stern und Haus vom Nikolaus. Verwende soviel Code wie möglich wieder.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Hausvomnikolaus.png|mini|none|Haus vom Nikolaus|150px]] || [[Datei:Kompass Stern.png|mini|Kompass Stern|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
=== Schule: Volksschule Rotkreuz (Lustenau) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt eine &#039;&#039;&#039;Schule&#039;&#039;&#039;. In der Schule sind verschiedene Räume, so wie &#039;&#039;&#039;KlassenRaum&#039;&#039;&#039;, &#039;&#039;&#039;SportHalle&#039;&#039;&#039;, &#039;&#039;&#039;Handwerk &amp;amp; Technik Raum&#039;&#039;&#039;. Die Schule hat ein &#039;&#039;&#039;Schuldirektor&#039;&#039;&#039; und viele &#039;&#039;&#039;Lehrer&#039;&#039;&#039;.  Die &#039;&#039;&#039;Schüler&#039;&#039;&#039;, die die Schule besuchen, gehören zu einer &#039;&#039;&#039;SchuleKlasse&#039;&#039;&#039;. Jede SchuleKlasse hat einen fixen Tagesablauf, die im &#039;&#039;&#039;Kursplan&#039;&#039;&#039; festgelegt ist. Der Kursplan beinhaltet, das Thema, den Lehrer und den Raum, wo es stattfindet.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.1 ====&lt;br /&gt;
&lt;br /&gt;
Morgen kommen alle Lehrer und alle Schüler in die Schule. Die Schüler, die zu spät erscheinen, müssen zu dem Direktor.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.2 ====&lt;br /&gt;
&lt;br /&gt;
Die Schüler haben einen fixen Tagesablauf. 45 Minuten Stunden, 15 Minuten Pause, 45 Minuten Stunde, ....&lt;br /&gt;
Am Beginn jeder Unterrichtsstunde gehen die Schüler in den entsprechenden Kursraum, wie es im Stundenplan vorgesehen ist.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.3 ====&lt;br /&gt;
&lt;br /&gt;
Die Lehrer gehen in den Kursraum, wo sie gebraucht sind. Nach der Stunde kommen sie in dem Lehrerzimmer zurück. Falls sie keine Kursstunde haben, bleiben sie im Lehrerzimmer und korrigieren Hausaufgaben und Tests.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte, ansonsten die gesamte Strecke. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren, verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3558</id>
		<title>DCV 2024 03/Objekt Orientierte Programmierung Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3558"/>
		<updated>2024-04-29T07:51:27Z</updated>

		<summary type="html">&lt;p&gt;Gyula: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Objekt orientierte Min-Max-Avg ===&lt;br /&gt;
Wir haben die Erfahrung mit Min, Max und Avarage Rechnungen über Arrays.&lt;br /&gt;
Es soll eine gleichwertige OOP (Object Oriented Programming) Lösung erstellt werden.&lt;br /&gt;
* Erstelle eine Klasse mit einem sinnvollen Namen&lt;br /&gt;
* Füge eine Objekt-Variable für Speichern eines {{JSL|int[]}}&lt;br /&gt;
* Erstelle ein Konstruktor, der diese Variable initialisiert&lt;br /&gt;
* Erstelle 3 (non-static) Funktionen {{JSL|calcMin()}},  {{JSL|calcMax()}}, {{JSL|calcAvg()}}, die über die gespeicherte Member-Variable (Objekt-Variable) arbeiten.&lt;br /&gt;
* Teste diese &#039;&#039;&#039;Methoden&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rückgabewert min-max-avg in einem Object ===&lt;br /&gt;
Es soll eine {{JSL|calcMinMaxAvg(int[])}} Methode erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; des {{JSL|int[]}} Parameters ermittelt und ein Objekt mit Min, Max und Avarage zurückgibt.  Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig ist für&lt;br /&gt;
* die Initialisierung des Zoos und aller seiner Bestandteile&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; der als Beschreibung des Geheges dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere deinen Zoo, sodass Gehege dynamisch hinzugefügt und entfernt werden können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um eine Funktion, die die Struktur des Zoos ausgibt. Der erwartete Ausdruck sieht folgendermaßen aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storch&lt;br /&gt;
│       ├── Hugo, Storch&lt;br /&gt;
│       ├── Idaxis, Storch&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm um Tierpfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Namen&#039;&#039; und mit einer dynamischen Liste von &#039;&#039;Gehegen&#039;&#039;, wofür der Pfleger zuständig ist. Erweitere die Klasse &#039;&#039;Zoo&#039;&#039;, dass die eine Liste der &#039;&#039;Pfleger&#039;&#039; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck um die neu eingeführten Pfleger.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jedem Tag gehen die Pfleger los und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt er das Gehege und nimmt das nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird er zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Übungen Zur Modellierung ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Übungen haben das Ziel, schnell ein Model zu erfassen, das die folgenden Aspekte beinhaltet:&lt;br /&gt;
# Klassen&lt;br /&gt;
# Kompositionen&lt;br /&gt;
# Vererbungen&lt;br /&gt;
# Methoden / Funktionen&lt;br /&gt;
# Variablen / Attribute&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-class-diagram-cheat-sheet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Erklärung dazu findet sich beim Klick auf diesen Verweis: [https://ccwiki.digitalcampusvorarlberg.at/index.php/UML_Klassendiagramm].&lt;br /&gt;
&lt;br /&gt;
=== Schwarzwald Klinik ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Krankenhaus&#039;&#039;&#039; mit unterschiedlichen &#039;&#039;&#039;Abteilungen&#039;&#039;&#039;. Manche Abteilungen sind &#039;&#039;&#039;Ambulanz&#039;&#039;&#039;en anderen sind &#039;&#039;&#039;Station&#039;&#039;&#039;en. Ambulanzen haben eine Öffnungszeit sowie einen Warteraum mit einer definierten Anzahl von Plätzen. Stationen beinhalten &#039;&#039;&#039;Zimmer&#039;&#039;&#039; in denen sich &#039;&#039;&#039;Betten&#039;&#039;&#039; befinden.&lt;br /&gt;
Wenn ein Patient ins Krankenhaus kommt, besucht dieser entsprechend seiner Erkrankung eine Ambulanz. Falls der Fall schwerwiegender ist, muss er in einer Station aufgenommen werden. Patienten werden untersucht, behandelt und eventuell gepflegt. Aus der Ambulanzen dürfen die Patienten nach kurzer Zeit wieder nach Hause gehen. Patienten die in Stationen behandelt werden, müssen solange da bleiben, bis sie vollständig geheilt sind.&lt;br /&gt;
&lt;br /&gt;
=== Restaurant &#039;&#039;Dolce Vita&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Restaurant&#039;&#039;&#039;, das aus mehreren Räumen besteht. Jeder &#039;&#039;&#039;Raum&#039;&#039;&#039; hat einen zuständigen &#039;&#039;&#039;Kellner&#039;&#039;&#039;. In jedem &#039;&#039;&#039;Raum&#039;&#039;&#039; befinden sich unterschiedliche Tische. Manche sind groß, andere sind winzig klein. Wenn eine &#039;&#039;&#039;Gruppe&#039;&#039;&#039; eintrifft, werden sie vom &#039;&#039;&#039;Hauptkellner&#039;&#039;&#039; begrüßt. Der Hauptkellner führt sie zu einem Tisch und übergibt die Gruppe an den im jeweiligen Raum zuständigen Kellner. Die Gruppe der Gäste bekommt eine &#039;&#039;&#039;Speisekarte&#039;&#039;&#039; mit den Speisen und Getränken. Der Kellner nimmt die Bestellungen auf und serviert diese anschließend. Nach dem Essen fragt die Gruppe nach der &#039;&#039;&#039;Rechnung&#039;&#039;&#039; und bezahlt diese.&lt;br /&gt;
&lt;br /&gt;
Am Ende des Tages macht der Hauptkellner eine Gesamtabrechnung und eine Analyse:&lt;br /&gt;
* Welcher Kellner hat die meisten Gäste bedient?&lt;br /&gt;
* Welcher Kellner hat den Höchsten Umsatz generiert?&lt;br /&gt;
* Welcher Kellner hat den größten Gewinnn erwirtschaftet? (Dazu braucht man die Selbstkosten pro Speise/Getränk)&lt;br /&gt;
* Was war die beliebteste Speise?&lt;br /&gt;
* Was war das beliebteste Getränk?&lt;br /&gt;
&lt;br /&gt;
=== Museum: Neue Pinakothek ===&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Museum&#039;&#039;&#039; besteht aus Gängen und Ausstellungsräume. Jeder &#039;&#039;&#039;Gang&#039;&#039;&#039; und &#039;&#039;&#039;Ausstellungsraum&#039;&#039;&#039; kennt über die benachbarten Räume. In jedem Ausstellungsraum sind &#039;&#039;&#039;Kunststücke&#039;&#039;&#039; ausgestellt. Ein Kunststück kann ein Zeichen, Gemälde, Statue, oder ein Kunstobjekt sein.&lt;br /&gt;
Es gibt einen besonderen Gang im Museum, der als Eingang für Gäste dient. Ab dem Zeitpunkt der Öffnung dürfen Gäste ins Museum kommen. Ein Gast in einem Gang wählt einen zufälligen Raum, den er betritt. Falls sich ein Gast in einem Ausstellungsraum befindet, kann er ein zufälliges Kunststück beobachten oder in den nächsten Raum gehen. Falls ein Gast nach einer Zeit müde wird, geht er nach Hause. Zwischen den Gästen sind einige mit bösen Absichten. Ein &#039;&#039;&#039;Dieb&#039;&#039;&#039; stiehlt den beobachteten Gegenstand, falls er sich allein in einem Raum befindet. Um die Diebstähle zu verhindern sind einige &#039;&#039;&#039;Wächter&#039;&#039;&#039; im Museum unterwegs. Die Wächter beobachten keine Kunstobjekte, sondern sie versuchen sich in Räumen zu befinden in denen auch anderen Gäste präsent sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schule: Volksschule Rotkreuz (Lustenau) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt eine &#039;&#039;&#039;Schule&#039;&#039;&#039;. In der Schule sind verschiedene Räume, so wie &#039;&#039;&#039;KlassenRaum&#039;&#039;&#039;, &#039;&#039;&#039;SportHalle&#039;&#039;&#039;, &#039;&#039;&#039;Handwerk &amp;amp; Technik Raum&#039;&#039;&#039;. Die Schule hat ein &#039;&#039;&#039;Schuldirektor&#039;&#039;&#039; und viele &#039;&#039;&#039;Lehrer&#039;&#039;&#039;.  Die &#039;&#039;&#039;Schüler&#039;&#039;&#039;, die die Schule besuchen, gehören zu einer &#039;&#039;&#039;SchuleKlasse&#039;&#039;&#039;. Jede SchuleKlasse hat einen fixen Tagesablauf, die im &#039;&#039;&#039;Kursplan&#039;&#039;&#039; festgelegt ist. Der Kursplan beinhaltet, das Thema, den Lehrer und den Raum, wo es stattfindet.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.1 ====&lt;br /&gt;
&lt;br /&gt;
Morgen kommen alle Lehrer und alle Schüler in die Schule. Die Schüler, die zu spät erscheinen, müssen zu dem Direktor.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.2 ====&lt;br /&gt;
&lt;br /&gt;
Die Schüler haben einen fixen Tagesablauf. 45 Minuten Stunden, 15 Minuten Pause, 45 Minuten Stunde, ....&lt;br /&gt;
Am Beginn jeder Unterrichtsstunde gehen die Schüler in den entsprechenden Kursraum, wie es im Stundenplan vorgesehen ist.&lt;br /&gt;
&lt;br /&gt;
==== Simulation 0.3 ====&lt;br /&gt;
&lt;br /&gt;
Die Lehrer gehen in den Kursraum, wo sie gebraucht sind. Nach der Stunde kommen sie in dem Lehrerzimmer zurück. Falls sie keine Kursstunde haben, bleiben sie im Lehrerzimmer und korrigieren Hausaufgaben und Tests.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
 Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgiebig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Interface ===&lt;br /&gt;
Gleiche Aufgabe wie zuvor, verwende jedoch ein &#039;&#039;&#039;Interface&#039;&#039;&#039; anstatt eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; für die Geometry.&lt;br /&gt;
 Welche möglichen Vorteile ergeben sich dadurch?&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry Interface.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Enhanced Version ===&lt;br /&gt;
  Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm (kann wiederverwendet werden)&lt;br /&gt;
&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Geometrische Form Stern und Haus vom Nikolaus. Verwende soviel Code wie möglich wieder.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Hausvomnikolaus.png|mini|none|Haus vom Nikolaus|150px]] || [[Datei:Kompass Stern.png|mini|Kompass Stern|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte, ansonsten die gesamte Strecke. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren, verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3557</id>
		<title>DCV 2024 03/Objekt Orientierte Programmierung Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_03/Objekt_Orientierte_Programmierung_%C3%9Cbungen&amp;diff=3557"/>
		<updated>2024-04-29T07:49:40Z</updated>

		<summary type="html">&lt;p&gt;Gyula: /* Museum: Neue Pinakothek */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Objekt orientierte Min-Max-Avg ===&lt;br /&gt;
Wir haben die Erfahrung mit Min, Max und Avarage Rechnungen über Arrays.&lt;br /&gt;
Es soll eine gleichwertige OOP (Object Oriented Programming) Lösung erstellt werden.&lt;br /&gt;
* Erstelle eine Klasse mit einem sinnvollen Namen&lt;br /&gt;
* Füge eine Objekt-Variable für Speichern eines {{JSL|int[]}}&lt;br /&gt;
* Erstelle ein Konstruktor, der diese Variable initialisiert&lt;br /&gt;
* Erstelle 3 (non-static) Funktionen {{JSL|calcMin()}},  {{JSL|calcMax()}}, {{JSL|calcAvg()}}, die über die gespeicherte Member-Variable (Objekt-Variable) arbeiten.&lt;br /&gt;
* Teste diese &#039;&#039;&#039;Methoden&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rückgabewert min-max-avg in einem Object ===&lt;br /&gt;
Es soll eine {{JSL|calcMinMaxAvg(int[])}} Methode erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; des {{JSL|int[]}} Parameters ermittelt und ein Objekt mit Min, Max und Avarage zurückgibt.  Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig ist für&lt;br /&gt;
* die Initialisierung des Zoos und aller seiner Bestandteile&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit &#039;&#039;Name&#039;&#039; der als Beschreibung des Geheges dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere deinen Zoo, sodass Gehege dynamisch hinzugefügt und entfernt werden können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um eine Funktion, die die Struktur des Zoos ausgibt. Der erwartete Ausdruck sieht folgendermaßen aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storch&lt;br /&gt;
│       ├── Hugo, Storch&lt;br /&gt;
│       ├── Idaxis, Storch&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm um Tierpfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Namen&#039;&#039; und mit einer dynamischen Liste von &#039;&#039;Gehegen&#039;&#039;, wofür der Pfleger zuständig ist. Erweitere die Klasse &#039;&#039;Zoo&#039;&#039;, dass die eine Liste der &#039;&#039;Pfleger&#039;&#039; beinhaltet.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck um die neu eingeführten Pfleger.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jedem Tag gehen die Pfleger los und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt er das Gehege und nimmt das nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird er zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Übungen Zur Modellierung ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Übungen haben das Ziel, schnell ein Model zu erfassen, das die folgenden Aspekte beinhaltet:&lt;br /&gt;
# Klassen&lt;br /&gt;
# Kompositionen&lt;br /&gt;
# Vererbungen&lt;br /&gt;
# Methoden / Funktionen&lt;br /&gt;
# Variablen / Attribute&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-class-diagram-cheat-sheet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Erklärung dazu findet sich beim Klick auf diesen Verweis: [https://ccwiki.digitalcampusvorarlberg.at/index.php/UML_Klassendiagramm].&lt;br /&gt;
&lt;br /&gt;
=== Schwarzwald Klinik ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Krankenhaus&#039;&#039;&#039; mit unterschiedlichen &#039;&#039;&#039;Abteilungen&#039;&#039;&#039;. Manche Abteilungen sind &#039;&#039;&#039;Ambulanz&#039;&#039;&#039;en anderen sind &#039;&#039;&#039;Station&#039;&#039;&#039;en. Ambulanzen haben eine Öffnungszeit sowie einen Warteraum mit einer definierten Anzahl von Plätzen. Stationen beinhalten &#039;&#039;&#039;Zimmer&#039;&#039;&#039; in denen sich &#039;&#039;&#039;Betten&#039;&#039;&#039; befinden.&lt;br /&gt;
Wenn ein Patient ins Krankenhaus kommt, besucht dieser entsprechend seiner Erkrankung eine Ambulanz. Falls der Fall schwerwiegender ist, muss er in einer Station aufgenommen werden. Patienten werden untersucht, behandelt und eventuell gepflegt. Aus der Ambulanzen dürfen die Patienten nach kurzer Zeit wieder nach Hause gehen. Patienten die in Stationen behandelt werden, müssen solange da bleiben, bis sie vollständig geheilt sind.&lt;br /&gt;
&lt;br /&gt;
=== Restaurant &#039;&#039;Dolce Vita&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Es gibt ein &#039;&#039;&#039;Restaurant&#039;&#039;&#039;, das aus mehreren Räumen besteht. Jeder &#039;&#039;&#039;Raum&#039;&#039;&#039; hat einen zuständigen &#039;&#039;&#039;Kellner&#039;&#039;&#039;. In jedem &#039;&#039;&#039;Raum&#039;&#039;&#039; befinden sich unterschiedliche Tische. Manche sind groß, andere sind winzig klein. Wenn eine &#039;&#039;&#039;Gruppe&#039;&#039;&#039; eintrifft, werden sie vom &#039;&#039;&#039;Hauptkellner&#039;&#039;&#039; begrüßt. Der Hauptkellner führt sie zu einem Tisch und übergibt die Gruppe an den im jeweiligen Raum zuständigen Kellner. Die Gruppe der Gäste bekommt eine &#039;&#039;&#039;Speisekarte&#039;&#039;&#039; mit den Speisen und Getränken. Der Kellner nimmt die Bestellungen auf und serviert diese anschließend. Nach dem Essen fragt die Gruppe nach der &#039;&#039;&#039;Rechnung&#039;&#039;&#039; und bezahlt diese.&lt;br /&gt;
&lt;br /&gt;
Am Ende des Tages macht der Hauptkellner eine Gesamtabrechnung und eine Analyse:&lt;br /&gt;
* Welcher Kellner hat die meisten Gäste bedient?&lt;br /&gt;
* Welcher Kellner hat den Höchsten Umsatz generiert?&lt;br /&gt;
* Welcher Kellner hat den größten Gewinnn erwirtschaftet? (Dazu braucht man die Selbstkosten pro Speise/Getränk)&lt;br /&gt;
* Was war die beliebteste Speise?&lt;br /&gt;
* Was war das beliebteste Getränk?&lt;br /&gt;
&lt;br /&gt;
=== Museum: Neue Pinakothek ===&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;&#039;Museum&#039;&#039;&#039; besteht aus Gängen und Ausstellungsräume. Jeder &#039;&#039;&#039;Gang&#039;&#039;&#039; und &#039;&#039;&#039;Ausstellungsraum&#039;&#039;&#039; kennt über die benachbarten Räume. In jedem Ausstellungsraum sind &#039;&#039;&#039;Kunststücke&#039;&#039;&#039; ausgestellt. Ein Kunststück kann ein Zeichen, Gemälde, Statue, oder ein Kunstobjekt sein.&lt;br /&gt;
Es gibt einen besonderen Gang im Museum, der als Eingang für Gäste dient. Ab dem Zeitpunkt der Öffnung dürfen Gäste ins Museum kommen. Ein Gast in einem Gang wählt einen zufälligen Raum, den er betritt. Falls sich ein Gast in einem Ausstellungsraum befindet, kann er ein zufälliges Kunststück beobachten oder in den nächsten Raum gehen. Falls ein Gast nach einer Zeit müde wird, geht er nach Hause. Zwischen den Gästen sind einige mit bösen Absichten. Ein &#039;&#039;&#039;Dieb&#039;&#039;&#039; stiehlt den beobachteten Gegenstand, falls er sich allein in einem Raum befindet. Um die Diebstähle zu verhindern sind einige &#039;&#039;&#039;Wächter&#039;&#039;&#039; im Museum unterwegs. Die Wächter beobachten keine Kunstobjekte, sondern sie versuchen sich in Räumen zu befinden in denen auch anderen Gäste präsent sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schule: Volksschule Rotkreuz (Lustenau) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt eine &#039;&#039;&#039;Schule&#039;&#039;&#039;. In der Schule sind verschiedene Räume, so wie &#039;&#039;&#039;KlassenRaum&#039;&#039;&#039;, &#039;&#039;&#039;SportHalle&#039;&#039;&#039;, &#039;&#039;&#039;Handwerk &amp;amp; Technik Raum&#039;&#039;&#039;. Die Schule hat ein &#039;&#039;&#039;Schuldirektor&#039;&#039;&#039; und viele &#039;&#039;&#039;Lehrer&#039;&#039;&#039;.  Die &#039;&#039;&#039;Schüler&#039;&#039;&#039;, die die Schule besuchen, gehören zu einer &#039;&#039;&#039;SchuleKlasse&#039;&#039;&#039;. Jede SchuleKlasse hat einen fixen Tagesablauf, die im &#039;&#039;&#039;Kursplan&#039;&#039;&#039; festgelegt ist. Der Kursplan beinhaltet, das Thema, den Lehrer und den Raum, wo es stattfindet.&lt;br /&gt;
&lt;br /&gt;
== Simulation 0.1 ==&lt;br /&gt;
&lt;br /&gt;
Morgen kommen alle Lehrer und alle Schüler in die Schule. Die Schüler, die zu spät erscheinen, müssen zu dem Direktor.&lt;br /&gt;
&lt;br /&gt;
== Simulation 0.2 ==&lt;br /&gt;
&lt;br /&gt;
Die Schüler haben einen fixen Tagesablauf. 45 Minuten Stunden, 15 Minuten Pause, 45 Minuten Stunde, ....&lt;br /&gt;
Am Beginn jeder Unterrichtsstunde gehen die Schüler in den entsprechenden Kursraum, wie es im Stundenplan vorgesehen ist.&lt;br /&gt;
&lt;br /&gt;
== Simulation 0.3 ==&lt;br /&gt;
&lt;br /&gt;
Die Lehrer gehen in den Kursraum, wo sie gebraucht sind. Nach der Stunde kommen sie in dem Lehrerzimmer zurück. Falls sie keine Kursstunde haben, bleiben sie im Lehrerzimmer und korrigieren Hausaufgaben und Tests.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
 Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgiebig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Interface ===&lt;br /&gt;
Gleiche Aufgabe wie zuvor, verwende jedoch ein &#039;&#039;&#039;Interface&#039;&#039;&#039; anstatt eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; für die Geometry.&lt;br /&gt;
 Welche möglichen Vorteile ergeben sich dadurch?&lt;br /&gt;
&lt;br /&gt;
[[Datei:Geometry Interface.png|mini|ohne]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry Enhanced Version ===&lt;br /&gt;
  Zeichne zuerst für die Aufgabe ein entsprechendes Klassendiagramm (kann wiederverwendet werden)&lt;br /&gt;
&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Geometrische Form Stern und Haus vom Nikolaus. Verwende soviel Code wie möglich wieder.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Hausvomnikolaus.png|mini|none|Haus vom Nikolaus|150px]] || [[Datei:Kompass Stern.png|mini|Kompass Stern|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte, ansonsten die gesamte Strecke. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren, verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;/div&gt;</summary>
		<author><name>Gyula</name></author>
	</entry>
</feed>