#ifndef LINEARFUNCTION_HEADERFILE
#define LINEARFUNCTION_HEADERFILE

#include <stdio.h>
#include <string>
#include "Domain.h"

class LinearFunction {

	private:
		Domain domain;
		float k, d;
		std::string name;

	public:
		LinearFunction();
		LinearFunction(const std::string& name);

		Domain* setDomain(bool flagLowerBoundaryExist, float lowerBoundary, bool flagUpperBoundaryExist, float upperBoundary); //bounded both-sided
		Domain* setDomain(bool flagLowerBoundaryExist, float lowerBoundary, bool flagUpperBoundaryExist); //bounded below
		Domain* setDomain(bool flagLowerBoundaryExist, bool flagUpperBoundaryExist, float upperBoundary); //bounded above
		Domain* setDomain(bool flagLowerBoundaryExist, bool flagUpperBoundaryExist);

		Domain* getDomain();

		std::string getName();

		bool setKandD(float k, float d);
		bool setKandD(float x1, float y1, float x2, float y2);
		float getK();
		float getD();

		float getY(float x);
};




#endif
