Dikdörtgen Uygulaması
Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 46 / 61.
Görev
KolayCircle ile yaptığımız gibi, temel Rectangle struct'ını içeren başka bir somut şekil olan Shape'ı uygulayarak Shape Drawer projesini geliştirmeye devam edelim.
Mevcut projenizi temel alarak şu dosyalara dikdörtgen işlevselliği ekleyeceksiniz:
shape.h: Önceki derslerdekiShapeveDrawFuncişaretçi türlerini içeren temelAreaFuncarayüzünüzü koruyun.circle.hvecircle.c: Önceki dersteki Circle uygulamanızı koruyun.rectangle.h:Rectanglestruct'ını burada tanımlayın. Bir dikdörtgen,Shape'i ilk üye olarak içerir vewidthileheightalanlarını (her ikisi dedouble) ekler. Genişlik ve yükseklik parametrelerini alan ve değer olarak bircreate_rectangledöndürenRectanglekurucu işlevini bildirin.rectangle.c: Dikdörtgene özgü davranışı uygulayın:draw_rectangle:Drawing Rectangle with width: X.XX and height: X.XXyazdırır (her iki değer de 2 ondalık basamakla gösterilir)area_rectangle: genişlik × yükseklik değerini döndürürcreate_rectangle: BirRectanglebaşlatır, içindekiShape'in işlev işaretçilerini dikdörtgen işlevlerine bağlar, boyutları ayarlar ve dikdörtgeni döndürür
main.c: Her iki şeklin de aynı arayüz üzerinden çalıştığını gösterin. İki girdi okuyun: bir dikdörtgen için genişlik ve yükseklik. Kurucunuzu kullanarak bir dikdörtgen 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 iki girdi alacaktır: width ve height değerleri (kayan noktalı sayılar olarak).
Girdiler 4.0 ve 3.0 olduğunda örnek çıktı:
Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00Girdiler 7.5 ve 2.5 olduğunda örnek çıktı:
Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75Circle'da olduğu gibi, Rectangle da Shape'i ilk üye olarak içerir; bu sayede işlev işaretçilerine içindeki üye üzerinden erişebilirsiniz. Bu tutarlı desen polimorfizmi mümkün kılar: her iki şekil de Shape arayüzleri üzerinden aynı şekilde ele alınabilir. Tüm başlık dosyalarında include guard'ları kullanmayı unutmayın.
Kendin dene
#include <stdio.h>
#include "shape.h"
#include "rectangle.h"
int main() {
double width, height;
scanf("%lf", &width);
scanf("%lf", &height);
// TODO: create_rectangle(width, height) kullanarak bir dikdörtgen oluştur
// TODO: Gömülü Shape'in fonksiyon işaretçisi aracılığıyla draw'ı çağır
// TODO: Gömülü Shape'in fonksiyon işaretçisi aracılığıyla area'yı çağır
// TODO: Alanı 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