Deneme Tahtası
Gentoo Linux Wiki sitesinden
Bu bir deneme sayfasıdır
#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
