Start på OOP

Tags:    php
Skrevet af Bruger #285 @ 05.06.2003

Introduktion


Denne artikel er skrevet i forbindelse med, at jeg selv ville prøve OOP i PHP. Jeg synes, at jeg derfor sideløbende kunne skrive denne artikel, så jeg nemmere kunne beskrive mulige problemer, og hvilke ting jeg undrede mig over.


Hvad er OOP?


OOP står for Objekt Orienteret Programmering (det kommer fra det lignende engelske udtryk), og foregår ved, at man laver klasser (på engelsk hedder det class), der indeholder funktioner. Det kunne fx være en computer-klasse man laver. Man kan oprette en ny computer-kasse – her kan man fx sætte CPU-størrelse, antal MB RAM, størrelse på harddiske etc. Man kan spørge sig selv, hvorfor det er smart at bruge OOP i stedet for funktioner. Det er faktisk pga., at det er MEGET lettere at genbruge. Man kan fx lave en fil med computer-klassen, og denne fil includer man så i sine scripts. Og når man har en rettelse, så skal man blot lave den i den ene fil – det kunne fx være, at man ville udvide computer-klassen så den også indeholdt oplysninger om software (fx OS).

Et eksempel

Fold kodeboks ind/udKode 


Vi kan nu prøve at ”oprette” en computer. Den kalder vi myComputer:
Fold kodeboks ind/udKode 

Som man kan se, så skal man bruge funktioner til at give variabler i klassen værdier. Man kan ikke adressere dem direkte – hvilket jo også er meget fornuftigt!


Konstruktør


Når man laver en klasse kan man også lave en konstruktør. En konstruktør i denne sammenhæng er en, der bliver kaldt, når man opretter klassen. Det kan fx være smart da man så kan bestemme CPU-størrelse og RAM-mængde, når man opretter den. Denne funktion skal hedde det samme som klassen – i vores tilfælde vil den derfor se således ud:
Fold kodeboks ind/udKode 


Det kan bruges således:
Fold kodeboks ind/udKode 



Afsluttende bemærkning


Jeg kan godt have svært ved at se, hvad OOP skal bruges til ved nogle ting, men ved andre ting er det virkelig smart! Men husk – det er objekter man arbejder med! Overført til ”det virkelige liv” kan det være bil, hus, computer, cykel etc.!

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (15)

User
Bruger #3966 @ 05.06.03 13:39
Nice... havde ikke helt fundet ud af hvad man brugte classes til før jeg læste denne artikel ;D
User
Bruger #2416 @ 05.06.03 14:05
Ser ganske godt ud. Måske den er lidt kort, men det er måske bare fordi det ikke er svære :D
Hjalp mig lidt med hvad klasser helt præcist er:)
Takker
User
Bruger #714 @ 05.06.03 17:33
Meget fin artikel, dog er der en enkelt fejl:

"Som man kan se, så skal man bruge funktioner til at give variabler i klassen værdier. Man kan ikke adressere dem direkte – hvilket jo også er meget fornuftigt!"

Det kan man faktisk sagtens $class->var. Dog er det god OO skik at gøre som du gør.

