Hirdetés

Új hozzászólás Aktív témák

  • Lakers

    tag

    Sziasztok!

    Kiírásnál estem gondolkodba, elkezdtem probálgatni.
    Itt van néhány kódrészlet:

    abstract class Allat
    {
    private int suly;

    public static int AdoAlap; // megosztott: minden egyes példány ugyanazt látja
    public abstract void Hangoskodik();
    public abstract double Ado { get; }

    public int Suly
    {
    get { return this.suly; }
    protected set { this.suly = value; }
    }
    public virtual void Hizlal(int deka)
    {
    Suly += deka;
    if (this.Suly > 200)
    Suly = 200;
    }
    } class Sertes:Allat {
    public uint MalacSzam;


    public override void Hangoskodik()
    {
    Console.WriteLine("röf-röf");
    }

    public override double Ado
    {
    get { return AdoAlap * 2 * Suly / 5000; }
    }
    public override void Hizlal(int deka)
    {
    Suly+=deka;
    } }

    és még a főprogramban:

    Sertes s = new Sertes();
    s.MalacSzam = 4;
    s.Hizlal(25000);


    for (int i = 0; i < 5; i++)
    {
    udvar.Add(s);

    }

    ...
    Sertes disznocska = at as Sertes; //Ha at változóban Sertes példány volt
    if (disznocska !=null)
    {
    Console.WriteLine("Súly: {0} Adó: {1} Malac Száma: {2}",
    disznocska.Suly,
    disznocska.Ado,
    disznocska.MalacSzam);
    }
    ...

    Ez ideig rendben van. A MalacSzam (ami sorszám lenne), és a Sulyt is (hízlal metóduson keresztül) mindegyiknél ugyanaz.

    Viszont elkezdtem próbálgatni, és más kis rész feladatotak kitalálni rá:

    s.Hizlal(25000);

    for (int i = 0; i < 5; i++)
    {
    udvar.Add(s);
    s.MalacSzam += 1;


    }

    Akkor a súlya 125000 lesz ez okés és. De a MalacSzam mindenütt 5 lesz... Ez miért következett be?
    Mert én úgy akartam, hogy a MalacSzam mint sorszam, kiíratásnál 1,2,3,4 legyen.
    Ezt hogyan lehet megvalósítani?
    (lehet a C után az objektum orientált gondolkodásom még nem az igazi, vagy csak pusztán amatőr hibát vétek)

Új hozzászólás Aktív témák