Forum » Programiranje » Objektno programiranje Java
Objektno programiranje Java
Dahakka ::
Lep pozdrav vsem skupaj,
imam problem pri domači nalogi in sicer me zanima če mogoče kdo ve, kako lahko dam v eno tabelo, kjer imam objekte več različnih objektov notri, oziroma kako se kasta?
imam sledečo struktur:
Abstraktni razred Oseba (med tema dvema je še vmesnik Primerljiv) ==> razred Oseba ==> razred Popotnik ==> testni razred Test
v testnem razredu imam deklarirano tabelo Popotnik[] p = new Popotnik[x], kjer so shranjeni objekti tipa Popotnik, sedaj pa me zanima kako moram narediti, da bom lahko v to isto tabelo hranil tako Objekte tipa Oseba in objekte tipa Popotnik in nad njimi izvajal različne operacije primerjave?
Zelo bi bil vesel, če kdo ki ve kako rešiti problem mi pomaga, ker se malo mudi z nalogo in moram imeti te stvari pošlihtane.
Hvala in lep dan še naprej,
Miha
imam problem pri domači nalogi in sicer me zanima če mogoče kdo ve, kako lahko dam v eno tabelo, kjer imam objekte več različnih objektov notri, oziroma kako se kasta?
imam sledečo struktur:
Abstraktni razred Oseba (med tema dvema je še vmesnik Primerljiv) ==> razred Oseba ==> razred Popotnik ==> testni razred Test
v testnem razredu imam deklarirano tabelo Popotnik[] p = new Popotnik[x], kjer so shranjeni objekti tipa Popotnik, sedaj pa me zanima kako moram narediti, da bom lahko v to isto tabelo hranil tako Objekte tipa Oseba in objekte tipa Popotnik in nad njimi izvajal različne operacije primerjave?
Zelo bi bil vesel, če kdo ki ve kako rešiti problem mi pomaga, ker se malo mudi z nalogo in moram imeti te stvari pošlihtane.
Hvala in lep dan še naprej,
Miha
- spremenil: Dahakka ()
Dahakka ::
Kaj pa če moraš imeti vse Objekte v eni in isti tabeli? Kot na primeru v tabeli z imenom p?
genesiss ::
Iz abstraktnega razreda Oseba izpelji vse tipe oseb, ki jih rabis.
OSEBA (abstrakten) ---> POPOTNIK
Če zdaj narediš tabelo Oseba[], boš lahko notri dajal vse izpeljane razrede.
OSEBA (abstrakten) ---> POPOTNIK
Če zdaj narediš tabelo Oseba[], boš lahko notri dajal vse izpeljane razrede.
Dahakka ::
hm...
ne razumem čisto dobro, kako pa lahko v abstraktnem razredu to deklariram? recimo moj Abstraktni razred oseba je tak:
public abstract class AbsOseba {
public abstract int vrniAtr();
public abstract int vrniSmer();
public abstract void nastaviAtr(int atr);
public abstract void nastaviSmer(int smer);
public abstract boolean manjsi(Primerljiv p);
public abstract boolean ustreza(String niz);
public abstract String vrniVredAtr();
}
kaj implementiram notri?
ne razumem čisto dobro, kako pa lahko v abstraktnem razredu to deklariram? recimo moj Abstraktni razred oseba je tak:
public abstract class AbsOseba {
public abstract int vrniAtr();
public abstract int vrniSmer();
public abstract void nastaviAtr(int atr);
public abstract void nastaviSmer(int smer);
public abstract boolean manjsi(Primerljiv p);
public abstract boolean ustreza(String niz);
public abstract String vrniVredAtr();
}
kaj implementiram notri?
genesiss ::
abstract class Oseba {}
class Popotnik extends Oseba {}
Zdaj lahko naredis:
Oseba[] tabela = new Oseba[3];
In v to tabelo vstavljaš Popotnik-e.
Zgodovina sprememb…
- spremenil: genesiss ()
Dahakka ::
dobim tale error:
Test.java:181: Oseba is abstract; cannot be instantiated
t[i] = new Oseba(ime, priimek, spol);
^
1 error
Test.java:181: Oseba is abstract; cannot be instantiated
t[i] = new Oseba(ime, priimek, spol);
^
1 error
chewbaca ::
Abstraktnega razreda ne moreš instancirati..
Oseba s = new Popotnik(ime, priimek, spol);
Oseba s = new Popotnik(ime, priimek, spol);
Dahakka ::
Ali potem v tem primeru sploh lahko dam v tabelo Popotnikov notri še objekte tipa Oseba? ali moram narediti tabelo Oseba in bom lahko nato notri dajal še objekte Popotnik?
kaj pa s tem misliš: Oseba s = new Popotnik(ime, priimek, spol); ?
Hvala vama za pomoč!!!!!
kaj pa s tem misliš: Oseba s = new Popotnik(ime, priimek, spol); ?
Hvala vama za pomoč!!!!!
chewbaca ::
Objekta tipa Oseba ne moreš ustvariti, Oseba je abstraktni tip in kot tak ne omogoča instanciranja, torej:
t[i] = new Oseba(ime, priimek, spol);
ti javi napako ker objekta Oseba ne moreš ustvariti. Pravilni način je da ustvariš objekt tipa Popotnik, do katerega lahko dostopaš preko reference tipa Popotnik ali Oseba, torej:
Oseba s1 = new Popotnik(ime, priimek, spol);
ali
Popotnik s2 = new Popotnik(ime, priimek, spol);
Ti imaš polje Oseba[], torej lahko v njega shranjuješ tudi objekte tipa Popotnik, ker je izpeljan iz razreda Oseba.
t[i] = new Oseba(ime, priimek, spol);
ti javi napako ker objekta Oseba ne moreš ustvariti. Pravilni način je da ustvariš objekt tipa Popotnik, do katerega lahko dostopaš preko reference tipa Popotnik ali Oseba, torej:
Oseba s1 = new Popotnik(ime, priimek, spol);
ali
Popotnik s2 = new Popotnik(ime, priimek, spol);
Ti imaš polje Oseba[], torej lahko v njega shranjuješ tudi objekte tipa Popotnik, ker je izpeljan iz razreda Oseba.
Spartacus ::
Sem kaj pomembnega spregledal, ali se samo meni zdi, da je tukaj en velik lapsus:
V tabelo bi se želelo shranjevat objekte tipa Popotnik in tipa Oseba. Ker je Oseba abstraktni razred, je ne moraš instancirat - torej objekta sploh ne moraš kreirat. Torej je vse kar rabiš ena tabela tipa 'Popotnik' (razen, če imaš poleg še kakšen razred, ki extenda abstraktni razred Oseba - v tem primeru pa narediš tabelo tipa Oseba).
V tabelo bi se želelo shranjevat objekte tipa Popotnik in tipa Oseba. Ker je Oseba abstraktni razred, je ne moraš instancirat - torej objekta sploh ne moraš kreirat. Torej je vse kar rabiš ena tabela tipa 'Popotnik' (razen, če imaš poleg še kakšen razred, ki extenda abstraktni razred Oseba - v tem primeru pa narediš tabelo tipa Oseba).
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Sortiranje razredovOddelek: Programiranje | 1441 (1188) | Spura |
» | [C#] DeserializacijaOddelek: Programiranje | 1853 (1456) | Cvenemir |
» | [JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazredaOddelek: Programiranje | 1237 (1165) | alexa-lol |
» | [C#] izdelava tabeleOddelek: Programiranje | 1984 (1810) | majoneza |
» | Programiranje "Šah-a" v JaviOddelek: Programiranje | 4227 (3743) | OwcA |