Új hozzászólás Aktív témák

  • cadtamas

    tag

    Sziasztok.
    A tanuljuk meg a c++ nyelvet 24 óra alatt c. könyvből tanulok és az osztályoknál járok.
    Van néhány dolog amit nem értek a példafeladatban.
    Ez a header. Ez tiszta.
    #pragma once

    # include <iostream>

    class Point
    {
    private:
    int itsX;
    int itsY;

    public:
    void setX(int x) { int itsX = x; }
    void setY(int y) { int itsY = y; }
    int getX() const { return itsX; }
    int getY() const { return itsY; }

    };

    class Rectangle
    {
    public:
    Rectangle(int top, int left, int bottom, int right);
    //~Rectangle();

    int getRight() const { return itsRight; }
    int getLeft() const { return itsLeft; }
    int getTop() const { return itsTop; }
    int getBottom() const { return itsBottom; }

    Point getUpperLeft() const { return itsUpperLeft; }
    Point getLowerLeft() const { return itsLowerLeft; }
    Point getUpperRight() const { return itsUpperRight; }
    Point getLowerRight() const { return itsLowerRight; }

    void setUpperLeft(Point location);
    void setLowerLeft(Point location);
    void setUpperRight(Point location);
    void setLowerRight(Point location);

    void setRight(int right);
    void setLeft(int left);
    void setTop(int top);
    void setBottom(int bottom);

    int getArea() const;

    private:
    int itsTop;
    int itsBottom;
    int itsLeft;
    int itsRight;
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerRight;
    Point itsLowerLeft;
    };

    Viszont itt több helyen elakadtam:
    #include "rect.h"

    Rectangle::Rectangle(int top, int left, int bottom, int right) //konstruktor, idáig rendben vagyunk
    {
    itsTop = top; //Ez elvileg az implementáció, amit nem taglal a könyv, hogy miért kell és később miért nem használjuk semmire.
    itsRight = right;
    itsLeft = left;
    itsBottom = bottom;

    itsUpperLeft.setX(left);
    itsUpperLeft.setY(top);

    itsUpperRight.setX(right);
    itsUpperRight.setY(top);

    itsLowerLeft.setX(left);
    itsLowerLeft.setY(bottom);

    itsLowerRight.setX(right);
    itsLowerRight.setY(bottom);
    }

    //ide kellene gondolom a destruktor, ami azért jó, mert memóriát szabadít fel?

    void Rectangle::setUpperLeft(Point location) //definiáljuk a függvényt
    {
    itsUpperLeft = location; //módosítja a változót ami elvileg az egyetlen feladata.
    itsUpperRight.setY(location.getY()); //módosítja a JobbFelső pont Y értékét, de miért???
    itsLowerLeft.setX(location.getX()); //módosítja a BalAlsó pont X értékét, de miért???
    itsTop = location.getY(); //a test felső vonalát határozza meg, de nem ez a dolga!!!
    itsLeft = location.getX(); //a test bal szélső vonalát határozza meg, de nem ez a dolga!!!
    }

    void Rectangle::setLowerLeft(Point location)
    {
    itsLowerLeft = location;
    itsLowerRight.setY(location.getY());
    itsUpperLeft.setX(location.getX());
    itsBottom = location.getY();
    itsLeft = location.getX();
    }

    void Rectangle::setLowerRight(Point location)
    {
    itsLowerRight = location;
    itsLowerLeft.setY(location.getY());
    itsUpperRight.setX(location.getX());
    itsBottom = location.getY();
    itsRight = location.getX();
    }

    void Rectangle::setUpperRight(Point location)
    {
    itsUpperRight = location;
    itsUpperLeft.setY(location.getY());
    itsLowerRight.setX(location.getX());
    itsTop = location.getY();
    itsRight = location.getX();
    }

    void Rectangle::setTop(int top) //beállítja a test felső vonalát. Ugyanazt mint a setUpperLeft() függvény. MIÉRT???
    {
    itsTop = top; //Ez lenne a dolga
    itsUpperLeft.setY(top); //Ez ugyanazt módosítja, mint a setUpperLeft() függvény. (Részben) De ez nem ennek a feladata...
    itsUpperRight.setY(top); //Ez ugyanazt módosítja, mint a setUpperRight() függvény. (Részben) De ez nem ennek a feladata...
    }

    void Rectangle::setLeft(int left)
    {
    itsLeft = left;
    itsUpperLeft.setX(left);
    itsLowerLeft.setX(left);
    }

    void Rectangle::setBottom(int bottom)
    {
    itsBottom = bottom;
    itsLowerLeft.setY(bottom);
    itsLowerRight.setY(bottom);
    }

    void Rectangle::setRight(int right)
    {
    itsRight = right;
    itsUpperRight.setX(right);
    itsLowerRight.setX(right);
    }

    int Rectangle::getArea() const
    {
    int width = itsRight - itsLeft;
    int height = itsTop - itsBottom;
    return (width*height);
    }

    int main()
    {
    Rectangle MyRectangle(100, 20, 50, 80); //Létrehozzuk a négyszöget

    int Area = MyRectangle.getArea();

    std::cout << "Terulet: " << Area << "\n";
    std::cout << "Bal felso pont x koordinataja: ";
    std::cout << MyRectangle.getUpperLeft().getX()<< std::endl; //ennek 20-nak kellene lennie, de nem annyi.
    system("pause");
    return 0;
    }

    Kommenteltem, ami nem világos. Tudnátok segíteni, hogy megértsem mi, miért történik?

Új hozzászólás Aktív témák