Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 12.6.2013, 23:14   #1
Goonotora
Član
 
Član od: 15.10.2007.
Lokacija: Novi Beograd
Poruke: 145
Zahvalnice: 19
Zahvaljeno 4 puta na 4 poruka
Određen forumom C# zbunjujuci zadatak

Dobio sam zadatak u kome se pojavljuje nasleđivanje i polimorfizam. U zadatku je "data" klasa sa parametizovanim konstruktorom koji ima 2 string parametra. E sad, tu klasu nasleđuju dve klase koje isto imaju parametizovani konstruktor sa istim string parametrima.

Preciznije deo koda je ovde:
Kod:
class OsnovnaKlasa
{
protected double atribut1;
public string atribut2;
public string atribut3;
public virtual void Ispis(); //ovo je metoda koja ispisuje atribute 2 i 3
public OsnovnaKlasa(string parametar1, string parametar2)
 {
   atribut2=parametar1;
   atribut3=parametar2;
 }
}
class IzvedenaKlasa:OsnovnaKlasa
{
  public IzvedenaKlasa(string parametar1, string parametar2)
  {
     <da li ovde treba nov konstruktor, pošto ova klasa nasleđuje gornju>
  }
}
E sad, ako sam dobro shvatio na predavanjima, izvedene klase nasledjuju konstruktore od osnovne klase, a u zadatku stoji da izvedena klasa ima parametizovani konstruktor kojim se prosleđuju isti parametri kao i u osnovnoj. Da li je taj konstruktor izvedene klase zaseban, ili nije?

EDIT: U zadatku su svi parametri isti

Poslednja ispravka: Goonotora (12.6.2013 u 23:16) Razlog: Dopuna objasnjenja...
Goonotora je offline   Odgovor sa citatom ove poruke
Stara 12.6.2013, 23:35   #2
Lucic Nemanja
Starosedelac
 
Član od: 2.12.2005.
Lokacija: Beograd
Poruke: 1.241
Zahvalnice: 65
Zahvaljeno 76 puta na 49 poruka
Slanje poruke preko Skypea korisniku Lucic Nemanja
Određen forumom Re: C# zbunjujuci zadatak

Citat:
Goonotora kaže: Pregled poruke
Dobio sam zadatak u kome se pojavljuje nasleđivanje i polimorfizam. U zadatku je "data" klasa sa parametizovanim konstruktorom koji ima 2 string parametra. E sad, tu klasu nasleđuju dve klase koje isto imaju parametizovani konstruktor sa istim string parametrima.

Preciznije deo koda je ovde:
Kod:
class OsnovnaKlasa
{
protected double atribut1;
public string atribut2;
public string atribut3;
public virtual void Ispis(); //ovo je metoda koja ispisuje atribute 2 i 3
public OsnovnaKlasa(string parametar1, string parametar2)
 {
   atribut2=parametar1;
   atribut3=parametar2;
 }
}
class IzvedenaKlasa:OsnovnaKlasa
{
  public IzvedenaKlasa(string parametar1, string parametar2)
  {
     <da li ovde treba nov konstruktor, pošto ova klasa nasleđuje gornju>
  }
}
E sad, ako sam dobro shvatio na predavanjima, izvedene klase nasledjuju konstruktore od osnovne klase, a u zadatku stoji da izvedena klasa ima parametizovani konstruktor kojim se prosleđuju isti parametri kao i u osnovnoj. Da li je taj konstruktor izvedene klase zaseban, ili nije?

EDIT: U zadatku su svi parametri isti
Konstruktor izvedene i konstruktor osnovne klase su odvojeni konstruktori. Kada kreiraš objekat izvedene klase, prvo se poziva konstruktor osnovne, pa onda izvedene. Ako eksplicitno u konstruktoru izvedene ne pozoveš neki konstruktor osnovne, pozvaće se default konstruktor. Ako hoćeš da proslediš parametre iz konstruktora izvedene klase nekom konstruktoru osnovne sve što treba da uradiš je da dodaš u konstruktoru izvedene klase naredbu base(argumenti željenog konstruktora). U tvom primeru to bi izveo tako što bi u knostruktoru izvedene dodao base(parametar1, parametar2).
Nadam se da nisam bio previše zbunjujuć .
Lucic Nemanja je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Lucic Nemanja na korisnoj poruci:
Goonotora (12.6.2013)
Stara 12.6.2013, 23:44   #3
Goonotora
Član
 
