Czesc,
Mam dwie klasy, z ktorych jedna dziedziczy po drugiej. Chcialbym aby wlasciwosc X oraz Y nie bylo dostepne z zewnatrz, tj. zeby nie mozna bylo stworzyc obiektu klasy Punkt i odwolac sie do X i Y ale chcialbym aby w klasie Odcinek, metoda ObliczDlugoscOdcinka miala dostep do X i Y. Czy jest to wgl mozliwa konstrukcja ? Przy zastosowaniu Protected niestety nie moge sie odwolac do X we wspomniaje wczesniej metodzie a przy zastosowniu Protected Internal moge sie odwolac do X z poziomu metody Main czego rowniez nie chce.
Czy stosowanie modyfikatora dostepu jakim jest Internal ma wgl sens gdy pracuje w jednej bibliotece ?
Tak na koniec chcialem tylko zapytac, wydaje mi sie ze glupie pytanie no ale jestem poczatkujacym programista i stad ta niewiedza, ktora chce uzupelnic. Biblioteka a Przesten Nazw to dwie rozne rzeczy nie ?
Pozdrawiam i licze na wyrozumialosc :v
class Punkt
{
protected int X { get; set; }
protected internal int Y { get; set; }
public Punkt(int _x, int _y)
{
this.X = _x;
this.Y = _y;
}
public void Przesun(int nowyX, int nowyY)
{
X += nowyX;
Y += nowyY;
}
public void Wyswietl()
{
System.Console.WriteLine("Aktualne wspolrzedne wynosza: [{0}, {1}]", X, Y);
}
static public void SprawdzCzyLezaNaJednejProstej(Punkt[] _tab)
{
double ab, ac;
ab = (_tab[1].Y - _tab[0].Y) / (_tab[1].X - _tab[0].X);
ac = (_tab[2].Y - _tab[1].Y) / (_tab[2].X - _tab[1].X);
if (ab == ac)
{
System.Console.WriteLine("Punkty sa wspoliniowe");
}
else
{
System.Console.WriteLine("Punkty nie sa wspoliniowe");
}
}
}
class Odcinek : Punkt
{
// public int Ox { get; set; }
// public int Oy { get; set; }
public Odcinek(int _x, int _y) : base(_x, _y)
{
// this.Ox = _x;
// this.Oy = _y;
}
static public void ObliczDlugoscOdcinka(Punkt p1, Punkt p2)
{
double dlugoscOdcinka;
dlugoscOdcinka = Math.Sqrt(((p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y)));
System.Console.WriteLine("Dlugosc odcinka wynosi: {0}", dlugoscOdcinka);
}
}