Musa B.
Kilopat
- Katılım
- 1 Ekim 2017
- Mesajlar
- 1.633
- Makaleler
- 4
- Çözümler
- 13
Daha fazla
- Cinsiyet
- Erkek
Merhaba, C++´da verilen ödevi yaparken son kısımda takıldım. Öncelikle programın kalıtım ve polymorphism üzerinden yapılması isteniyor.
Öncelikle yapıyı anlatarak başlayayım ki sorunumu tam olarak anlayabilesiniz;
Sekil adında bir base class mevcut, bu base class adet alt sınıfa sahip sekil2d ve sekil3d adında. Bu iki sınıf sekil sınıfından kalıtım yapılmış durumda ve şu an da ve ileride bahsedeceğim her değişken ve fonksiyon public olarak bulunmakta. sekil2d sınıfı daire, dikdortgen, ellipse ve ucgen adındaki alt sınıflara sahip bu bahsettiğim 4 sınıfın base classı sekil2d yani. sekil3d ise kup, kure ve silindir´e base class olarak görev yapmakta. Şimdi bizden istenen şey ödev dosyasında şu şekilde tanımlanmaktadır:
Polymorphism kullanarak Sekil cinsinden pointerları parametre olarak alıp bu pointerların adreslediği sekillerin hacimlerinin toplamını hesaplayan ve prototipi aşağıdaki satırda bulunan global fonksiyonu yazınız. double getToplamHacim(Sekil *sekilPtr[], const int N)
Bu fonksiyonun bir de 2D şekiller için olan ve toplam alanı bulması istenen hali vardı onu yaptım. Onla bunun arasındaki fark onda sekil sınıfında zaten alanları alan fonksiyon bulunuyordu. Ödevde bunun sekil sınıfında bulunması özellikle belirtilmişti lakin ödevde hacimleri alıp döndüren getHacim fonksiyonunun sekil3d sınıfında bulunması söylendi. Kalıtımı doğru yapmama rağmen sekilPtr üzerinden sekil3d sınıfında bulunan hacim değişkenine veya getHacim fonksiyonuna erişim sağlayamamaktayım.
Örnek vermem gerekirse getToplamHacim içerisinde şu şekilde bir kullanım yapmam gerekiyor:
ama bunu sekil sınıfında yapmam lazım ve getHacim() fonksiyonu sekil sınıfından kalıtımlanan sekil3d sınıfındaki public bir fonksiyon. Yardımcı olabilir misiniz?
Öncelikle yapıyı anlatarak başlayayım ki sorunumu tam olarak anlayabilesiniz;
Sekil adında bir base class mevcut, bu base class adet alt sınıfa sahip sekil2d ve sekil3d adında. Bu iki sınıf sekil sınıfından kalıtım yapılmış durumda ve şu an da ve ileride bahsedeceğim her değişken ve fonksiyon public olarak bulunmakta. sekil2d sınıfı daire, dikdortgen, ellipse ve ucgen adındaki alt sınıflara sahip bu bahsettiğim 4 sınıfın base classı sekil2d yani. sekil3d ise kup, kure ve silindir´e base class olarak görev yapmakta. Şimdi bizden istenen şey ödev dosyasında şu şekilde tanımlanmaktadır:
Polymorphism kullanarak Sekil cinsinden pointerları parametre olarak alıp bu pointerların adreslediği sekillerin hacimlerinin toplamını hesaplayan ve prototipi aşağıdaki satırda bulunan global fonksiyonu yazınız. double getToplamHacim(Sekil *sekilPtr[], const int N)
Bu fonksiyonun bir de 2D şekiller için olan ve toplam alanı bulması istenen hali vardı onu yaptım. Onla bunun arasındaki fark onda sekil sınıfında zaten alanları alan fonksiyon bulunuyordu. Ödevde bunun sekil sınıfında bulunması özellikle belirtilmişti lakin ödevde hacimleri alıp döndüren getHacim fonksiyonunun sekil3d sınıfında bulunması söylendi. Kalıtımı doğru yapmama rağmen sekilPtr üzerinden sekil3d sınıfında bulunan hacim değişkenine veya getHacim fonksiyonuna erişim sağlayamamaktayım.
Örnek vermem gerekirse getToplamHacim içerisinde şu şekilde bir kullanım yapmam gerekiyor:
C++:
toplamHacim = sekilPtr[0]->getHacim() + sekilPtr[1]->getHacim() + sekilPtr[2]->getHacim();
Son düzenleyen: Moderatör: