Menu
Coddy logo textTech

Wiederholung: Greeter

Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 43 von 61.

challenge icon

Aufgabe

Einfach

Wir erstellen ein Greeter-System, das Polymorphismus durch Funktionszeiger demonstriert: Derselbe Strukturtyp erzeugt je nach der eingebundenen Begrüßungsfunktion unterschiedliche Ausgaben.

Du organisierst deinen Code auf drei Dateien verteilt:

  • greeter.h: Definiere hier deine Greeter-Schnittstelle. Erstelle einen Funktionszeigertyp namens GreetFunc, der einen const char* (einen zu begrüßenden Namen) übernimmt und nichts zurückgibt. Definiere anschließend eine Greeter-Struktur, die ein language (ein const char*) und einen Funktionszeiger greet vom Typ GreetFunc enthält.
  • greeter.c: Implementiere die Begrüßungsfunktionen, die verschiedene Sprachen repräsentieren:
    • greet_english: gibt Hello, name! aus
    • greet_spanish: gibt Hola, name! aus
  • main.c: Führe hier alles zusammen. Erstelle zwei Greeter-Instanzen, eine für Englisch und eine für Spanisch, und verknüpfe jede mit ihrer entsprechenden Begrüßungsfunktion. Lies einen Namen als Eingabe ein und rufe anschließend bei beiden Greeter-Instanzen die Funktion greet auf, um polymorphes Verhalten zu demonstrieren.

Dein Programm erhält eine einzelne Eingabe: einen zu begrüßenden Namen.

Erstelle einen englischen Greeter mit dem auf English gesetzten language und einen spanischen Greeter mit dem auf Spanish gesetzten language. Gib für jeden Greeter seine Sprache gefolgt von einem Doppelpunkt und einem Leerzeichen aus und rufe anschließend seine Funktion greet mit dem Eingabenamen auf.

Beispielausgabe bei der Eingabe Maria:

English: Hello, Maria!
Spanish: Hola, Maria!

Beispielausgabe bei der Eingabe Carlos:

English: Hello, Carlos!
Spanish: Hola, Carlos!

Beide Greeter-Instanzen haben denselben Typ Greeter und erzeugen dennoch unterschiedliche Begrüßungen, weil jeder Instanz eine andere Funktion für ihr greet-Member zugewiesen wurde. Denke daran, Include-Guards in deiner Header-Datei zu verwenden.

Probier es selbst

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // Lies die Namenseingabe
    char name[100];
    scanf("%s", name);
    
    // TODO: Erstelle einen englischen Greeter
    // - Setze language auf "English"
    // - Setze greet auf die Funktion greet_english
    
    
    // TODO: Erstelle einen spanischen Greeter
    // - Setze language auf "Spanish"
    // - Setze greet auf die Funktion greet_spanish
    
    
    // TODO: Für jeden Greeter:
    // 1. Gib die language gefolgt von ": " aus
    // 2. Rufe die greet-Funktion mit dem name auf
    
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C-Compiler