Ulasan: Greeter
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 43 dari 61.
Tantangan
MudahMari buat sistem Greeter yang menunjukkan polimorfisme melalui pointer fungsi: tipe struct yang sama menghasilkan output berbeda, bergantung pada fungsi sapaan yang ditetapkan.
Kamu akan menyusun kodemu dalam tiga file:
greeter.h: Definisikan antarmuka greeter di sini. Buat tipe pointer fungsi bernamaGreetFuncyang menerimaconst char*(nama yang akan disapa) dan tidak mengembalikan apa pun. Lalu, definisikan structGreeteryang berisilanguage(sebuahconst char*) dan pointer fungsigreetbertipeGreetFunc.greeter.c: Implementasikan fungsi sapaan yang mewakili berbagai bahasa:greet_english: mencetakHello, name!greet_spanish: mencetakHola, name!
main.c: Satukan semuanya di sini. Buat dua instanceGreeter, satu untuk bahasa Inggris dan satu untuk bahasa Spanyol, masing-masing ditetapkan ke fungsi sapaan yang sesuai. Baca sebuah nama sebagai input, lalu panggil fungsigreetpada kedua greeter untuk menunjukkan perilaku polimorfik.
Programmu akan menerima satu input: sebuah nama yang akan disapa.
Buat greeter bahasa Inggris dengan bahasa yang ditetapkan ke English dan greeter bahasa Spanyol dengan bahasa yang ditetapkan ke Spanish. Untuk setiap greeter, cetak bahasanya diikuti titik dua dan spasi, lalu panggil fungsi greet dengan nama input.
Contoh output saat inputnya adalah Maria:
English: Hello, Maria!
Spanish: Hola, Maria!Contoh output saat inputnya adalah Carlos:
English: Hello, Carlos!
Spanish: Hola, Carlos!Kedua greeter memiliki tipe Greeter yang sama, tetapi menghasilkan sapaan yang berbeda karena masing-masing memiliki fungsi berbeda yang ditetapkan ke member greet. Ingat untuk menggunakan include guard di file header-mu.
Coba sendiri
#include <stdio.h>
#include <string.h>
#include "greeter.h"
int main() {
// Baca input nama
char name[100];
scanf("%s", name);
// TODO: Buat penyapa bahasa Inggris
// - Atur language ke "English"
// - Atur greet ke fungsi greet_english
// TODO: Buat penyapa bahasa Spanyol
// - Atur language ke "Spanish"
// - Atur greet ke fungsi greet_spanish
// TODO: Untuk setiap penyapa:
// 1. Cetak language diikuti oleh ": "
// 2. Panggil fungsi greet dengan name
return 0;
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun8Polimorfisme
Pointer Fungsi dalam StructMensimulasikan methodKonsep InterfaceMengimplementasikan InterfaceIterasi PolimorfikUlasan: Greeter3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online