Öncelikle uzun bir aradan sonra herkese merhaba :)
Geçenlerde iş için bir mülakata girdim. Orada bir el nesnesinin parmak nesnesi kullanarak modellenmesini sordular. Benim çözümüm şuna benzer bir şeydi:
#include <iostream>
#include <vector>
using namespace std;
class Vector3 { /* ... */ };
class Parmak
{
public:
Parmak(int no)
:no_(no)
{}
void hareketEt(Vector3 nereden, Vector3 nereye)
{
cout << no_ << " numaralı parmak hareket ediyor" << '\n';
}
private:
int no_;
};
typedef vector<Parmak *> Parmaklar;
class El
{
const int parmakSayisi_;
Parmaklar parmaklar_;
public:
El(int parmakSayisi)
: parmakSayisi_(parmakSayisi)
{
for (int i = 0; i < parmakSayisi; ++i)
{
parmaklar_.push_back(new Parmak(i));
}
}
void hareketEt(Vector3 nereden, Vector3 nereye)
{
Parmaklar::iterator konum;
for (konum = parmaklar_.begin(); konum != parmaklar_.end(); ++konum)
{
(*konum)->hareketEt(nereden, nereye);
}
}
};
int main()
{
const Vector3 nereden;
const Vector3 nereye;
El robotEli = El(5);
robotEli.hareketEt(nereden, nereye);
}
Aslında bu eli gerçek bir robot eli olarak düşünürsek elin hareketEt() işlevi parmakları hareket ettirmek yerine başka bir konuma hareket edebilir. Ya da baş parmağın hareketEt() işlevi ile diğer parmakların hareketEt() işlevleri farklı olabilir. Çünkü baş parmakta tek bir eklem diğer parmaklarda iki eklem var.
Ya da robot sadece bir parmağını hareket ettirmek isteyebilir. O zaman her parmağın da konum bilgisini ayrı tutmalıyız.
Tabi tüm bunları biraz da sohbet olsun diye yazıyorum ;-)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]