Mam problem z kilkoma rzeczami. Napisalem program (kod ponizej) z klasami punkt odcinek prostokat kolo
kazda po kolei dziedziczy z poprzednich i zawiera metody odpowiednie dla obiektu typu oblicz pole.
Gdy probuje wywolac ktoras z metod wyskakuje mi blad
Error 1 An object reference is required for the non-static field, method, or property 'ConsoleApplication3.Prostokat.obwodPr()' 153 13 ConsoleApplication3
Error 2 An object reference is required for the non-static field, method, or property 'ConsoleApplication3.Odcinek.szerokosc()' 154 13 ConsoleApplication3
taki sam blad wyskakiwal przy podawaniu wspolrzednych
zanim utworzylem po raz 2 obiekty (punkty A B C D)
bylbym wdzieczny gdyby ktos wyjasnil mi o co chodzi w tych bledach
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
public class ObiektGraficzny
{
}
public class Punkt : ObiektGraficzny
{
public double x, y;
public Punkt() // konstruktor domyslny
{
// x1 = a1;
// y1 = b2;
}
}
public class Odcinek : Punkt
{
public Punkt A = new Punkt(); // agregacje -
public Punkt B = new Punkt(); // odcinek zawiera 2 obiekty typu punkt
public double szerokosc() // metoda szerokosc liczy dlugosc odcinka ze wzoru
{
double d1;
d1 = Math.Sqrt(((B.x - A.x) * (B.x - A.x)) + ((B.y - A.y) * (B.y - A.y)));
return d1;
}
}
public class Prostokat : Odcinek // klasa Prostokat dziedziczy punkty A i B
{
public Punkt C = new Punkt(); // dodane 2 punkty C i D tworza prostokat
public Punkt D = new Punkt(); // z punktami A i B
public double wysokosc()
{
double d2;
d2 = Math.Sqrt(((D.x - A.x) * (D.x - A.x)) + ((D.y - A.y) * (D.y - A.y)));
return d2;
}
public double obwodPr()
{
double obwodPr;
obwodPr = 2 * szerokosc() + 2 * wysokosc();
return obwodPr;
}
public double PolePr()
{
double pole1;
pole1 = szerokosc() * wysokosc();
return pole1;
}
}
public class Okrag : Odcinek
{
public double ObwodK()
{
double obwodK;
obwodK = 2 * Math.PI * szerokosc();
return obwodK;
}
public double PoleK()
{
double PoleKo;
PoleKo = Math.PI * szerokosc() * szerokosc();
return PoleKo;
}
}
class Program : Prostokat
{
public void przesun(double dx, double dy)
{
Console.WriteLine("Podaj wspolrzedna x wektora przesuniecia");
dx = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Podaj wspolrzedna y wektora przesuniecia");
dy = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Wektor przesuniecia [{0},{1}]", dx, dy);
A.x += dx;
B.x += dx;
C.x += dx;
D.x += dx;
A.y += dy;
B.y += dy;
C.y += dy;
D.y += dy;
}
static void Main(string[] args)
{
Punkt A = new Punkt();
Punkt B = new Punkt();
Punkt C = new Punkt();
Punkt D = new Punkt();
Console.WriteLine("Podaj współrzedne punktu A");
Console.Write("x :");
A.x = Double.Parse(Console.ReadLine());
Console.Write("y :");
A.y = Double.Parse(Console.ReadLine());
Console.WriteLine("Podaj współrzedne punktu B");
Console.Write("x :");
B.x = Double.Parse(Console.ReadLine());
Console.Write("y :");
B.y = Double.Parse(Console.ReadLine());
Console.WriteLine("Podaj współrzedne punktu C");
Console.Write("x :");
C.x = Double.Parse(Console.ReadLine());
Console.Write("y :");
C.y = Double.Parse(Console.ReadLine());
Console.WriteLine("Podaj współrzedne punktu D");
Console.Write("x :");
D.x = Double.Parse(Console.ReadLine());
Console.Write("y :");
D.y = Double.Parse(Console.ReadLine());
szerokosc();
obwodPr();
Console.Read();
}
}
}