DCV 2024 09/OOP Selbsttest

Aus CCWiki
Version vom 19. November 2024, 08:36 Uhr von Gyula (Diskussion | Beiträge) (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: '''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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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!