Objektorienterad programmering i WordPress Klasser

Som beskrivs i det första inlägget i denna serie, närmar vi oss begreppet objektorienterad programmering inom ramen för WordPress, och det gör vi för mycket nybörjare.

Det betyder att om du aldrig har hört talas om OOP, om du har varit nyfiken på att lära dig det, och du är någon som är intresserad av WordPress och lär dig hur man utvecklar lösningar på toppen av det, då är den här serien för dig.

Under nästa uppsättning artiklar kommer vi att täcka alla viktiga aspekter av objektorienterad programmering. När vi gör det ska vi titta på hur vi kan tillämpa det vi har lärt oss genom att bygga en arbetslösning för WordPress.

Men först måste vi börja med grunderna.

Vad är klasser?

Om du skulle fråga 10 olika utvecklare för deras definition av en klass skulle du få många liknande svar, men få var faktiskt desamma. Faktum är att den som jag hörde upprepade oftast när jag var yngre gick så här:

En klass är en ritning för att skapa ett objekt.

I teorin låter det bra speciellt om du vet vad ett objekt är. Men det är problemet, eller hur? Vi försöker lära oss om objektorienterad programmering, så det finns ingen garanti för att vi ens vet vad ett objekt är; Därför, hur kan vi förstå att en klass tjänar som en ritning för den?

På ett sätt frågar det frågan.

Så låt oss säkerhetskopiera några steg och definiera vad ett objekt är för att tydligare definiera vad en klass är.

Förstå Objekt

Hela ideen om det objektorienterade programmeringsparadigmet är att vi som programmerare lättare kan modellera informationen som vi ser i den verkliga världen med hjälp av konstruktioner i en kod.

Till exempel i den verkliga världen har vi objekt som kan beskrivas med adjektiv, och dessa objekt kan utföra handlingar. Även om det här kan vara lite cliche, tänk en stund, om en bil:

  • Det har flera adjektiv som storlek och färg.
  • Det kan köra och det kan parkera.

Återigen, ett enkelt exempel, men det visar på att allt som vi har i den verkliga världen vanligtvis kan reduceras till ett substantiv som kan beskrivas av dess adjektiv och de handlingar som det utför.

Så låt oss generalisera denna idé till objekt. Låt oss faktiskt ersätta ett ord för en annan:

  • Ett substantiv är ett objekt.
  • Ett adjektiv och ett attribut (eller en egenskap).
  • Ett verb är en metod (eller en funktion).

Lätt nog, eller hur? Kort sagt är det att vi borde kunna beskriva de saker som vi ser i den verkliga världen som föremål inom ett programmeringsparadigm. Observera att vissa språk kallar attribut egenskaper, och vissa samtal metoder fungerar. Det spelar ingen roll också, det är detsamma. De hänvisar helt enkelt till adjektiv om respektive objekt och handlingar som den kan ta.

Dåliga exempel

Därefter, de flesta programmeringskurser eller böcker alltid börja med ett exempel på hur objekt är avsedda att modellera verkliga världsobjekt (som jag gjorde med bilexemplet ovan). 

Och i viss mån finns det sanningen. För de som ha har arbetat med utveckling, då är du troligt förtrogen med hur vi kan modellera människor inom ramen för vår ansökan, men det går före oss själva.

Även om det är sant att vi kan använda objektorienterad programmering för att modellera verkliga världsobjekt, har jag funnit att oftare det inte modellerar jag en mer generaliserad form av ett verkligt världsobjekt - som en användare snarare än a person - och att de åtgärder de utför är mer unika för dem.

För det ändamålet kommer de exemplar som jag vill ge genom hela denna artikel och de övriga i denna serie att vara mer inriktade på praktiska tillämpningar inom datorprogrammering. Ingen kommer att skriva en bil plugin och ingen kommer att skapa ett djurobjekt (vilket är något du ofta ser och hör i introduktionskurser).

Istället kommer vi att försöka fokusera lite mer på objekt som är mer benägna att ses i programmeringsområdet - inte i den verkliga världen. Inte för att objektorienterad programmering är svag, men eftersom sättet att gå på lärande är svag.

Bra exempel

Det här förstås naturligtvis frågan om vad som är ett bra exempel? Problemet med att svara på en fråga som detta är att det bokstavligen kan vara en stor mängd olika saker. 

Detta inkluderar objekt som:

  • ett blogginlägg,
  • ett dokument som en resumé,
  • ett autentiserings- eller autentiseringssystem,
  • en produkt,
  • en lösenordsgenerator,
  • … och så vidare.

Och du ser: Många av dessa saker finns inte egentligen i den verkliga världen. Till exempel är blogginlägg inte konkreta. Det är saker vi läser på våra skärmar. Men betyder det att de inte har egenskaper som ett datum, en tid och en författare? Eller betyder det att de inte har handlingar som publicera och ta bort?

Självklart inte.

Så när vi går igenom hela denna serie kommer vi att prata om objekt när det gäller de saker som vi är mer benägna att arbeta med.

Jag ser oss inte programmera ett djur - och absolut inte så i WordPress - när som helst under denna serie :).

Tillbaka till grunderna

Okej, nu när vi har tagit en kort fördjupning till Vad objekt är faktiskt och bra och dåliga exempel på var och en, det är dags att faktiskt börja prata om klasser och hur de verkligen tjänar som ritningar för objekt.

Vid programmering skapas ett objekt från en klass. Det betyder att en klass definierar alla egenskaper som ett objekt har och de åtgärder som det kan ta, och sedan skapar datorn ett objekt i minnet.

När det gäller klasser kan du höra utvecklare diskutera skrivklasser, definiera klasser eller bygga klasser. Vilket som helst av dessa villkor är acceptabelt.