Udover det, så synes jeg at når artiklen er skrevet på det tidspunkt som den er skrevet på, så bør du også skrive om det nye i PHP5
User
Bruger #2968 @ 06.06.03 23:18
Til alle jer der gerne vil lære noget om PHP5's oop muligheder, så kig her:
http://www.phpvolcano.com/articles/php5/
User
Bruger #2730 @ 12.06.03 14:57
Objektorienterethed er som sådan ikke noget med klasser (det her lyder helt i skoven det ved jeg) en klasse er egentligt bare en datatype! i det øjeblik du laver en instans af klassen (MyComputer mycomp=new MyComputer) er det et objekt. Objektorienterhed er også at sende et objekt med som parameter i en funktion, fx. function udskriv($enCpmuter)....... herefter skal funktionen så kaldes med udskriv(mycomp). Dette er nogle af de småting der gør objektorienteret programmering... ellers meget interessant artikel
User
Bruger #2193 @ 14.06.03 10:20
Til Brian Hvarregaard's kommentar ovenfor:
Hvordan nogen kan postulere at klasser ikke som sådan har noget med Objektorientering at gøre, fatter jeg ikke.
Klasser er ikke objekter, nej, men det er definitionen af typerne og hvilke attributter, metoder osv objekter af typen har.
Dvs klasser bruges til at definere objekt-typer ... altså modellere objecterne ... er det ikke rimeligt objektorienteret?!?
Held og lykke med at lave OOP uden klasser ... hvad vil du bruge som model til at instansiere dine objekter fra?!? Primitiver?!?
Klasser er ikke bare datatyper .. det er definitioner af objekt-typer og alt hvad der berører denne type (adfærd,arv,tilgang ....).
User
Bruger #2796 @ 17.06.03 18:17
Fin artikel, men jeg ville godt have set et eksempel på, hvordan du udvidder en klasse, og derefter bruger denne. Dvs. hvordan skal denne klasse inkluderes? ligesom man ellers gør? og skal det være en require eller en include der skal bruges til det?
User
Bruger #3116 @ 21.06.03 09:30
OOP er en maade at organisere sit program paa. Du kan ogsaa skrive objekt-orienteret kode i C og Perl.
User
Bruger #2622 @ 28.06.03 20:08
Artiklens faglige indhold er god nok. Du formidler dog ikke OOP-ideen på en rigtig og god måde. Her ville en henvisning til en eller anden teoretisk side være godt. Dit indledningsafsnit påstår at OOP bare er en udlagring af funktioner. Senere udbedrer du dog definitionen. Det er ikke nemt at forklare OOP!
Ang. Jonatan Hertels kommentar: Hertel har en lille smule ret i sin opfattelse. Dog interpreterer han Brians kommentar på en alt for dårlig måde. Han har enten ikke læst Brians kommentar fornuftigt, eller VIL simpelthen ikke forstå den. Som Brian siger, "..lyder helt i skoven..", essensen kan jeg følge. Brian siger, at OOP ikke er defineret ved klasser. Og det har han unægteligt ret i!
Jeg syntes Hertel skulle være mere tilbageholdender og høfligere i sine formuleringer. Du kan godt sige til hvis der er noget du ikke fatter Jonatan, det skal du ikke straffes for.
Mvh Jakob Wilm
User
Bruger #4362 @ 29.08.03 16:02
Glimrende artikel;)
Keep up the good work
User
Bruger #4039 @ 29.11.03 15:22
Kanon artikel!
keep it up!
User
Bruger #3951 @ 05.02.04 23:01
Fin artikel, meen jeg kan ikke få¨det til at virke, skal alle 4 vinduer med kode sættes ind i samme dokument.....og i den givne rækkefølge????
User
Bruger #5523 @ 30.03.04 15:28
Til Michael:
...du bør generelt opretter dine klasser i seperate filer, da det øger genbrugeligheden en del ;o)

I det her tilfælde kan du jo evt. lave en fil/side indeholdende selve klasse-definitionen - eksempelvis "classComputer.php" - og endelig en der så gør brug af klassen (den kunne du passende kalde "computer.php").

NB. Du skal dog lige være opmærksom på at du skal gøre klassen "tilgængelig" for i dit php-script i "computer.php vha. en include-sætning.
Det gør du ved at lave skrive "include('classComputer.php')"... fungerer på samme måde som java's "package" keyword. ;o)
User
Bruger #4039 @ 23.11.04 10:13
får vi aldrig en fortsættelse? :D
User
Bruger #8985 @ 20.09.08 12:54
Jeg synes ikke det fremgår af artiklen, at du ved særlig meget om klasser i PHP. En konstruktør behøver eksempelvis ikke hedder det samme som klassen, den kan hedde __construct.

Hvorfor har du ikke taget destruktører med? I PHP hedder de __destruct, så der desværre ingen ~klassenavn for C++-programmørerne her.

Og så var der det, som Kaare gjorde dig opmærksom på. Det gælder jo kun for private og protected medlemmer, hvilket du forresten heller ikke har inkluderet. Hvor er de statiske medlemmer?

Ja, artiklen hedder "Start på OOP", og bør derfor ikke indeholde alle de avancerede metoder og facts... Men både du og jeg ved, det ikke er derfor, din artikel er så kort. Det må blive en 1'er.
Du skal være logget ind for at skrive en kommentar.
t