Avatar billede anders159 Nybegynder
17. oktober 2006 - 09:48 Der er 6 kommentarer og
1 løsning

interface og OO

Hejsa

er lidt forvirret angående interfaces.


Sidder med et lille project hvor der ikke er noget specielt at vinde hvad angår nedarvning. Har en masse dataObjecter og et control lag der benytter disse.
Er godt med på ideen om at et interface er en kontrakt til den offentlige verden og kan også gode se det smarte idet, hvis man er mange om udviklingen. Men her er der kun mig.

forstår også godt iden med at holde deklerationen sepereret fra implementeringen, så man let kan ændre i implementeringen, eller lade mange klasser arve det samme interface og så implentere forskellig functionalitet i metoderne.

Mit project er dog 100% fastlagt, og vidreudviklingen på det vil blive minimal.

så spørgsmålet er....

SKAL interfaces altid bruges?

hvis ikke

i hvilke situationer er interfaces ligegyldige?
Avatar billede dj_uncas Nybegynder
17. oktober 2006 - 11:09 #1
Interfaces SKAL ikke bruges bare fordi man kan, men det kan være nyttigt i mange situationer, også selvom du er alene på projektet..

F.eks. kan du lave så meget rod du vil i senere versioner/vedligeholdelser, så længe du overholder interfacets krav.

Hvis din applikation er meget simpel og ikke er f.eks. lagdelt, kan brugen af interfaces godt være en overdrivelse, men hvis på nogen måde har snitflader, også internt i programmet, kan det være en enormt stor hjælp.


Det med at videreudviklingen bliver minimal er et farligt statement. Du kommer altid til at lave mere end du tror.


Jeg håber du kan bruge mit input til noget ;-)
Avatar billede dj_uncas Nybegynder
17. oktober 2006 - 11:11 #2
Lige en tilføjelse: Du nævner at interfaces er kontrakter til den offentlige verden. Det  er lige så meget kontrakter til dig selv, og internt i din verden. Det kan hjælpe flowet i dit system hvis du altid ved du kan stole på hvad du får andre steder fra i applikationen.
Avatar billede bulgroz Nybegynder
17. oktober 2006 - 17:47 #3
En yderligere fordel ved at anvende interfaces er at det muliggør anvendelsen af mock objects når du laver din test kode. Med andre ord, så kan du lave en slags "black box test" af din specifikke kode.
Avatar billede anders159 Nybegynder
19. oktober 2006 - 11:47 #4
jeg takker, men få jo bare flere og flere spørgsmål :)
håber i lige gidder tage en runde mere.

har nu lave interfaces til alle mine factories, adaptorer og dataObjecter som jeg har på mit modellag. har ladet flere interfaces arve fra hindanden, og kan godt se ideen med indkapsling, kontrol og fremtidssikring.. 

men når jeg så skal til at bruge det bliver jeg lidt forvirret.


her et lille eks til at tale om.



--------------------INTERFACES--------------------


    public interface iPerson
    {
        String Name
        {
            get;
            set;
        }
    }



    public interface iAdaptor
    {
        iPerson CreateNewPerson(string aName);
    }



-----------------------CLASSES-------------------


public class cPerson: iPerson
    {

    private string name;
   
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }




public class cAdaptor: iAdaptor
    {
        public iPerson CreateNewPerson(string aName)
        {
            iPerson myPerson = new cPerson;

        myPerson.Name = aName;

        return myPerson;
        }
    }


---------------------RUNTIME------------------


public class MyWorker
    {
        public MyWorker()
        {
        iAdaptor myAdaptor = new cAdaptor();

        iPerson myPerson = myAdaptor.CreaNewPerson("soren");

        myPerson.Name = "Søren";         
        }
    }

------------------??????-----------------

Spørgsmålet er om jeg har forstået oprettelsen og brugen af interfaces rigtigt.. hvad skal være privat
og hvad skal være public, og hvad skal return typerne fra et interface/classe være mm..
Avatar billede dj_uncas Nybegynder
19. oktober 2006 - 12:52 #5
Du har meget godt fat i at du i din iAdaptor returnerer en iPerson, men inden i rent faktisk bruger en konkret implementering. Pointen er her at du ikke udefra ved hvilken implementering du bruger, men at det i hvert fald implementerer et interface, og du ved hermed hvad du har med at gøre mht. properties og metoder.
Avatar billede anders159 Nybegynder
19. oktober 2006 - 13:16 #6
jamen så er det jo bare med at komme igang :)

smid et svar
Avatar billede dj_uncas Nybegynder
19. oktober 2006 - 14:10 #7
Okay du ;-)
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