icebyte Skrevet 26. august 2006 Del Skrevet 26. august 2006 Hei Jeg har opprettet et klassediagram for et filmregister og når jeg nå ser på klassediagrammet så ser det ut som noe er feil med tanke på at bla. VHS klassen ikke inneholder noen spesifikke felt eller metoder. Jeg kunne sikkert tatt region og spor feltene i DVD og blu-ray klassene og lagt disse i "Region" klassen og dermed ville ikke DVD eller Blu-ray klassen hatt noen felter/metoder annet enn de som blir arvet. Virker veldig rart å sette opp et klassediagram hvor tre av klassene ikke har noen felter (annet enn arvede) og de spesifikke feltene for DVD og blu-ray er lagt i en egen klasse for å bruke abstraksjon bedre. Er det noe feil med klassediagrammet eller kan det faktisk bare være tomme klasser i diagrammet ettersom en ser at de arver flere felt og metoder... Klassediagrammet kan du se på denne adresse: http://www.network-cats.net/classdiagram.png Takker for all hjelp. Lenke til kommentar
krigun Skrevet 26. august 2006 Del Skrevet 26. august 2006 For det første, spør deg selv følgende: Hva er felles med VHS,DVD, BlueRay og Film? De tre første er kun et medium for å distribuere filmen, film alene er ikke definert av en DVD,VHS el. Nytt felt i Film klassen > FilmFormat (Eller whatever..) DVD, VHS og BlueRay arver så fra filmformat (og de felles attributtene filmformat måtte ha), og har sine egne attributter. FilmFormat klassen vil altså være en generalisering av de forskjellige formatene, noe som Film klassen ikke er. Lenke til kommentar
icebyte Skrevet 28. august 2006 Forfatter Del Skrevet 28. august 2006 For det første, spør deg selv følgende: Hva er felles med VHS,DVD, BlueRay og Film? De tre første er kun et medium for å distribuere filmen, film alene er ikke definert av en DVD,VHS el. Nytt felt i Film klassen > FilmFormat (Eller whatever..) DVD, VHS og BlueRay arver så fra filmformat (og de felles attributtene filmformat måtte ha), og har sine egne attributter. FilmFormat klassen vil altså være en generalisering av de forskjellige formatene, noe som Film klassen ikke er. 6747690[/snapback] Format er allerede i Film klassen som du kanskje ikke la merke til. Med tanke på DVD/VHS og blu-ray så er det forskjeller på disse mediene. DVD og blu-ray har forskjellige sonetabeller og VHS trenger det kanskje ikke å være noen klasse av i heletatt? Mhm. Lenke til kommentar
krigun Skrevet 28. august 2006 Del Skrevet 28. august 2006 Format er allerede i Film klassen som du kanskje ikke la merke til. Med tanke på DVD/VHS og blu-ray så er det forskjeller på disse mediene. DVD og blu-ray har forskjellige sonetabeller og VHS trenger det kanskje ikke å være noen klasse av i heletatt? Mhm. 6759579[/snapback] Ja, studerte ikke det diagrammet deres veldig nøye, men uansett: Format : String > byttes ut med format : FilmFormat FilmFormat | | | VHS DVD BlueRay Og de tre klassene arver fra FilmFormat Lenke til kommentar
icebyte Skrevet 29. august 2006 Forfatter Del Skrevet 29. august 2006 Format er allerede i Film klassen som du kanskje ikke la merke til. Med tanke på DVD/VHS og blu-ray så er det forskjeller på disse mediene. DVD og blu-ray har forskjellige sonetabeller og VHS trenger det kanskje ikke å være noen klasse av i heletatt? Mhm. 6759579[/snapback] Ja, studerte ikke det diagrammet deres veldig nøye, men uansett: Format : String > byttes ut med format : FilmFormat FilmFormat | | | VHS DVD BlueRay Og de tre klassene arver fra FilmFormat 6760520[/snapback] Hvorfor ha tre separate klasser med forskjellig formater som arver fra en klasse som heter filmformat, ser ingen grunn til å bruke denne klassen. Og btw, det er ikke noe "deres" diagram, det er naturligvis kun jeg som driver med det. Virker som du blander litt klassediagram og databasediagram, mhm. Lenke til kommentar
Drømmemannen Skrevet 29. august 2006 Del Skrevet 29. august 2006 Arv brukes i tilfeller hvor noe ER noe annet. F.eks. en bil ER et kjøretøy. DVD er ikke en film. DVD er et medium (for bl.a. film). Det samme gjelder VHS og BlueRay---de er alle medier og bør således arve fra en passende medium-klasse og ikke en film-klasse. Lenke til kommentar
krigun Skrevet 29. august 2006 Del Skrevet 29. august 2006 (endret) Hvorfor ha tre separate klasser med forskjellig formater som arver fra en klasse som heter filmformat, ser ingen grunn til å bruke denne klassen. Og btw, det er ikke noe "deres" diagram, det er naturligvis kun jeg som driver med det. Virker som du blander litt klassediagram og databasediagram, mhm. 6767000[/snapback] Man bruker arv for å unngå idiotkode som vist nedenfor: class Film { ..... public DVD getVHS(); public Sone getSone(); public boolean isDVD(); public boolean isVHS(); public boolean isBlueRay(); ..... } Tenk deg hvilket mareritt det er å lage bra kode basert på noe slikt? når man heller kan si: class Film { ..... public FilmFormat getFilmFormat(); ...... } OG databasediagram har ingenting med objektorientering å gjøre. Endret 29. august 2006 av krigun Lenke til kommentar
icebyte Skrevet 30. august 2006 Forfatter Del Skrevet 30. august 2006 Hvorfor ha tre separate klasser med forskjellig formater som arver fra en klasse som heter filmformat, ser ingen grunn til å bruke denne klassen. Og btw, det er ikke noe "deres" diagram, det er naturligvis kun jeg som driver med det. Virker som du blander litt klassediagram og databasediagram, mhm. 6767000[/snapback] Man bruker arv for å unngå idiotkode som vist nedenfor: class Film { ..... public DVD getVHS(); public Sone getSone(); public boolean isDVD(); public boolean isVHS(); public boolean isBlueRay(); ..... } Tenk deg hvilket mareritt det er å lage bra kode basert på noe slikt? når man heller kan si: class Film { ..... public FilmFormat getFilmFormat(); ...... } OG databasediagram har ingenting med objektorientering å gjøre. 6767992[/snapback] Hei, takker for svar fra begge. Vet godt hva arv her og hvordan det brukes, det gjelder også interfaces osv. Men her fikk jeg en "heads-up", fordi jeg tenkte ikke i hele tatt på at DVD bare var et medium akkurat som blu-ray. Hm, med en gang jeg tenker på å lage klassediagrammer, så tenker jeg objekter, så tenkte vel bare ikke på det. Når du sier at det er en er-en relasjon, så tenkte jeg at DVD var en film og det samme med de andre. Men krigun, du kan ikke si at "FilmFormat" er en "Film" fordi det er kun et medium, dermed ville ikke det eks. på klassediagrammet ditt fungert vel.. Men en kunne sagt at en film har et medium, men da er det ikke arv lengre. Lenke til kommentar
krigun Skrevet 30. august 2006 Del Skrevet 30. august 2006 Når du sier at det er en er-en relasjon, så tenkte jeg at DVD var en film og det samme med de andre. Men krigun, du kan ikke si at "FilmFormat" er en "Film" fordi det er kun et medium, dermed ville ikke det eks. på klassediagrammet ditt fungert vel.. Men en kunne sagt at en film har et medium, men da er det ikke arv lengre. 6770655[/snapback] Har aldri sagt at Film er en FilmFormat, hvis du leser postene mine litt mer nøye. Tror du har misforstått alle postene mine, beklager hvis jeg har vært uklar. Lenke til kommentar
Drømmemannen Skrevet 30. august 2006 Del Skrevet 30. august 2006 Jepp, ER (arv) og HAR (assosiasjoner) er fine huskeregler. Lenke til kommentar
icebyte Skrevet 31. august 2006 Forfatter Del Skrevet 31. august 2006 Hoer paa krigun. 6776955[/snapback] Ser vel hva han skriver? Skjønner ikke hva han mener. Lenke til kommentar
Patton Skrevet 1. september 2006 Del Skrevet 1. september 2006 Eksempel paa hvordan klassediagrammet kan se ut (forenklet Powerpoint utgave): http://img309.imageshack.us/my.php?image=klassesdipy5.jpg En film er en film, samme om den ble sett paa kino, dvd eller vhs. Si at du har Filmen "Platoon". Du har en gammel VHS versjon og en nyere DVD versjon. Samme film, forskjellig FilmFormat (eller medium som du selv nevnte). Du har da en instans av "Film" med navn="Platoon". Denne "Film" har 2 "FilmFormat", en instans VHS og en instans DVD. "Film" har da referens til to "FilmFormat". Lenke til kommentar
Drømmemannen Skrevet 1. september 2006 Del Skrevet 1. september 2006 Med utgangspunkt i Pattons forslag ville jeg heller laget en abstrakt klasse med navn SporFilmFormat som arver fra FilmFormat, og så sette DVD og BlueRay til å arve fra SporFilmFormat. SporFilmFormat-objektet vil så ha en liste over Spor/Soner. Hvert Spor har også mulighet til å referere til kapitler i en film, hvis man ønsker å dra det videre. Lenke til kommentar
Patton Skrevet 1. september 2006 Del Skrevet 1. september 2006 Med utgangspunkt i Pattons forslag ville jeg heller laget en abstrakt klasse med navn SporFilmFormat som arver fra FilmFormat, og så sette DVD og BlueRay til å arve fra SporFilmFormat. SporFilmFormat-objektet vil så ha en liste over Spor/Soner. Hvert Spor har også mulighet til å referere til kapitler i en film, hvis man ønsker å dra det videre. 6781867[/snapback] En fornuftig utvidelse Lenke til kommentar
icebyte Skrevet 1. september 2006 Forfatter Del Skrevet 1. september 2006 (endret) Takk for svar Pattonog dere andre som har prøvd å hjelpe, ser på diagrammet ditt Patton og ser at du ikke har noen felter/metoder filmformat klassen eller VHS klassen, kan en sette opp klasser i et klassediagram som ikke har noen felter/metoder annet enn arvede felter ? Det var kanskje ment at jeg skulle legge til disse feltene/metodene, men lurer likevel på spørsmålelet (ang. om en kan sett opp klasser i et klassediagram uten felter/metoder og som kun har arvede felter). En får ikke laget noen objekter av DVD, VHS eller blu-ray uten noen klasse av disse, så da må en opprettet disse klassene (hvis en ikke sier at en skal opprette en film klasse med tre interface) og da inneholder disse klassene ingen metoder/felter annet enn arvede felt, da kommer det sammet spørsmålet igjen som ovenfor. Aldri tenkt på det før eller aldri hatt det problemet tror jeg. Endret 1. september 2006 av icebyte Lenke til kommentar
icebyte Skrevet 1. september 2006 Forfatter Del Skrevet 1. september 2006 Har nå oppdatert klassediagrammet og integret innkapsling. Har også lagt til en ny klasse osv. Det blir ingen arv-relasjon fra "Movie" klassen til "Format" klassen her, men fra "Format" til "DVD", "Blu-ray" og "VHS" er det arv. Det er heller ikke arv fra "DVD" eller "Blu-ray" klassen til "Region" klassen. Synes dette ser ganske riktig ut, men er det riktig? Hvis det ikke er det, kanskje noen kunne gitt meg en pekepinn på hva som er feil? Lenke til kommentar
Drømmemannen Skrevet 2. september 2006 Del Skrevet 2. september 2006 (endret) Det går fint an å lage klasser uten objektvariabler, ingen krav om det. Jeg synes fortsatt det jeg skrev i siste innlegget mitt er en verdig forbedring av Pattons, og nå også ditt, klassediagram. Laget et diagram som viser det (har utelatt alle objektvariabler): diagram.png. Endret 2. september 2006 av balletryne Lenke til kommentar
krigun Skrevet 2. september 2006 Del Skrevet 2. september 2006 Det går fint an å lage klasser uten objektvariabler, ingen krav om det. Jeg synes fortsatt det jeg skrev i siste innlegget mitt er en verdig forbedring av Pattons, og nå også ditt, klassediagram. Laget et diagram som viser det (har utelatt alle objektvariabler): diagram.png. 6787276[/snapback] Ser veldig bra ut, kunne ikke gjort det bedre selv Lenke til kommentar
icebyte Skrevet 2. september 2006 Forfatter Del Skrevet 2. september 2006 (endret) Så fin ut den utbedringen ja, men tror jeg først burde progge programmet så det inneholder det grunnleggende først, som det jeg har satt opp på diagrammet jeg lagde. Deretter kan jeg drive med utbedringer og denne utbedringen virker interessant. Liker modulbaserte programmer, så ville prøvd å fått til noe slikt. Takker for hjelpen Endret 2. september 2006 av icebyte Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå