Menu
Coddy logo textTech

Riepilogo: Greeter

Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 43 di 61.

challenge icon

Sfida

Facile

Creiamo un sistema Greeter che dimostri il polimorfismo tramite puntatori a funzione: lo stesso tipo di struct produce output diversi a seconda della funzione di saluto assegnata.

Organizzerai il codice in tre file:

  • greeter.h: Definisci qui l'interfaccia del greeter. Crea un tipo puntatore a funzione chiamato GreetFunc che accetta un const char* (un nome da salutare) e non restituisce nulla. Poi definisci una struct Greeter contenente un language (un const char*) e un puntatore a funzione greet di tipo GreetFunc.
  • greeter.c: Implementa le funzioni di saluto che rappresentano lingue diverse:
    • greet_english: stampa Hello, name!
    • greet_spanish: stampa Hola, name!
  • main.c: Metti insieme qui tutti gli elementi. Crea due istanze di Greeter, una per l'inglese e una per lo spagnolo, ciascuna associata alla rispettiva funzione di saluto. Leggi un nome come input, quindi chiama la funzione greet per entrambi i greeter per dimostrare il comportamento polimorfico.

Il programma riceverà un singolo input: un nome da salutare.

Crea un greeter inglese con la lingua impostata su English e un greeter spagnolo con la lingua impostata su Spanish. Per ciascun greeter, stampa la lingua seguita da due punti e uno spazio, quindi chiama la sua funzione greet con il nome inserito.

Esempio di output quando l'input è Maria:

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

Esempio di output quando l'input è Carlos:

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

Entrambi i greeter sono dello stesso tipo Greeter, eppure producono saluti diversi perché a ciascuno è assegnata una funzione diversa al membro greet. Ricorda di usare le include guard nel file header.

Provalo tu

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

int main() {
    // Leggi il nome inserito
    char name[100];
    scanf("%s", name);
    
    // TODO: Crea un greeter in inglese
    // - Imposta language su "English"
    // - Imposta greet sulla funzione greet_english
    
    
    // TODO: Crea un greeter in spagnolo
    // - Imposta language su "Spanish"
    // - Imposta greet sulla funzione greet_spanish
    
    
    // TODO: Per ogni greeter:
    // 1. Stampa language seguito da ": "
    // 2. Chiama la funzione greet con il nome
    
    
    return 0;
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C online