<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?action=history&amp;feed=atom&amp;title=DCV_2024_09%2FOOP_Selbsttest</id>
	<title>DCV 2024 09/OOP Selbsttest - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?action=history&amp;feed=atom&amp;title=DCV_2024_09%2FOOP_Selbsttest"/>
	<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/OOP_Selbsttest&amp;action=history"/>
	<updated>2026-04-14T14:44:46Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in CCWiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/OOP_Selbsttest&amp;diff=3715&amp;oldid=prev</id>
		<title>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: &#039;&#039;&#039;1,5 Tage&#039;&#039;&#039;  Das Ergebnis ist in einem eigenen Package unter deineName.week10.influencer &#039;&#039;&#039;in GitHub zu speichern&#039;&#039;&#039;.   Falls Fragen gibt, bitte direkt bei deinem Lehrer…“</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2024_09/OOP_Selbsttest&amp;diff=3715&amp;oldid=prev"/>
		<updated>2024-11-19T08:36:18Z</updated>

		<summary type="html">&lt;p&gt;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;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&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: &amp;#039;&amp;#039;&amp;#039;1,5 Tage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
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;. &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 &amp;#039;&amp;#039;&amp;#039;Influencer&amp;#039;&amp;#039;&amp;#039;, die über verschiedene &amp;#039;&amp;#039;&amp;#039;Channels&amp;#039;&amp;#039;&amp;#039; ihre Reichweite aufbauen. &lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Influencer&amp;#039;&amp;#039;&amp;#039; ist auf verschiedenen &amp;#039;&amp;#039;&amp;#039;Channels&amp;#039;&amp;#039;&amp;#039; aktiv. Ein &amp;#039;&amp;#039;&amp;#039;Channel&amp;#039;&amp;#039;&amp;#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: &amp;#039;&amp;#039;So viel wie nötig, so wenig wie möglich.&amp;#039;&amp;#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>
</feed>