Član od: 15.10.2007.
Lokacija: Novi Beograd
Poruke: 145
Zahvalnice: 19
Zahvaljeno 4 puta na 4 poruka
Određen forumom Re: C# zbunjujuci zadatak

Znaci, ta dva konstruktora su svaki za sebe, iako imaju identicne parametre koje ih prosledjuju? Jer u zadatku i jedan i drugi konstruktor bi trebalo da rade isto: prosledjuju se parametri tipa string i dodeljuju se odgovarajucim atributima prosledjene vrednosti (ovo stoji u opisu i osnovne i izvedene klase u zadatku). E sad, prema zadatku ispada da treba ovakav konstruktor da bude u izvedenim klasama:
Kod:
public IzvedenaKlasa(string parametar1, string parametar2)
{
 atribut2=parametar1;
 atribut3=parametar2;
}
Sledece pitanje bi bilo da li je ovo korektno? Jer ako pratim zadatak, ispada da treba da pravim dva konstruktora koja imaju potpuno identicno telo. E sad ako sam nesto propustio, onda sam stvarno havarisan.

Poslednja ispravka: Goonotora (12.6.2013 u 23:50) Razlog: Feeling...
Goonotora je offline   Odgovor sa citatom ove poruke
Stara 13.6.2013, 0:17   #4
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: C# zbunjujuci zadatak

Ako ti osnovna klasa ima sve potrebne parametre (tj ona koja nju nasledjuje nema nikakve dodatne koje bi morao da inicijalizujes pomocu konstruktora) dovoljno je da u konstruktoru pozoves konstruktor osnovne klase.

Kod:
public IzvedenaKlasa(string parametar1, string parametar2):base(parametar1,parametar2)
{

}
http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
Ivan452 je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Ivan452 na korisnoj poruci:
Goonotora (13.6.2013)
Stara 13.6.2013, 10:50   #5
Goonotora
Član
 
Član od: 15.10.2007.
Lokacija: Novi Beograd
Poruke: 145
Zahvalnice: 19
Zahvaljeno 4 puta na 4 poruka
Određen forumom Re: C# zbunjujuci zadatak

Citat:
Ivan452 kaže: Pregled poruke
Ako ti osnovna klasa ima sve potrebne parametre (tj ona koja nju nasledjuje nema nikakve dodatne koje bi morao da inicijalizujes pomocu konstruktora) dovoljno je da u konstruktoru pozoves konstruktor osnovne klase.

Kod:
public IzvedenaKlasa(string parametar1, string parametar2):base(parametar1,parametar2)
{

}
http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
Ne samo parametre, vec i identicne naredbe dodele. I tu meni nastaje zabuna. S jedne strane, sve sto je zahtevano u konstruktoru izvedene klase je vec uradjeno u konstruktoru osnovne klase. S druge strane, u zadatku stoji sledece (ovo je deo zadatka, da ne pisem ceo):

  1. Osnovna klasa: Jedna od clanica klase je parametizovani konstruktor kome se prosledjuju parametri ime i prezime tipa string i dodeljuju odgovarajucim atributima prosledjene vrednosti (ti atributi su istog imena kao i parametri, i deklarisani su u ovoj klasi).
  2. Izvedena klasa: od clanica ima redefinisanu metodu iz osnovne klase i ima parametizovani konstruktor kome se prosledjuju parametri kao u osnovnoj klasi i dodeljuju odgovarajucim atributima prosledjene vrednosti (isto kao i u osnovnoj, ti atributi su istog imena kao i parametri, ali NISU deklarisani u ovoj klasi, vec su nasledjeni iz osnovne klase).
Dakle, sledece pitanje je da li deo recenice koju sam boldovao treba da se uradi kao sto je Ivan452 uradio?
Goonotora je offline   Odgovor sa citatom ove poruke
Stara 13.6.2013, 11:45   #6
irreal
V.I.P. Programiranje
 
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
Određen forumom Re: C# zbunjujuci zadatak

Pa da, zadatak ti kaze da konstruktor izvedene klase treba da dodeli vrednosti u nasledjene parametre, dakle, treba samo da pozoves konstruktor osnovne klase i to je to.
irreal je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku irreal na korisnoj poruci:
Goonotora (13.6.2013)
Stara 13.6.2013, 13:33   #7
Goonotora
Član
 
Član od: 15.10.2007.
Lokacija: Novi Beograd
Poruke: 145
Zahvalnice: 19
Zahvaljeno 4 puta na 4 poruka
Određen forumom Re: C# zbunjujuci zadatak

