Identificer hvad der skal fortælles om de forskellige klasser.
Er dog ikke sikker på hvordan du helt er kommet til det skal være de klasser?
tvprovider er vel canal digital, viasat, boxer-tv etc.
De har en enten enkeltkanaler der kan købes eller pakker.
List<channels> channels
List<package> packages
package kan være en serie af kanaler, men er ofte baseret på tilbud og varighed måske. Det kommer an på hvor "statisk" din side skal være eller om der skal tages tidsbegrænsede tilbud med også.
Derfor er datoer sat til nullable (?- gør dem nullable), fordi der kan være en begrænset periode på. Ofte kan man også være "bundet" af en pris hvis man melder sig ind, og skal have det i x måneder.
string PackageName
string tvProviderName
List<channels> Channels
DateTime? StartDate
DateTime? EndDate
Price PackagePrice
int MdrBinding
Price skal erstatte din
channelprice da den skal kunne bruges på både grupper af kanaler (
packages), men også de individuelle kanaler/
channels.
discount vil være en indikator for om der er periodisk rabat på prisen.
double price
boolean discount
DateTime? StartDate
DateTime? EndDate
Channel skal så være den enkelte kanal som udbydes.
Grunden til jeg har sat start/end-date på kanalen er at den kan måske udgå og så kan du bevare historikken.
Discount skal læse direkte ned på price-objektet og give denne værdi, som vil vise om du nuværende har rabat på prisen.
DiscountPeriod skal se om der er discount, og hvis der er så læse start og slut dato fra price, så du kan fortælle hvor længe der er rabat.
string Name
string tvProviderName
boolean isHD
price Price
boolean Discount
string DiscountPeriod
DateTime? StartDate
DateTime? EndDate
Hvis du skal lave det rigtigt optimalt så ville jeg lave det som en liste med packages og channels og alt som har et timespan de virker i. Så har du historikken i alle data, kan se udviklingen i tilbud og priser, plus du har mulighed for at i hele december måned koster guldpakken hos viasat 50 kr. mindre og kan have dette som selvstændigt objekt for denne periode uden at skulle ændre det frem og tilbage men bare sætte det for en periode.
På samme måde vil du for price kunne have en liste med prices som hver har en periode de gælder for, så du kan sætte rabat på over en periode og kan se udviklingen eller indsætte rabat over en periode på en kanal eller pakke.
Så det meget simpelt at lave en metode der ber om at få price, som altid finder den som er gældende for dags dato.
Et andet lille godt fif er at lave dine perioder skal ALTID dække hele året, plus de må ikke overlappe hinanden. Så du sikker på du altid kun har en pris for en dato/periode.
"tvProviderName" bruges blot til at give information om dine objekters sammenhæng, og du vil så kunne have metoder til at reagere på det og finde andre kanaler fra samme tvProvider, eller andre packages etc.
Der skal selvfølgelig laves en masse hjælpemetoder til at finde de korrekte ting på dine objekter, men er ikke så slemt.
Indlæg senest redigeret d. 04.10.2013 10:49 af Bruger #17215