DCV 2024 09/OOP Selbsttest
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: 1,5 Tage
Das Ergebnis ist in einem eigenen Package unter deineName.week10.influencer in GitHub zu speichern.
Falls Fragen gibt, bitte direkt bei deinem Lehrer deines Vertrauens melden. ;-)
Ausgangssituation
Diesmal fokussieren wir uns auf Influencer, die über verschiedene Channels ihre Reichweite aufbauen.
Ein Influencer ist auf verschiedenen Channels aktiv. Ein Channel kann unterschiedlich sein, z.B. YouTube, Instagram oder TikTok, und hat spezifische Eigenschaften. Diese Channels sollen durch Vererbung modelliert werden.
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: So viel wie nötig, so wenig wie möglich.
Aufgabe 1: Die Klasse Influencer erstellen
Erstelle eine Klasse Influencer, die die folgenden Attribute besitzt:
name(String): Der Name des Influencers.age(int): Das Alter des Influencers.category(String): Die Kategorie des Influencers (z. B. „Fitness“, „Tech“).channels(Vector<Channel>): Eine Liste von Channels, auf denen der Influencer aktiv ist.friends(Vector<Influencer>): Eine Liste von anderen Influencern, die seine/ihre Freunde sind.
Schreibe einen Konstruktor, um diese Attribute zu initialisieren, und füge toString() für sie hinzu.
Füge folgende Methoden hinzu:
add_channel(Channel channel): Fügt einen neuen Channel zum Influencer hinzu.print_channels(): Gibt alle Channels des Influencers in einem übersichtlichen Format aus.
Aufgabe 2: Superklasse Channel erstellen
Erstelle eine abstrakte Klasse Channel, die die grundlegenden Eigenschaften eines Channels definiert:
platform_name(String): Der Name der Plattform (z.B. „YouTube“, „Instagram“).followers(int): Die Anzahl der Follower auf diesem Channel.engagement_rate(float): Die durchschnittliche Engagement-Rate in Prozent.
Füge folgende Methode hinzu:
show_channel_info(): Eine abstrakte Methode, die in den abgeleiteten Klassen überschrieben wird, um die Details eines Channels anzuzeigen.
Aufgabe 3: Abgeleitete Klassen für Channels
Erstelle spezifische Klassen für Plattformen, die von der Superklasse Channel erben, und füge zusätzliche Attribute hinzu:
YouTubeChannel:subscribers(int): Die Anzahl der Abonnenten.videos_uploaded(int): Die Anzahl der hochgeladenen Videos.
InstagramChannel:posts(int): Die Anzahl der veröffentlichten Beiträge.reels_views(int): Die durchschnittlichen Views der Reels.
- Vorlage:TikTokChannel:
videos_uploaded(int): Die Anzahl der hochgeladenen TikToks.average_views(int): Die durchschnittlichen Views pro Video.
Implementiere die Methode show_channel_info() in jeder Klasse, um die spezifischen Eigenschaften anzuzeigen.
Aufgabe 4: Analysen der Reichweite
Schreibe eine Methode get_total_followers() in der Klasse Influencer, die die Anzahl der Follower über alle Channels hinweg summiert.
Implementiere eine Methode find_most_popular_channel(), die den Channel mit den meisten Followern zurückgibt.
Ergänze eine Methode print_channels_sorted_by_followers(), die alle Channels nach der Anzahl ihrer Follower sortiert auflistet.
Bonusaufgabe: Freunde speichern und analysieren
Füge eine Methode add_friend(Influencer friend) in die Klasse Influencer hinzu, um einen neuen Freund hinzuzufügen.
Implementiere eine Methode find_most_influential_friend(), die den Freund mit der höchsten Gesamtzahl an Followern über alle Channels hinweg findet.
Implementiere eine Methode find_least_influential_friend(), die den Freund mit der niedrigsten Gesamtzahl an Followern zurückgibt.
Erstelle eine Methode print_friends_by_influence(), die die Freunde nach ihrer Reichweite sortiert auflistet.
Und vor allem: Hab Spaß beim Coden!