» »

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
  • spremenil: Dahakka ()

genesiss ::

Naredi tabelo Oseb

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.

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?

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

chewbaca ::

Abstraktnega razreda ne moreš instancirati..
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č!!!!!

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.

Spura ::

APS1 VSS aka predmet kjer na vajah asistent ne zna osnov programiranja.

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).


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Sortiranje razredov

Oddelek: Programiranje
101461 (1208) Spura
»

[C#] Deserializacija

Oddelek: Programiranje
181869 (1472) Cvenemir
»

[JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazreda

Oddelek: Programiranje
71251 (1179) alexa-lol
»

[C#] izdelava tabele

Oddelek: Programiranje
72000 (1826) majoneza
»

Programiranje "Šah-a" v Javi

Oddelek: Programiranje
264246 (3762) OwcA

Več podobnih tem