Programowanie obiektowe

0

Napisz klasę Funkcja, w której zdefiniujesz:

prywatne pole x;
publiczną czysto wirtualną metodę value zwracającą wartość funkcji w punkcie x;
Napisz klasy pochodne określające funkcje: liniową, kwadratową, sinusoidalną. W razie potrzeby dodaj do klas odpowiednie metody. Napisz funkcję main, w której przetestujesz napisane klasy.

Czy dobry jest początek ? I czy poprawnie jest udostępnione prywatne pole x ?


using namespace std;

class Funkcja{
	
	private:
	float x;
	public:
	virtual void pole()=0;
	Funkcja(float x)
{
	this->x=x=1;
}
	void set_x(float x)
	{
		this->x = x;
	}
	int get_x()
	{
		return x;
	}
};


class Liniowa : public Funkcja{

	
	public:
		
		void pole()
		{
			this->set_x(2.0);
		}					
	
	
};

class Kwadratowa : public Funkcja
{

	

	
};

class Sinusoida : public Funkcja{
	public: 
	virtual void pole(){
		cout<<"Sinusoida "<<1<<endl;
	}
};```
0

Wrzuć kod jako sformatowany bo nic nie widać.

0

Nie udostępniasz nigdzie prywatnego pola (zresztą zadanie jest bez sensu, po co to pole jest w ogóle?)

Zadanie wymaga abyś zdefiniował funkcję obliczającą wartość w punkcie X. Na razie takiej funkcji nie masz. Jest funkcja pole(), ale ona 1) jest bezsensownie nazwana, 2) nic nie zwraca.

0

To od czego w takim razie powinienem zrobić

0

Zdefiniuj funkcję zwracającą wartość. Pewnie powinna nazywać się value() albo wartosc() albo jakoś tak, aby wskazywała na to co robi. Typem zwracanym (i przyjmowanym) zapewne powinno być double

0
#include <iostream>

using namespace std;

class Funckja
{
	private:
	int x;	
	public:
		virtual double value()
		{
			return x;
		};
};

0

Funkcja miała być czysto wirtualna. Ech, teraz rozumiem, zamiast implementować to w sensowny sposób, musisz przekazać w konstruktorze wartość do x, a potem pobrać to za pomocą protected gettera wartość x w nadpisaniu funkcji wirtualnej. Słabe to zadanie.

0
#include <iostream>

using namespace std;

class Funckja
{
	private:
	int x;	
	public:
		virtual void value()=0;
		
};

  • mam funkcję czysto wirtualna. Jak dostać się teraz do private x ?
0

Zrób metodę z zakresem widoczności protected (albo public) zwracającą wartość x.

0
#include <iostream>

using namespace std;

class Funckja
{
	private:
	int x;	
	public:
	
virtual void value()=0;
	void set_x(int nx)
	{
	x = nx;		
	}
	
	int get_x(){ return x;	}
			
};

*ok , co dalej

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