Dzień dobry,
mam problem z wielodziedziczeniem w C#. Wiem, że można to ominąć stosując interface, ale nie mogę sobie z tym poradzić i nie bardzo wiem gdzie robię błąd. Poniżej zamieszczę kod dwóch klas, z której jedna ma dziedziczyć po drugiej. Przepisuje projekt z C++ na C# i część kodu znajduje się jeszcze w C++. Proszę o jakieś wskazówki. Pozdrawiam.
Klasa Lot:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.StringBuilder;
namespace Buczkowski_projekt2
{
interface I_informacje
{
static string informacje_lot();
}
interface Dane
{
public Dane();
public int ileWolnych();
public string kierunek_get();
public string start_get();
public double jakaCena();
public string toCSV();
}
class Lot
{
private string start;
private string kierunek;
private string linie_lot;
private string data_godz;
public int wolne_miejsca;
private double cena_za_miejsce;
public Lot(string punkt_startowy, string kier, string nazwa_linii, int wolne_msc, string kiedy, double cenaZaMiejsce)
{
start = punkt_startowy;
kierunek = kier;
linie_lot = nazwa_linii;
wolne_miejsca = wolne_msc;
data_godz = kiedy;
cena_za_miejsce = cenaZaMiejsce;
}
public int ileWolnych()
{
return wolne_miejsca;
}
public string kierunek_get()
{
return kierunek;
}
public string start_get()
{
return start;
}
public double jakaCena()
{
return cena_za_miejsce;
}
public static string informacje_lot()
{
StringBuilder info = new StringBuilder();
info.Append("Start: " + start + "\nPunkt docelowy: " + kierunek + "\n");
info.Append("Data i godzina lotu: " + data_godz + "\n");
info.Append("Linie lotnicze: " + linie_lot + "\n");
info.Append("Wolne miejsca: " + wolne_miejsca + "\n");
info.Append("Cena za miejsce: " + cena_za_miejsce + "\n");
return (info.ToString());
}
public string toCSV()
{
StringBuilder s = new StringBuilder();
s.Append(start);
s.Append(";");
s.Append(linie_lot);
s.Append(";");
s.Append(wolne_miejsca);
s.Append(";");
s.Append(data_godz);
s.Append(";");
s.Append(cena_za_miejsce);
return (s.ToString());
}
}
}
Klasa Bilet:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.StringBuilder;
namespace Buczkowski_projekt2
{
class Bilet : Pasazer, I_informacje, Dane
{
private int id_biletu;
private double cena;
public string informacje()
{
StringBuilder info = new StringBuilder();
info.Append("Rezerwacja na: " + imie_get() + " " + nazwisko_get() + "\n");
info.Append("Informacje o locie: \n" + Lot.I_informacje() + "\n");
info.Append("Cena: " + cena + "\n");
info.Append("ID biletu: " + id_biletu + "\nProsze zapisac ID, w innym razie nie bedzie mozna anulowac rezerwacji!\n");
return (info.ToString());
}
public int ID_get()
{
return id_biletu;
}
public Lot lot_get()
{
return &(Lot)(*this);
}
public Bilet(Pasazer pas, Lot l, double koszt_biletu, int ID)
: base(pas, l)
{
cena = koszt_biletu;
id_biletu = ID;
Lot.wolne_miejsca = Lot.wolne_miejsca - 1;
}
public void anulujBilet()
{
wolne_miejsca.ileWolnych();
wolne_miejsca = wolne_miejsca + 1;
}
public string toCSV()
{
StringBuilder ss;
ss.Append(Pasazer.toCSV + ";" + Lot.toCSV + ";" + cena + ";" + id_biletu);
return (ss.ToString());
}
}
}