Pomoc z kodem - dziedziczenie i inne

0

Cześć

Mam do wykonania pewne zadanie którego treść brzmi: "Stwórz klasę Elipsa z polami: Środek(typu Punkt - klasa z dwoma polami typu int X,Y oraz konstruktorem dwuargumentowym) oraz dwoma polami typu double A i B(półoś wielka i półoś mała elipsy). Klasa ma mieć konstruktor domyślny. Utwórz klasę Kolo dziedziczącą po klasie Elipsa. W klasie Kolo utwórz metodę Pole, która oblicza pole koła wykorzystując pole A(promień koła). W programie utwórz obiekt klasy Kolo, nadaj wartość jego polom i wywołaj metodę Pole."

Zaczynając udało mi się napisać coś takiego jednak wiele mi brakuje do poprawnego działania:

#include <iostream>

using namespace std;

class Elipsa
{
public:

    int x;
    int y;
    double A;
    double B;

    Elipsa(){} // konstruktor domyslny

    Punkt(int x, int y) // konstruktor argumentowy
    {
        this->x=x;
        this->y=y;
    }

};

class Kolo : public Elipsa
{
public:

    double pole_kola;

    double Kolo::Pole() // metoda pole
    {
        pole_kola = 3.14 * A * A;
    }

};

int main()
{
    Kolo obiekt_kolo; //stworzenie obiektu

    obiekt_kolo.

    return 0;
}

Tutaj także rodzą się moje pytania. Jak należy skonstruować metodę Pole, by obliczała pole koła wykorzystując pole A z klasy Elipsa, a także jak mam dobrać odpowiednie argumenty do tej metody. Dodatkowo nie rozumiem części zadania która jest po utworzeniu obiektu klasy tzn. mam nadać wartość jego polom, ale nie wiem jakie pola przyjmuje ten obiekt. Również nie jestem pewien poprawności reszty kodu jako tako.

Czy mógłby ktoś pomóc rozjaśnić sytuację?

Pozdrawiam

1

Napisałeś konstruktor klasy Punkt, ale jej nie zadeklarowałeś.

class Punkt
{
public:
    // tutaj wklej konstruktor
    int x;
    int y;
};
Punkt srodek; // składnik klasy Elipsa

Konstruktor klasy Elipsa z parametrami powinien wyglądać tak:

// konstruktor argumentowy
Elipsa(int srodek_x, int srodek_y, double polos_wielka, double polos_mala):
    // lista inicjalizacyjna:
    srodek(srodek_x, srodek_y),
    A(polos_wielka),
    B(polos_mala)
{}
Lamash napisał(a):

Jak należy skonstruować metodę Pole, by obliczała pole koła wykorzystując pole A z klasy Elipsa, a także jak mam dobrać odpowiednie argumenty do tej metody

Składnik A znajduje się w sekcji public klasy Elipsa, więc jest dostępny dla klas dziedziczących.
Wszystkie potrzebne wartości do obliczenia pola są już w klasie Elipsa, więc nie trzeba dodawać żadnych argumentów.

double Pole() const
{
    return 3.14 * A * A;
}
Lamash napisał(a):

Dodatkowo nie rozumiem części zadania która jest po utworzeniu obiektu klasy tzn. mam nadać wartość jego polom, ale nie wiem jakie pola przyjmuje ten obiekt.

Do klasy Kolo dopisz konstruktor, który wywoła konstruktor klasy Elipsa:

Kolo(int srodek_x, int srodek_y, double promien):
    Elipsa(srodek_x, srodek_y, promien, promien)
{}

Tworzenie obiektu:

Kolo obiekt_kolo(2, 3, 4.0);
std::cout << "Pole koła wynosi: " << obiekt_kolo.Pole() << "\n";

1 użytkowników online, w tym zalogowanych: 0, gości: 1