C# Wielodziedziczenie

0

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());
        }
    }
}
0

Najpierw pytanie w jakim celu przepisujesz z kodu C++ na C#?

0

Od kiedy Bilet jest rodzajem Pasażera, że z niego dziedziczy?

0

Takie mam zadanie na laboratoriach z programowania, gdzie uczyliśmy się głównie c++, a c# jest dodatkowo. Pasażer to inna klasa z której bilet dziedziczy dane osobowe.

0

NIE! pasażer nie powinien dziedziczyć po bilecie. pasażer nie jest rodzajem biletu!

dodaj pole typu Bilet w klasie Pasażer.

0

@Azarien albo odwrotnie Pasażer w klasie bilet (jako jego posiadacz), zależy od kontekstu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1