Avatar billede freddy04 Nybegynder
03. november 2005 - 12:49 Der er 9 kommentarer og
1 løsning

Flere ens objekter?

Hejsa,
jeg har lige læst artiklen her http://www.eksperten.dk/artikler/34 og det er jo faktisk ret smart. Men mit spørgsmål er så om man kan have flere af sådanne objekter?
Altså jeg vil lave et objekt (som beskrevet i artiklen) der kan bruges flere steder, f.eks. objektet "Kunstner" kan bruges i flere musiknumre. Men selvom "kunstner"'s værdi i mange tilfælde vil være den samme kan der også være en anden som der så igen kan bruges flere steder.

Det lyder nok lidt snørklet, håber jeg får gjort mig forståelig :-)
Avatar billede arne_v Ekspert
03. november 2005 - 12:52 #1
en singleton klasse kan der per definition kun være en af

(eller ville det hedde en multipleton)

men man kan godt have mange forskellige singleton klasser

imidlertidig er jeg ikke sikker på at det er det som du spørger om

musiknumre----kunstner

kræver nemlig ikke den slags

java objekter er reference typer d.v.s. at flere instanser af musiknumre
klassen kan godt have en reference til samme instans af kunstner klassen

og det er uden nogen former for speciel kodning
Avatar billede freddy04 Nybegynder
03. november 2005 - 12:58 #2
Ja det er det første jeg hentyder til - fik nok lavet et lidt sølle eksempel :-)
Avatar billede freddy04 Nybegynder
03. november 2005 - 12:58 #3
hvordan holder man styr på dem så uden de "overskriver" hinanden ?
Avatar billede arne_v Ekspert
03. november 2005 - 13:01 #4
flere singleton klasser er lige ud af landevejen

Xxxx.getInstance() og Yyyy.getInstance() har jo ikke noget
med hinanden at gøre

hvis ikke det er det du vil så tror jeg at du skal forklare lidt mere om
hvad du har brug for
Avatar billede freddy04 Nybegynder
03. november 2005 - 13:07 #5
Ja det er selvfølgelig rigtigt nok men hvordan holder jeg styr på dem. Hvis jeg nu opretter en masse objekter af "musiknummer" hvor attributten "kunstner" som sagt tit vil være ens men også kan være forskellig. Det er så her jeg vil lave en "kunstner_singleton" for hver kunstner, og når der så kommer en ny skal der vel så laves en ny "kunstner_singleton". Kan man bruge et array til at holde styr på den eller noget?
Det er sikkert slet ikke den smarteste måde at gøre det på, ville bare prøve at rode lidt med eksemplet fra artiklen. Det skulle bare være en måde at undgå at have den samme data drønende rundt mange gange i programmet på
Avatar billede arne_v Ekspert
03. november 2005 - 13:28 #6
du skal ikke bruge singletons til kunstnere

du laver en normal kunstner klasse

du refererer til den i din musiknummer klasse

du kan evt. lave en AlleKunstnereIHeleVerden singleton som indeholder
en Map med alle instanser af kunstner i

så kan du bruge singletonen til at slå op om en konstner allerede eksisterer
eller skal oprettes

og den klasse er der kun en af
Avatar billede freddy04 Nybegynder
03. november 2005 - 15:52 #7
Ja jeg har vist fået det til at virke - ganske smart

En lidt anden ting: Jeg kan ikke rigtig se forskellen på at importere en klasse, oprette et objekt af den og bruge dens metoder fx:
import 1.java
1 test = new 1();
test.metode();

og så på at extende en klasse. Jeg er klar over at når man arver så får man selv klassens egenskaber, men kan ikke skelne dem - hvornår vil man bruge nedarvning og hvornår vil man bare oprette et objekt af en klasse. Jeg kan ikke rigtig se den store forskel?

Smid et svar og tak for hjælpen
Avatar billede arne_v Ekspert
03. november 2005 - 16:23 #8
det var mange spørgsmål

import java.util.HashMap;

gør at du kan skrive:

HashMap m = new HashMap();

fremfor

java.util.HashMap m = new java.util.HashMap();
Avatar billede arne_v Ekspert
03. november 2005 - 16:25 #9
forskellen på at have en instans af en klasse og arve fra en klasse er
forskellen på "has a" og "is a"

en ko har en hale, men en ko er ikke en hale

en ko er et dyr

altså kan ko arve fra dyr, men ikke fra hale
Avatar billede arne_v Ekspert
03. november 2005 - 16:25 #10
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester