Avatar billede dmg Nybegynder
21. januar 2005 - 19:55 Der er 4 kommentarer og
1 løsning

Get set metoder til klasser

Hej eksperter.

Er der een der kan forklare mig, hvad get set metoder, bruges til?
Avatar billede jakoba Nybegynder
21. januar 2005 - 20:09 #1
en set metode giver en værdi til en variabel i en klasse
en get metode henter den værdi igen

ofte kunne man ligesågodt bruge variabelen direkte:
    $instans->veriabelX = "Olsen";  // 'set'ter variabelens værdi
    $temp = $instans->veriabelX;    // 'get'ter variabelens værdi

Grunden til sådan at bruge funktioner til der er at man ofte ønsker at værdier i klassens variable skal overholde nogen regler i forhold til hinanden.
Avatar billede jakoba Nybegynder
21. januar 2005 - 20:33 #2
til eksempel kunne vi lave en klass til at indeholde temperaturværdier

class temperatur {
    var celsius;
    var farenheit;
    var kelvin;
}
ideen med klassen er så at den samme teperatur står der på de 3 forskellige måder, men hvis vi gør det blot med variable som ovenfor kan man hurtigt lave lort for der er ingenting det forhindrer en dum programmør i at ændre fx variabelen celsius uden at ændre de to andre, og så indeholder klassen pudselig forskellige temperaturer på een gang.
så istedet bruger man set og get metoder:
class temperatur {
    var celsius;        // burde slet ikke kunne ses udefra, men det er
                              // først implementeret i php version 5
    function setCelsius( $nyverdi ) {
        $this->celsius = $nyverdi ;
    }
    function getCelsius() {
        return $this->celsius;
    }
    function setFarenheit( $nyverdi ) {    // C = (F - 32) / 1.8
        $this->celsius = ($nyverdi-32) / 1.8;
    }
    function getFarenheit() {              // F =  C × 1.8 + 32
        return $this->celsius * 1.8 + 32;
    }
    function setKelvin( $nyverdi ) {    // C = K - 273.15
        $this->celsius = $nyverdi -273;
    }
    function getKelvin() {              // K = C  + 273.15
        return $this->celsius +273.15;
    }
}
når man bruger get og set funktionerne ovenfor er man 100% sikker på at den klasse ikke indeholder mere end een teperaturværdi, ligemeget hvordan man spørger efter værdien.
Avatar billede dmg Nybegynder
24. januar 2005 - 20:18 #3
Hej igen.

Rigtig go forklaring. Jeg har installeret php 5.0.3.

Jeg har prøvet nedenstående, men får hun udskrevet 200?

class temperatur {
    private $celsius;        // burde slet ikke kunne ses udefra, men det er
                              // først implementeret i php version 5
    function setCelsius( $nyverdi ) {
        $this->celsius = $nyverdi ;
    }
    function getCelsius() {
        return $this->celsius;
    }
    function setFarenheit( $nyverdi ) {    // C = (F - 32) / 1.8
        $this->celsius = ($nyverdi-32) / 1.8;
    }
    function getFarenheit() {              // F =  C × 1.8 + 32
        return $this->celsius * 1.8 + 32;
    }
    function setKelvin( $nyverdi ) {    // C = K - 273.15
        $this->celsius = $nyverdi -273;
    }
    function getKelvin() {              // K = C  + 273.15
        return $this->celsius +273.15;
    }
}

$test = new temperatur();

$test->setFarenheit(200);

print $test->getFarenheit();
Avatar billede dmg Nybegynder
04. februar 2005 - 17:28 #4
Hej igen. Smid et svar, det var en god forklaring :-)
Avatar billede dmg Nybegynder
25. august 2010 - 23:37 #5
Lukket.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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