Vererbung rechte



  • also ich habe vor einen Graphiceditor zu schreiben, habe auch schon ziemlich genau im kopf wie ich das machen werde(mit polymorphie).

    Ich habe nun eine klasse Form geschrieben, in der der rahmen der figur(Quadrat, Kreis, Dreieck, egal) gespeichert ist.

    #ifndef FORM_H
    #define FORM_H
    
    #include "Point.h"
    
    class Form
    {
    private:
    	Point center;
    	Point lt;
    	Point rb;
    	void setCenter();
    public:
    	Form(Point leftTop,Point rightBottom);
    	Form(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2);
    
    	Point getLeftTop() const {return lt;}
    	Point getRightBottom() const {return rb;}
    	Point getCenter() const {return center;}
    
    	void setLeftTop(const Point& leftTop);
    	void setLeftTop(unsigned short x1, unsigned short y1);
    	void setRightBottom(const Point& rightBottom);
    	void setRightBottom(unsigned short x2, unsigned short y2);
    	void setAll(const Point& leftTop, const Point& rightBottom);
    	void setAll(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2);
    
    //weiter funktionen, unteranderem zum zeichnen des rahmens um die figur herum
    };
    
    void Form::setCenter()
    {
    	center.setXYCoord((rb.getXCoord() - lt.getXCoord())/2,(rb.getYCoord() - lt.getYCoord())/2);
    }
    
    Form::Form(Point leftTop, Point rightBottom)
    :lt(leftTop),rb(rightBottom)
    {
    	setCenter();
    }
    
    Form::Form(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2)
    {
    	lt.setXYCoord(x1,y1);
    	rb.setXYCoord(x2,y2);
    	setCenter();
    }
    
    void Form::setLeftTop(const Point& leftTop)
    {
    	lt = leftTop;
    	setCenter();
    }
    
    void Form::setLeftTop(unsigned short x1, unsigned short y1)
    {
    	lt.setXYCoord(x1,y1);
    	setCenter();
    }
    
    void Form::setRightBottom(const Point& rightBottom)
    {
    	rb = rightBottom;
    	setCenter();
    }
    
    void Form::setRightBottom(unsigned short x2, unsigned short y2)
    {
    	rb.setXYCoord(x2,y2);
    	setCenter();
    }
    
    void Form::setAll(const Point& leftTop, const Point& rightBottom)
    {
    	lt = leftTop;
    	rb = rightBottom;
    	setCenter();
    }
    
    void Form::setAll(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2)
    {
    	lt.setXYCoord(x1,y1);
    	rb.setXYCoord(x2,y2);
    	setCenter();
    }
    
    #endif
    

    Nun weiß ich aber nicht ob ich den klassen die davon erben, freien zugriff auf die Point leftTop und rightBottom geben soll(also in protected). Dass Center privat ist, ist sicher, da dies diese klasse übernehmen soll. Das problem ist dass ich nicht weiß ob der benutzer daran denkt dann setCenter aufzurufen, nachdem er die werte verändert hat.

    Darum wollte ich mal eure meinung fragen wie man das am besten aufbaut 🙂



  • Ich dachte du willst einen Grafik-Editor schreiben, dann bist doch du der Anwender, dann mach es doch fürs Erste so eingeschränkt wie möglich und wenn du siehst du brauchst zusätzliche Methoden, dann kannst du diese ja hinzufügen oder zugänglich machen 🙂



  • ok danke^^


Anmelden zum Antworten