Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Polimorfizam i nasljedivanje u C#

[es] :: .NET :: .NET Desktop razvoj :: Polimorfizam i nasljedivanje u C#

[ Pregleda: 8351 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Polimorfizam i nasljedivanje u C#04.10.2006. u 20:03 - pre 213 meseci
Pls ako neko zna kak da ovo rjesim:
Fajl 1:
Code:

using System;
using System.Collections.Generic;
using System.Text;

public class Menu {
static void Main(string[] args) 
{
    int i;
    bool yon=true;
    Console.WriteLine("Unesi ime psa:");
    string name = Console.ReadLine();
    Pas mojpas = new Pas(name);
    Console.WriteLine("Unesi ime macke:");
    name = Console.ReadLine();
    Macka mojamacka = new Macka(name);
    Console.WriteLine("1-Ispisi ime psa");
    Console.WriteLine("2-Promjeni ime psa");
    Console.WriteLine("3-Ispisi ime macke");
    Console.WriteLine("4-Promjeni ime macke");
    while (yon)
    { i = Convert.ToInt32(Console.ReadLine());
    if (i == 1)
        mojpas.pricaj();

    if (i == 2)
    {
        Console.WriteLine("U koje ime zelite promjeniti njegovo ime?");
        string novoime = Console.ReadLine();
        mojpas.promjeni(novoime);
    }

    if (i == 3)
        mojamacka.pricaj();

    if (i == 4)
    {
        Console.WriteLine("U koje ime zelite promjeniti njegovo ime?");
        string novoime = Console.ReadLine();
        mojamacka.promjeni(novoime);
    }

    if (i == 0)
        yon=false;
    }
    Console.ReadLine();

}

Fajl 2:
Code:

using System;
public class Pas
{
public string ime;
public Pas(string imecucka)
{
ime = imecucka;
Console.WriteLine("Kupio si psa,a dje mu nadje ime {0}.", imecucka);
}
public void pricaj()
{
Console.WriteLine("Zovem se {0}.", ime);
}

public void promjeni(string unos)
{
ime = unos;
}
}

Fajl 3:
Code:

using System;

public class Macka : Pas
{
public Macka(string ime) : base(ime)
{
Console.WriteLine("Ja sam slatka maca,a zovem se {0}",ime);
}

}

.....................
Znaci imam jednu klasu Pas,te klasu Macka koja nasljeduje metode
od klase Pas.Kad instanciram klasu pas,poziva se konstruktor od klase
Pas,a kad instanciram klasu Macka,poziva se konstruktor od klase Pas,
pa onda konstruktor od klase Macka.
Ono sto ja zelim je da kad instanciram klasu Macka da se pozove samo
njen konstruktor,ne konstruktor od klase Pas i od klase Macka.
Ako neko zna,bio bih zahvalan,pozdrav..

[Ovu poruku je menjao X Files dana 04.10.2006. u 21:36 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
89.216.236.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Polimorfizam i nasljedivanje u C#04.10.2006. u 20:36 - pre 213 meseci
Ovo treba u .NET forum.
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Polimorfizam i nasljedivanje u C#04.10.2006. u 20:41 - pre 213 meseci
Pozivanje konstuktora bazne klase u konstuktoru izvedene je ispravan nacin, sto zelis postici izbjegavanjem toga?
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.medianis.net.



Profil

icon Re: Polimorfizam i nasljedivanje u C#04.10.2006. u 21:07 - pre 213 meseci
Citat:
Ovo treba u .NET forum.

Ova tema je i bila prebacena iz foruma C++ u .Net forum, neko je vratio izgleda.

Nego, da pokusamo ponovo.
 
Odgovor na temu

Zevs85
Zeljko Todorovic
Novi Sad, Sabac

Član broj: 24612
Poruke: 325
213.244.197.*



+21 Profil

icon Re: Polimorfizam i nasljedivanje u C#05.10.2006. u 00:42 - pre 213 meseci
Konstruktor sluzi za samo instanciranje objekta. Znaci inicijalizacija atributa klase. U konstruktoru se ne pise writeline ili tako nesto. To mozes koristiti eventualno za neku proveru.
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Polimorfizam i nasljedivanje u C#05.10.2006. u 07:19 - pre 213 meseci
Pa, mora da se pozove konstruktor bazne klase, jer se Mačka sastoji iz baznog "pas dela" i nasleđenog "mačka dela" (jeste da zvuči morbidno, ali takve si klase napravio)
(Kad je već ambivalentna tema : Kod C++-a pri višestrukom nasleđivanju može doći do situacije da se dvaput instancira isti deo objekta (jer je izvedena klasa po "nekom kolenu" nasledila jednu istu klasu). Ovo se eliminiše virtuelnim nasleđivanjem.)
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
*.finsoft.co.yu.

Sajt: www.vesic.org


+1 Profil

icon Re: Polimorfizam i nasljedivanje u C#05.10.2006. u 09:52 - pre 213 meseci
Kreiraj "prazni" konstruktor Pas klase:
Code:

        public Pas()
        {
        }


Dodaj posebni metod za postavljanje imena u Pas klasi:
Code:

        public void SetIme(string NovoIme) {
            ime = NovoIme;
        }


Promeni postojeći konstruktor Pas klase:
Code:

        public Pas(string imecucka)
        {
            SetIme(imecucka);
            Console.WriteLine("Kupio si psa,a dje mu nadje ime {0}.", imecucka);
        }


Promeni postojeći konstruktor Macka klase:
Code:

        public Macka(string ime)
        {
            SetIme(ime);
            Console.WriteLine("Ja sam slatka maca,a zovem se {0}", ime);
        }


(izostavi poziv :base konstruktora, time će se pozvati Pas konstruktor bez parametara)

 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9490
*.eunet.yu.



+10253 Profil

icon Re: Polimorfizam i nasljedivanje u C#08.10.2006. u 17:27 - pre 213 meseci
Dejan je, zapravo, napisao sta uraditi da sve izgleda kao da se nije pozvao konstruktor klase Pas, ali celo pitanje u stvari nema smisla. Ako klasa Macka nasledjuje klasu Pas, onda treba i mora da se pozove konstruktor klase Pas.

OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
212.200.220.*

Sajt: www.vesic.org


+1 Profil

icon Re: Polimorfizam i nasljedivanje u C#08.10.2006. u 21:56 - pre 213 meseci
Upravo obrnuto.

Preuredio sam klase tako da "class specific" ponašanje ide u konstruktore sa parametrima, a ponašanje zajedničko za sve klase ide u konstruktore bez parametara (default konstruktore).

Konstruktor klase Pas će biti pozvan (i treba) ali samo refaktorisanje klasa treba tako odraditi da je traženo ponašanje moguće.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Polimorfizam i nasljedivanje u C#09.10.2006. u 09:42 - pre 213 meseci
Mislim da je ovde problem u design pattern-u. Ovde je malo promasen. Nema smisla izvoditi klasu macka iz klase pas. Sta oni imaju zajednicko? Bilo bi smisla naledjivati klasu pas u, recimo, Doberman ili NemackiOvcar itd. Znaci neka vrsta specijalizacije "osnovnog" psa. Za ovaj problem sa mackom bi trebalo uvesti neku base klasu koja ce biti zajednicka i psu i macki. Recimo, KucniLjubimac. Ovo su same osnove objektnog programiranja i nasledjivanja i jedan od najcescih primera, po meni mozda i najbolje objasnjenih, je shape kalsa i njene izvedene klase.

http://www.codeproject.com/useritems/OpenClosePrinciple.asp
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: Polimorfizam i nasljedivanje u C#09.10.2006. u 10:49 - pre 213 meseci
Ma ovo sam ja tek tolko pisao da malo uvijezbam nasljedivanje.
Znam da je malo besmisleno,al ipak..
Napravio sam opciju sa dummy konstruktorom i to radi,radi u
svrhe koje sam ja radio,znam da je primjer glup i da macka nebi
trebala nasljediti od psa,nego npr. neke klase "Kucni ljubimac",od
koje bi nasljedio i pas,al sta ces,napravio sam glup primjer,al vazno
je da sam shvatio princip rada.
Hvala na odgovorima
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Polimorfizam i nasljedivanje u C#

[ Pregleda: 8351 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.