Tam Sürümünü Görmek İçin : c++ odevi(polymorphism)
Implement a shape hierarchy with Shape as an abstract base class that has pure virtual methods draw and resize. Derived classes should include Point, Line, Circle, Triangle and Rectangle.
Each derived class implements the draw method to print out an appropriate representation of an object in the class and the resize method to change an object’s initial size.
In main() implement a menu for user to select which object to be created and give input values for the dimensions. Call draw and resize methods for objects.
Arkadaslar son gune kadar bekledim yapmak icin baya bir caba sarfettim ama yapamadim konuyu tekrar dinlemek icin de hocanin yanina gidecegim ama not kaybim olmamasi icin uzulerek kendim yapmam gereken bir programi siz dostlarima soruyorum.Cevaplariniz icin simdiden tesekkurler.
acehreli
25/04/2007, 20:55
Dostlarin? Ben cikartamadim... :( Herhalde ilk mesajin oldugu icin... Artik dostuz ama :)
Ingilizcesini mi anlamiyorsun acaba? Cunku metinde ne yapilacagini anlatmislar. Tek aciklamadiklari, "appropriate representation"... Seklin "uygun bir gosterimi" su bile olabilir:
void Line::draw() const
{
cout << length_ << "cm-long line\n";
}
Simdilik oyle yap; sonra doldurursun.
Ali
Ilk mesajimda sicak bir giris yapmak istedim bu nedenle dostlarim demistim :).yukarida verdigin kod parcasi yaptigimiz sekli ekrana bastiracak kod parcasi mi acaba.Aslinda ben programin geneli hakkinda bir yardim almak istemistim..
acehreli
25/04/2007, 23:45
Aslinda coksekilligin en basit orneklerinden birisi bu odev.
Bir tane arayuz sinifi olusturacaksin. Bu sinifin draw ve resize islevleri 'pure virtual' olacak. Yani basinda 'virtual', sonunda da "= 0" olacak.
Bu siniftan o arayuzu gerceklestiren siniflar tureteceksin ve o siniflarda draw ve resize islevlerini tanimlayacaksin. Ornegin, Line sinifini tanimlayacaksin...
Benim verdigim draw ornegi, salt ekrana bir sey ciksin diyeydi. Eger bir cizim kutuphanesine erisimin varsa, sekilleri onunla da cizebilirsin.
Ali
Anladığım kadar hocanın Çok biçimliliği, Soyut sınıf ve saf sanal fonksiyonları konusunda bilginizi öğrenmek istediğinden böyle bir ödev vermiş olmalı.
Biraz yardımcı olalım
Bir sınıf Saf sanal fonksiyona sahipse bu türden sınıflara soyut sınıf denir.
Bu sınıftan nesne yaratılamaz,
Bu türden sınıfların kurucu fonksiyonları olmaz,
Bu sınıf kendisinden türetilmiş sınıflara ara yüz olur,
Ayrıca bu sınıftan türetilmiş sınfların tanımıda aynı adlı fonksiyon ezilmelidir, (tanımlanmalıdır)
Aksi taktirde türetilmiş sınıfta soyut sınıf olur.
Soyut sınıfta saf sanal fonksiyon aşağıdaki gibi deklare et ve bunların tanımlamalarını yapma türetilmiş sınıflar içerisinde yeniden deklare et ve ve tanımlamaların yap,
class shape{
virtual void draw() const = 0;
virtual void resize() const = 0;
}
şimdide Çizgi sınıfını shape temel sınıfından türeterek tanımlayalım draw ve resize fonksiyonlarını ezelim
class Line: public shape
{
virtual void draw()const;
virtual void resize()const;
//....
.
.
.
}
//bu fonksiyonların tanımlamasını yapalım
void Line::draw() const
{
cout << length_ << "cm-long line\n";
}
gibi tanımlamalısın
bundan sonra shape temel sınıfından bir gösterici tanımlayarak bu göstericiye çalışma zamanı ister silindir ister çigi kare sınıfların nesnelerini atayarak bu nesnelerin özelliklerini kullanabileceksin tek bir göstericiyle türetmenin herhengi bir basamağında istediğin nesne işlemlerini geçekleştirebileceksin.
umarım yardımcı olmuşumdur.
Kolay gelsin
acehreli
26/04/2007, 03:27
Saf sanal nesne olusturamayiz ama o sinifin da kurucusu olabilir:
#include <iostream>
class SafSanal
{
public:
SafSanal(int sayi)
{
std::cout << "SafSanal " << sayi << " ile kuruldu\n";
}
virtual void foo() const = 0;
};
class Tureyen : public SafSanal
{
public:
Tureyen()
:
SafSanal(42)
{}
virtual void foo() const
{
std::cout << "foo\n";
}
};
void bar(const SafSanal & arayuz)
{
arayuz.foo();
}
int main()
{
bar(Tureyen());
}
Ali
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.