Daire Uygulaması
Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 45 / 61.
Görev
KolayCircle'ı uygulayarak Shape Drawer projesini geliştirmeye devam edelim: temel Shape yapısını içeren ve kendi çizim ve alan mantığını sağlayan somut bir şekil.
Önceki dersteki temeli kullanarak projenizi şu dosyalarla genişleteceksiniz:
shape.h: Önceki dersteki temelShapearayüzünüzü,DrawFuncveAreaFuncişaretçi türleriyle birlikte koruyun.circle.h:Circleyapınızı burada tanımlayın. Bir daire,Shape'i ilk üye olarak içerir (yukarı dönüşüm için ilk üye kuralını etkinleştirir) veradiustüründe birdoublealanı ekler. Bir yarıçap alan ve değer olarak bircreate_circledöndürenCirclekurucu işlevini bildirin.circle.c: Daireye özgü davranışı burada uygulayın:draw_circle:Drawing Circle with radius: X.XXyazdırır (yarıçap 2 ondalık basamakla gösterilir)area_circle: π × yarıçap² değerini döndürür (π için3.14159kullanın)create_circle: BirCirclebaşlatır, içindekiShape'in işlev işaretçilerinidraw_circlevearea_circle'ı gösterecek şekilde bağlar, yarıçapı ayarlar ve daireyi döndürür
main.c: Her şeyi bir araya getirin. Girdi olarak bir yarıçap değeri okuyun, kurucunuzu kullanarak bir daire oluşturun, ardından içindekidraw'in işlev işaretçileri üzerinden hemareahem deShapeişlevlerini çağırın. Alanı 2 ondalık basamakla yazdırın.
Programınız bir girdi alacaktır: yarıçap değeri (kayan noktalı sayı olarak).
Girdi 5.0 olduğunda örnek çıktı:
Drawing Circle with radius: 5.00
Area: 78.54Girdi 3.5 olduğunda örnek çıktı:
Drawing Circle with radius: 3.50
Area: 38.48Temel fikir, Circle'ın ilk üyesi olarak bir Shape içermesidir; böylece işlev işaretçilerine circle.base.draw ve circle.base.area (veya içindeki üyeye verdiğiniz ad) üzerinden erişebilirsiniz. Bu işlevleri çağırırken Shape üyesine bir işaretçi geçirin. Tüm başlık dosyalarında include guard kullanmayı unutmayın.
Kendin dene
#include <stdio.h>
#include "shape.h"
#include "circle.h"
int main() {
double radius;
scanf("%lf", &radius);
// TODO: create_circle kullanarak bir Circle oluştur
// TODO: Gömülü Shape'in fonksiyon işaretçisi üzerinden draw'ı çağır
// TODO: Gömülü Shape'in fonksiyon işaretçisi üzerinden area'yı çağır
// ve 2 ondalık basamakla yazdır: "Area: %.2f\n"
return 0;
}Nesne Yönelimli Programlama 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şisi9Proje: Şekil Çizici
Projeye Genel BakışDaire UygulamasıDikdörtgen UygulamasıPolimorfik KullanımŞekil KapsayıcısıKendi başına pratik yap: Online C derleyicisi