Dikdörtgen Uygulaması
Coddy'nin C Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 46 / 61.
Görev
KolayTıpkı Circle'da yaptığımız gibi, temel Shape yapısını (struct) içine yerleştiren bir başka somut şekil olan Rectangle'ı uygulayarak Shape Drawer projesini oluşturmaya devam edelim.
Mevcut projenizin üzerine inşa ederek, şu dosyalar aracılığıyla dikdörtgen işlevselliğini ekleyeceksiniz:
shape.h: Önceki derslerdekiDrawFuncveAreaFuncfonksiyon göstericisi (function pointer) türlerini içeren temelShapearayüzünüzü koruyun.circle.hvecircle.c: Önceki dersteki Circle uygulamanızı koruyun.rectangle.h:Rectangleyapınızı burada tanımlayın. Bir dikdörtgen,Shapeyapısını ilk üyesi olarak içine yerleştirir vewidthileheightalanlarını (her ikisi dedouble) ekler. Genişlik ve yükseklik parametrelerini alan ve değer olarak birRectangledöndürencreate_rectangleyapıcı (constructor) fonksiyonunu 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çine yerleştirilmişShape'in fonksiyon göstericilerini dikdörtgen fonksiyonlarına 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. Yapıcınızı kullanarak bir dikdörtgen oluşturun, ardından içine yerleştirilmişShape'in fonksiyon göstericileri aracılığıyla hemdrawhem deareafonksiyonlarını çağırın. Alanı 2 ondalık basamakla yazdırın.
Programınız iki girdi alacaktır: width (genişlik) ve height (yükseklik) 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.75Tıpkı Circle'da olduğu gibi, Rectangle da Shape'i ilk üyesi olarak içine yerleştirir ve fonksiyon göstericilerine bu yerleşik üye aracılığıyla erişmenize olanak tanır. Bu tutarlı model, polimorfizmi (çok biçimlilik) mümkün kılan şeydir; her iki şekil de Shape arayüzleri aracılığıyla tek tip olarak ele alınabilir. Tüm başlık (header) dosyalarında include guard 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şturun
// TODO: Gömülü Shape'in fonksiyon göstericisi aracılığıyla draw'u çağırın
// TODO: Gömülü Shape'in fonksiyon göstericisi aracılığıyla area'yı çağırın
// TODO: Alanı 2 ondalık basamakla yazdırın: "Area: %.2f\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şisi9Proje: Şekil Çizici
Projeye Genel BakışDaire Uygulaması