Znaci, kao zakljucak, u konstruktor izvedene klase samo stavljam dodatne naredbe (one naredbe koje nisu u konstruktoru osnovne klase), recimo, u jednoj izvedenoj klasi se dodaje celobrojni atribut, i dodelu vrednosti tog atributa stavljam u konstruktor izvedene klase.

EDIT: Hvala svima na pomoci. Mozda cu uskoro postaviti dva zadatka koja sam trebao da uradim iz programiranja u realnom vremenu (preciznije PHP, HTML i MySQL)

Poslednja ispravka: Goonotora (13.6.2013 u 13:35) Razlog: Update...
Goonotora je offline   Odgovor sa citatom ove poruke
Stara 13.6.2013, 13:33   #8
Lucic Nemanja
Starosedelac
 
Član od: 2.12.2005.
Lokacija: Beograd
Poruke: 1.241
Zahvalnice: 65
Zahvaljeno 76 puta na 49 poruka
Slanje poruke preko Skypea korisniku Lucic Nemanja
Određen forumom Re: C# zbunjujuci zadatak

Ja mislim da covek ne kapira malo teorije .
Anyway, imas polja osnovne i polja nasledjene klase. Polja osnovne inicijalizuje konstruktor osnovne klase, a polja izvedene inicijalizuje konstruktor izvedene klase. Redosled pozivanja je uvek konstruktor osnovne pa konstruktor izvedene. Konstruktor osnovne pozivas nardebom base(argumenti). Ako ga eksplicitno ne pozoves poziva se default konsruktor bez argumenata. Dakle u ovom primeru nardebom base(parametar1, parametar2) ti zapravo govoris da prvo treba da se pozove konstruktor osnovne sa datim parametrima pa onda konstruktor izvedene koji je definisan telom {...}.

Poslednja ispravka: Lucic Nemanja (14.6.2013 u 2:39)
Lucic Nemanja je offline   Odgovor sa citatom ove poruke
Stara 13.6.2013, 23:47   #9
Todors
Član
 
Član od: 16.4.2010.
Lokacija: Pančevo
Poruke: 462
Zahvalnice: 41
Zahvaljeno 68 puta na 63 poruka
Određen forumom Re: C# zbunjujuci zadatak

Citat:
Lucic Nemanja kaže: Pregled poruke
Ja mislim da covek ne kapira malo teorije .
Anyway, imas polja osnovne i polja nasledjene klase. Polja osnovne inicijalizuje konstruktor osnovne klase, a polja izvedene inicijalizuje konstruktor izvedene klase. Redosled pozivanja je uvek konstruktor osnovne pa konstruktor bazne. Konstruktor osnovne pozivas nardebom base(argumenti). Ako ga eksplicitno ne pozoves poziva se default konsruktor bez argumenata. Dakle u ovom primeru nardebom base(parametar1, parametar2) ti zapravo govoris da prvo treba da se pozove konstruktor osnovne sa datim parametrima pa onda konstruktor bazne koji je definisan telom {...}.
Osnovna, bazna i nasleđena klasa ti je jedno te isto. Pretpostavljam da si mislio na izvedenu i baznu.
Todors je offline   Odgovor sa citatom ove poruke
Stara 14.6.2013, 2:39   #10
Lucic Nemanja
Starosedelac
 
Član od: 2.12.2005.
Lokacija: Beograd
Poruke: 1.241
Zahvalnice: 65
Zahvaljeno 76 puta na 49 poruka
Slanje poruke preko Skypea korisniku Lucic Nemanja
Određen forumom Re: C# zbunjujuci zadatak

Citat:
Todors kaže: Pregled poruke
Osnovna, bazna i nasleđena klasa ti je jedno te isto. Pretpostavljam da si mislio na izvedenu i baznu.
Greška u kucanju. Pogubih se pišući.
Editovao sam. Hvala na napomeni.
Lucic Nemanja je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
C zadatak sa nizovima Goonotora Programiranje 6 26.9.2012 11:52
c++ zadatak sunce86 Programiranje 19 7.6.2010 22:37
Kviz na Pinku - matematički zadatak! stevan10 Brbljaonica 15 18.3.2009 13:00
Jedan zadatak u C-u RuSkO_17 Programiranje 18 17.11.2008 17:30


Sva vremena su po Griniču +2 h. Sada je 7:01.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2025, vBulletin Solutions, Inc.
Hosted by Beograd.com