Avatar billede arnejan Nybegynder
24. februar 2004 - 13:29 Der er 5 kommentarer

OOP Design SPM

Det kan godt være at mit spørsmål nu lyder somon jeg aldrig har fattet OOP. Men det går fagtisk fint fint.

Nogen gange har jeg dog et problem :

Antag en klasse med flere forskellige contructorer.
(Hver constructor modtager forskellige parrametre)

f.eks

public class MyClass
{
public MyClass()
{
// Diverse initeringsKode
}

public MyClass(string s)
{
}
}

Mit problem er nu at når jeg laver en nye MyClass bliver
// Diverse initeringsKode ikke kørt. Mit normale design indtil nu har bare været og probbe // Diverse initeringsKode ind i begge construtorer, men nu er jeg ligesom blevet træt af det.

Jeg må gøre noget forkert / have misforstået noget .

Jeg håber at nogen kan forstå mig, og eventuelt hjælpe.

p.s.

For at gøre det hele endnu mere avanceret, så har jeg nu problemet i forbindelse med at lave mine egne exception.
Jeg vil gerne have at alle exception´s i mit system er nedarvet fra den samme loggedException (som jeg selv laver). I loggedException´s constructer, vil jeg så logge til event loggen. Derfor skal loggedException´s
// Diverse initeringsKode, køre uanset hvilket constructor der kaldes i alle mine egne Exceptions.

p.p.s Jeg er løbet tør for point (igen).
Avatar billede arnejan Nybegynder
24. februar 2004 - 13:30 #1
"Mit problem er nu at når jeg laver en nye MyClass bliver " der skulle stå
"Mit problem er nu at når jeg laver en nye MyClass med MyClass(string s) bliver "
Avatar billede guidmaster Nybegynder
24. februar 2004 - 13:54 #2
Der er jo noget der hedder refakturering ;)

Lav en Initfunktion som du så kalder inde fra din konstruktør - så slipper du da afsted med kun at skulle skrive en linje ;)
Avatar billede arnejan Nybegynder
24. februar 2004 - 13:56 #3
Der er rigtigt.

Men jeg fandt ud af at man også kunne skrive

public MyClass(string s) : this()
{
}

Men det løser selvfølgelig ikke problemet ved nedarvning, men der er måske et andet fiks design.

Eller må man selvfølgelig forfalde til "Init løsningen";
Avatar billede arnejan Nybegynder
24. februar 2004 - 13:57 #4
Man kan ikke skrive:

public MyClass(string s) : this() : base(string s);
{
}

Fandt jeg også ud af (men det giver nok heller ikke rigtig mening).
Avatar billede dna Nybegynder
24. februar 2004 - 16:04 #5
Er enig med guidmaster!

Hvis man har flere konstruktører i en klasse, så vil man jo alligevel tit kalde en af de andre konstruktører efter at have gjort noget specielt for netop den konstruktør man kaldte.

At lave en "inet-metode" - det er da en god løsning! Syntes ikke du skal skrive "forfalde" til .. da det i mine øjne er en udemærket (den rigtige) løsning!

dna
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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