Deneme Tahtası

Gentoo Linux Wiki sitesinden

Git ve: kullan, ara

Bu bir deneme sayfasıdır

G.png

#include <iostream>
using std::cout;
using std::auto_ptr;
 
struct Nokta
{
    double x, y;
};
 
struct Dikdortgen
{
    double x, y, w, h;
};
 
// Hayali bir sınıf :o
 
class Arac
{
 
public:
 
    virtual ~Arac ()
    {}
 
    virtual void fareTiklandiginda (const Nokta & nokta) = 0;
    virtual Nokta noktaOgren () const = 0;
};
 
class Kalem : public Arac
{
    Nokta nokta_;
    bool fareBasiliMi_;
 
public:
 
    Kalem ()
  : fareBasiliMi_ (false)
    {}
 
    virtual void fareTiklandiginda (const Nokta & nokta)
    {
        nokta_ = nokta;
        cout << "Bitis noktası (" << nokta_.x << ","<< nokta_.y << ") "
             << "olan bir cizgi ciziyorum!" << '\n';
        fareBasiliMi_ = true;
    }
 
    Nokta noktaOgren () const { return nokta_; }
 
};
 
class Secim : public Arac
{
    Nokta nokta_;
    bool fareBasiliMi_;
    Dikdortgen secim_;
 
public:
 
    Secim ()
  : fareBasiliMi_ (false)
    {}
 
    Secim (const Nokta & nokta)
  : nokta_ (nokta)
    {}
 
    virtual void fareTiklandiginda (const Nokta & nokta)
    {
        secim_.x = nokta_.x;
        secim_.y = nokta_.y;
        secim_.w = nokta.x;
        secim_.h = nokta.y;
 
        cout << "Baslangic noktasi ("
             << secim_.x << "," << secim_.y << ") "
             << "bitis noktasi ("
             << secim_.w << "," << secim_.h << ") "
             << "olan bir dikdörtgen ciziyorum" << '\n';
        nokta_ = nokta;
    }
 
    Nokta noktaOgren () const
    {
        return nokta_;
    }
 
};
 
class Cizici
{
    auto_ptr<Arac> arac_;
    Nokta nokta_;
 
 
    Cizici (Cizici const &);
    Cizici & operator= (Cizici const &);
 
public:
 
    Cizici ()
  : arac_ (new Kalem)
    {}
 
    void fareTiklandiginda (const Nokta & nokta)
    {
        arac_->fareTiklandiginda (nokta);
    }
 
    void secimAraciniSec ()
    {
        nokta_ = arac_->noktaOgren ();
        arac_.reset (new Secim (nokta_));
    }
};
 
 
int main ()
{
    Cizici cizici;
    Nokta nokta = {3, 5};
 
    cizici.fareTiklandiginda (nokta);
    cizici.secimAraciniSec ();
 
    nokta.x = 7;
    nokta.y = 10;
 
    cizici.fareTiklandiginda (nokta);
 
}

Bu bir denemedir