Därefter kan du höra utvecklare som pratar om att skapa objekt. Handlingen att skapa ett objekt kallas instantiation. Ja - det är ett stort ord för ett relativt enkelt koncept. Men tänk på det så här: När du har en klass har du en definition där du kan skapa flera instanser av ett objekt.

Om vi ​​behöver dra en analogi till den verkliga världen, tänk först om en uppsättning ritningar för ett hus. Det lägger ut planlösningar, mått, väggar och så vidare som ger byggnadsarbetare information om hur man bygger ett hus. Då, när det är dags att faktiskt bygga ett hus, bygga ett team byggnadsarbetare huset utifrån ritningen.

Sådan är fallet med klasser, instantiering och objekt. Klasser är ritningarna, datorn är laget av byggnadsarbetare, och föremålen är huset. Och precis som flera hus kan byggas upp från en enda ritning, så är fallet med föremål och klasser.

De mentala modellerna av klasser och objekt

När det gäller skrivkod kan vissa människor bilda objektet i huvudet - andra kanske inte. 

Personligen tycker jag att det här har mer att göra med hur vi alla tenderar att lära och bearbeta information, men jag tror att det är möjligt att börja mentala bilder hur mjukvarusystem fungerar tillsammans ju längre du skriver kod.

Här kommer vi inte att titta på något komplext system; dock, är ska ta en titt på ett exempel på en klass och sedan en visuell representation av vad som kan se ut när det gäller kod och i form av en mental bild.

En klass för en blogginlägg

Eftersom vi arbetar med WordPress, kanske ett första exempel för en klass skulle vara en som representerar ett blogginlägg.

Beviljas, det här är ett enkelt exempel för att visa idéer om attribut och funktioner, men vi kommer att täcka olika konstruktioner i mer detaljer i framtida artiklar.

Så med det sagt, låt oss säga att vi ska skapa en klass för ett blogginlägg. Låt oss också säga att vårt blogginlägg kommer att ha en författare, ett datum då det publicerades, oavsett om det publiceras, och åtgärderna för att publicera och ta bort.

Ett exempel på klassdefinition för ett blogginlägg med dessa attribut och funktioner kommer att se ut så här:


klass Blog_Post privat $ författare; privat $ publish_date; privat $ is_publicerad; public function publicera () // Publicera artikeln här public function delete () // Radera artikeln här

För dem som är bekant med objektorienterad programmering kan du känna igen några av ovanstående uppgifter, och du kan också inse att jag har utelämnat vissa saker (som konstruktören). Oroa dig inte om det - vi kommer att täcka dessa begrepp senare.

För dem som är helt nya för programmering ser det ut som en grundläggande klassdefinition ser ut. För tillfället oroa dig inte för orden privat och offentlig som vi kommer att täcka dem senare.

I stället fokusera på $ författare, $ PUBLISH_DATE, och $ is_published. Dessa är attributen. Observera att de sitter ovanför funktionsdefinitionerna i klassen. Dessa är analoga med adjektiv som beskriver Blog_Post.

Därefter har vi funktionerna publicera() och radera(). Dessa två funktioner är de åtgärder som kan vidtas de Blog_Post. Kom ihåg, hur saker i den verkliga världen kan röra sig (som en bil kan köra), kan ett blogginlägg publiceras.

En visuell representation

Så vad händer när du faktiskt instämmer ett blogginlägg? Det vill säga när vi skapar ett blogginlägg i kod, hur kan vi mentalt bilda vad som händer inom datorn.

Låt oss först beskriva hur ett blogginlägg är instansierat. Kom ihåg att instantiated är ett ord som byggdes för byggnadsarbetare - det är hur ett objekt skapas från en klass.

Låt oss sedan se hur vi kan använda den enda klassdefinitionen för att skapa tre olika blogginlägg:

$ first_post = nya Blog_Post (); $ second_post = ny Blog_Post ();

Lätt nog att läsa, eller hur? Ovan har vi skapat två variabler som refererar till två helt olika Blog_Post objekt. 

Observera att även om vi talar om detta mer i en framtida artikel, ordet ny Det som instruerar datorn att inställa en Blog_Post från oss från klassdefinitionen.

Så låt oss ta en titt på det första exemplet där vi får vår första instans av Blog_Post.

Observera i denna illustration, vi har $ first_post variabel som hänvisar till förekomsten av Blog_Post som skapades. De Blog_Post existerar i datorns minne, det har dess attribut som är tillgängliga samt de metoder som finns tillgängliga.

Vi kan få tillgång till alla dessa via $ first_post variabel som refererar till detta objekt. Vi kommer att prata mer om det senare i serien.

Men hur är det med $ second_post? Hur gör det? den där se inom ramen för objektorienterad programmering?

Om du jämför de två illustrationerna ser de ganska mycket ut, rätt? $ first_post refererar till en förekomst av Blog_Post, $ second_post hänvisar till en andra instans av Blog_Post även om de både kom från en enda klass.

Observera att för dem som är tekniskt smarta, det är möjligt för båda variablerna att hänvisa till en enda instans, men det ligger utanför ramen för denna artikel.

Vad är nästa??

Hur som helst, här borde du ha en förståelse på hög nivå om vad en klass är, vilken roll den spelar i objektorienterad programmering och hur vi kan skapa instanser av objekt som är åtkomliga genom variabler.

Detta visar oss fortfarande inte hur vi ska interagera med klasserna men gör det? Vi kommer till det, men först måste vi diskutera några av de mer primitiva aspekterna av programmering som strängar, arrays, loopar och conditionals.

Var och en av de ovan nämnda konstruktionerna hjälper oss att ge våra föremål liv och, när vi väl har tagit en rundtur på var och en av dem, kommer vi tillbaka för att göra mer mogna klasser som faktiskt kan fungera.