Özet: Greeter
Coddy'nin C Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 43 / 61.
Görev
KolayFonksiyon göstericileri (function pointers) aracılığıyla polimorfizmi gösteren bir Greeter sistemi kuralım — aynı yapı (struct) türü, hangi selamlama fonksiyonunun bağlandığına bağlı olarak farklı çıktılar üretecek.
Kodunuzu üç dosya halinde düzenleyeceksiniz:
greeter.h: Selamlayıcı arayüzünüzü burada tanımlayın. Birconst char*(selamlanacak isim) alan ve hiçbir şey döndürmeyenGreetFuncadında bir fonksiyon göstericisi türü oluşturun. Ardından, birlanguage(birconst char*) veGreetFunctüründe birgreetfonksiyon göstericisi içeren birGreeteryapısı (struct) tanımlayın.greeter.c: Farklı dilleri temsil eden selamlama fonksiyonlarını uygulayın:greet_english—Hello, name!yazdırırgreet_spanish—Hola, name!yazdırır
main.c: Her şeyi burada birleştirin. Biri İngilizce diğeri İspanyolca için olmak üzere, her biri ilgili selamlama fonksiyonuna bağlanmış ikiGreeterörneği oluşturun. Girdi olarak bir isim okuyun, ardından polimorfik davranışı göstermek için her iki selamlayıcıdagreetfonksiyonunu çağırın.
Programınız tek bir girdi alacaktır: selamlanacak bir name.
Dili English olarak ayarlanmış bir İngilizce selamlayıcı ve dili Spanish olarak ayarlanmış bir İspanyolca selamlayıcı oluşturun. Her selamlayıcı için, dilini ve ardından bir iki nokta üst üste ve boşluk yazdırın, ardından girdi ismiyle greet fonksiyonunu çağırın.
Girdi Maria olduğunda örnek çıktı:
English: Hello, Maria!
Spanish: Hola, Maria!Girdi Carlos olduğunda örnek çıktı:
English: Hello, Carlos!
Spanish: Hola, Carlos!Her iki selamlayıcı da aynı Greeter türündedir, ancak her birinin greet üyesine farklı bir fonksiyon atandığı için farklı selamlamalar üretirler. Başlık dosyanızda "include guards" kullanmayı unutmayın.
Kendin dene
#include <stdio.h>
#include <string.h>
#include "greeter.h"
int main() {
// İsim girişini oku
char name[100];
scanf("%s", name);
// TODO: İngilizce bir greeter oluşturun
// - language değerini "English" olarak ayarlayın
// - greet değerini greet_english fonksiyonuna ayarlayın
// TODO: İspanyolca bir greeter oluşturun
// - language değerini "Spanish" olarak ayarlayın
// - greet değerini greet_spanish fonksiyonuna ayarlayın
// TODO: Her bir greeter için:
// 1. Dili ve ardından ": " yazdırın
// 2. name ile greet fonksiyonunu çağırın
return 0;
}
Object Oriented Programming bölümündeki tüm dersler
1Modüler Programlama Temelleri
Başlık DosyalarıInclude Guard'larKaynak DosyalarıStatik FonksiyonlarÖzet: Modüler Hesap Makinesi4Kapsülleme
Opaque Pointer KavramıOpaque Struct TanımlamaGetter ve Setter MetotlarıSetter Metotlarında DoğrulamaÖzet: Gizli Kutu2Nesneler ve Metotlar
Nesne Olarak Struct'lar'Self' İşaretçisiConst Doğruluğuİşaretçi vs DeğerYardımcı MetotlarÖzet: Point Manager5Proje: Basit Banka Hesabı
Proje KurulumuHesabın Oluşturulması3Nesne Yaşam Döngüsü
Constructor DeseniDestructor DeseniStack İlklendirmeDerin KopyalamaÖzet: String Wrapper6Kompozisyon Yoluyla Kalıtım
Struct Gömmeİlk Üye KuralıÜst Üyelere ErişimUpcastingÖzet: Şekil Hiyerarşisi