Witajcie,
Podczas nauki programowania napotkałam na problem dotyczący dziedziczenia w C#. Niestety do tej pory nie udało mi się znaleźć strony, na której temat ten był wytłumaczony z takim przykładem, abym samodzielnie mogła rozwiązać jedno zadanie, w związku z czym piszę tutaj, na forum.
Początkowo celem zadania było stworzenie klasy Punkt, zawierającej konstruktor, metodę umożliwiającą przesunięcie go o wybrane przez użytkownika współrzędne i ostatecznie wyświetlenie nowych współrzędnych.
Udało mi się to co prawda rozwiązać, ale chciałabym to zadanie rozwinąć dodatkowo o obliczanie długości odcinka (klasa Odcinek). I tu właśnie pojawia się problem - jak to zrobić? Jak przekazać współrzędne dwóch punktów do metody Dlugosc() i finalnie Przedstaw() co ma za zadanie przedstawić wynik w konsoli? Chciałabym jeszcze zaznaczyć, że muszą być obliczone długości co najmniej trzech odcinków, ponieważ w ostatnim etapie chciałabym wykorzystać te wartości do sprawdzenia czy punkty są współliniowe - miałaby powstać klasa Pole dziedzicząca po klasie Odcinek, gdzie będzie obliczane pole trójkąta ze wzoru Herona.
Mam jednak nadzieję, że do tego uda mi się już dojść samej na podstawie Waszych porad :).
Poniżej umieszczam kod programu, który napisałam do tej pory.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Punkt
{
class Punkt
{
protected int wsp_x;
protected int wsp_y;
protected double wynik;
public Punkt(int x, int y) //konstuktor
{
wsp_x = x;
wsp_y = y;
}
public int przes_xa { get; set; } //automatyczna właściwość
public int przes_ya { get; set; } //automatyczna właściwość
private int Przesun_x()
{
return wsp_x + przes_xa;
}
private int Przesun_y()
{
return wsp_y + przes_ya;
}
public void Wyswietl()
{
Console.WriteLine("Punkt A ma tertaz współrzedne x = " + Przesun_x() + ", y = " + Przesun_y());
}
}
class Odcinek : Punkt
{
public Odcinek(int x, int y) //konstuktor
{
wsp_xa = x;
wsp_ya = y;
}
private double Dlugosc()
{
return wynik = Math.Sqrt(Math.Pow((wsp_x - wsp_x), 2) + Math.Pow((wsp_y - wsp_y), 2));
}
public void Przedstaw()
{
Console.WriteLine("Długość odcinka wynosi " + Dlugosc());
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Podaj współrzędne punktu A");
Console.WriteLine("Współrzędna x");
int wsp_xa = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Współrzędna y");
int wsp_ya = Convert.ToInt32(Console.ReadLine());
Punkt punktA = new Punkt(wsp_xa, wsp_ya);
Console.WriteLine("Podaj o ile chcesz przesunąć punkt A");
Console.WriteLine("Przesunięcie wzdłuż osi x");
punktA.przes_xa = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Przesunięcie wzdłuż osi y");
punktA.przes_ya = Convert.ToInt32(Console.ReadLine());
punktA.Wyswietl();
Console.WriteLine("Podaj współrzędne punktu B");
Console.WriteLine("Współrzędna x");
int wsp_xb = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Współrzędna y");
int wsp_yb = Convert.ToInt32(Console.ReadLine());
Punkt punktB = new Punkt(wsp_xb, wsp_yb);
Console.WriteLine("Podaj współrzędne punktu C");
Console.WriteLine("Współrzędna x");
int wsp_xc = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Współrzędna y");
int wsp_yc = Convert.ToInt32(Console.ReadLine());
Punkt punktC = new Punkt(wsp_xc, wsp_yc);
Console.ReadKey();
}
}
}
Pozdrawiam i z góry dziękuję za pomoc! :)