Hvis du har gjort noe nybegynnerprogrammering, eller til og med begynt å se på forskjellige språk, har du sannsynligvis kommet over uttrykket "objektorientert programmering" (eller "OOP").
Det er mange tekniske forklaringer på hva det er, men i dag skal vi se på å definere objektorientert programmering på en enkel måte.
Før vi starter: Prosessale språk
For å forstå hva et objektorientert programmeringsspråk er, må du forstå hva det erstattet. Tidlige programmeringsspråk var prosessoriske, såkalt fordi programmøren ville definere et svært spesifikt sett med prosedyrer som datamaskinen ville påta seg.
På de tidligste dagene ble prosedyrer skrevet på stempelkort. Disse trinnene tok inn data, utførte en sekvens av handlinger på dataene, og deretter utdata nye data.
Prosessale språk fungerte bra for en tid (og noen er fortsatt i bruk). Men når du vil programmere noe utover en grunnleggende rekkefølge, kan prosessprosjekter bli vanskelig å administrere. Det er der objektorientert programmering kommer inn.
Objektet med objektorientert programmering
Så da, hva er objektorientert programmering?
Det første objektorienterte språket (generelt enig om å være Simula) introduserte ideen om gjenstander . Objekter er samlinger av informasjon som behandles som en entall.
Vi dykker dypere inn i hva det egentlig betyr på et sekund med et eksempel, men først må vi snakke om klasser . Klasser er slags som pre-objekter. De inneholder en liste over attributter som, når de er definert, blir et objekt.
La oss ta et eksempel på å programmere et sjakkspill. Vi kan ha en klasse som heter Piece. Innenfor stykke har vi en liste over attributter:
- Farge
- Høyde
- Form
- Bevegelse tillatt
Et objekt definerer bare en bestemt forekomst av en ting som tilhører den klassen.
Så vi kunne ha et objekt som heter WhiteQueen. Det objektet ville ha definisjoner for alle fire attributter (hvitt, høyt, sylindrisk med crenellations, hvilket som helst antall mellomrom i hvilken som helst retning). Det kan også ha metoder eller funksjoner.
Hva gjør dette så mye bedre enn prosedyrisk tilnærming?
Kort sagt, gjør objektorienterte programmeringsspråk (som Java) det enklere å organisere data og kode på en måte som er mer allsidig for større prosjekt.
For å diskutere det i litt mer detalj, snakker vi om de fire grunnleggende om objektorientert programmering.
Objektorientert programmering: Abstraksjon
Bare fordi du vil bruke noe, betyr det ikke at du trenger å vite hvordan det fungerer. En espressomaskin er for eksempel kompleks. Men du trenger ikke å vite hvordan det fungerer. Du trenger bare å vite at når du slår "På", kommer du til å få espresso.
Det samme gjelder for objekter i objektorientert programmering. I vårt sjakkeksempel kan vi ha en move () -metode. Denne metoden kan kreve mye data og andre metoder. Det kan hende at startposisjon og sluttposisjonsvariabler. Det kan bruke en annen metode for å avgjøre om det er tatt et stykke.
Men du trenger ikke å vite det. Alt du trenger å vite er at når du forteller at stykket skal bevege seg, beveger det seg. Det er abstraksjon.
Objektorientert programmering: Encapsulation
Encapsulation er en av måtene som objektorientert programmering skaper abstraksjon. Hvert objekt er en samling av data som behandles som en enkelt enhet. Og innenfor disse objektene er data-både variabler og metoder.
Variablene i et objekt holdes generelt private, noe som betyr at andre objekter og metoder ikke kan få tilgang til dem. Objekter kan bare påvirkes ved å bruke metodene sine.
Et biskopobjekt kan inneholde flere opplysninger. For eksempel kan det ha en variabel som heter "posisjon". Denne variabelen er nødvendig for å bruke metoden move (). Og selvfølgelig har den en farge.
Ved å gjøre posisjonsvariabelen privat og flytten () -metoden offentlig, beskytter en programmerer flyttningsvariabelen fra å bli påvirket av noe annet. Og hvis fargen er en privat variabel, er det ikke mulig å endre et annet objekt med mindre det er en metode som tillater endringen. (Som du sannsynligvis ikke ville ha, da farge på brikken skal forbli konstant.)
Disse variablene og metodene holdes innenfor biskopobjektet. Fordi de er innkapslet, kan en programmerer gjøre endringer i strukturen eller innholdet i objektet uten å bekymre seg for det offentlige grensesnittet.
Objektorientert programmering: arv
I tillegg til klasser har objektorienterte programmeringsspråk også underklasser. Disse inneholder alle attributter fra foreldreklassen, men de kan også inneholde andre attributter.
I vårt sjakkspill trenger bondestykkene en metode som kan gjøre dem til andre brikker hvis de gjør det til enden av brettet. Vi kaller det transformPiece () -metoden.
Ikke alle deler trenger transformPiece () -metoden. Så vi vil ikke sette den i stykklassen. I stedet kan vi lage en underklasse som heter Pawn. Fordi det er en underklasse, arver det alle attributter fra Stykke. Så en forekomst av underklassen Bonde inneholder en farge, høyde, form og bevegelse tillatt.
Men det inkluderer også transformPiece () -metoden. Nå trenger vi aldri å bekymre oss for ved et uhell å bruke den funksjonen på en røyk. Her er en teknisk forklaring:
Å lage underklasser sparer også mye tid. I stedet for å lage nye klasser for alt, kan programmerere lage en grunnklass og deretter utvide den til nye underklasser når de trenger det. (Det er imidlertid verdt å merke seg at over-reliance on arv er dårlig 10 Grunnleggende programmeringsprinsipper Hver programmerer må følge 10 grunnleggende programmeringsprinsipper Hver programmerer må følge Skriv alltid kode som kan vedlikeholdes av alle som kanskje ender med å jobbe med programvaren. slutt, her er flere programmeringsprinsipper for å hjelpe deg med å rydde opp din handling. Les mer.)
Objektorientert programmering: Polymorfisme
Polymorfisme er et resultat av arv. Full forståelse av polymorfisme tar litt programmeringskunnskap, så vi skal bare holde fast ved det grunnleggende her. Kort sagt, polymorfisme tillater programmerere å bruke metoder med samme navn, men med forskjellige objekter .
For eksempel kan vår stykklasse ha en bevegelsesmetode () som beveger et stykke ett mellomrom i alle retninger. Det fungerer for kongen, men ikke for noe annet. For å fikse dette problemet kan vi definere nyflyttingsmetode () i underklassen Rook som definerer bevegelse som et ubegrenset antall mellomrom fremover, bakover, til venstre eller høyre.
Nå, når en programmerer påberoper seg bevegelsen () -metoden og bruker et stykke som argumentet, vil programmet vite nøyaktig hvordan brikken skal bevege seg. Dette sparer massevis av tid over å prøve å finne ut hvilken av mange forskjellige metoder du bør bruke.
Objektorientert programmering i et nøtteskall
Hvis hodet ditt spinner litt etter de siste fire definisjonene, ikke bekymre deg for mye. Her er de viktigste tingene du må huske:
- Objektorientert programmering samler inn informasjon i enkelte enheter som kalles objekter.
- Hvert objekt er en enkelt forekomst av en klasse.
- Abstraksjon gjemmer det indre arbeidet til et objekt når det ikke er nødvendig å se dem.
- Innkapsling lagrer relaterte variabler og metoder innenfor objekter og beskytter dem.
- Arv gjør det mulig for underklasser å bruke attributter fra foreldreklasser.
- Polymorfisme tillater objekter og metoder å håndtere flere forskjellige situasjoner med et enkelt grensesnitt.
Hvis du kan huske disse punktene, har du et godt håndtak på hva objektorientert programmering er. De fire grunnleggende om objektorientert programmering, som jeg nevnte, kan være litt vanskelig å få tak i. Men når du begynner programmering, blir de tydeligere.
Husk at vi bare har diskutert generaliteter i denne artikkelen. Ulike objektorienterte språk vil ha sine egne kjennskaper og måter å få ting til å skje. Når du velger riktig språk for deg Leter du etter de beste programmeringsspråkene? Start her! Leter du etter de beste programmeringsspråkene? Start her! Enten du er helt ny på programmeringsspråk eller ser ut til å hoppe inn i en ny type programmering, er et av de viktigste spørsmålene å spørre: "Hvilket programmeringsspråk passer for meg?" Les mer, du vil begynne å lære hvordan det setter OOP-prinsipper i praksis.