Hvor fik Objektorienteret programmering navn fra det?

  • Mark Lucas
  • 0
  • 5020
  • 279
Reklame

Objektorienteret er ikke kun et tilfældigt buzzword, du hører i programmeringskredse. Der er en grund bag navnet - men hvad? Deltag i mig, mens jeg udforsker nogle af de grundlæggende elementer i programmeringskoncepter og forklarer netop hvorfor objektorienteret programmering driver teknologien bag enhver moderne software og kontrasterer den til Procedurel og logisk baseret programmering.

Procedureprogrammeringshistorie

Da computere først blev opfundet, skulle de programmeres eksplicit med enkle instruktioner - og “software” var blot en samling af disse ekstremt enkle kommandoer, der var samlet sammen, der ville køre i rækkefølge.

Oprindeligt kræves disse maskinkoder, der skal skrives - flyt denne “bit” fra denne hukommelse til dette sted, og udfør en logisk “og” operation på det med denne bit osv. - men snart blev disse abstraheret til et højere niveau ved hjælp af BASIC.

Jeg formoder, at de fleste af jer er stødt på BASIC (nybegynder symbolsk instruktions-kode) i skolen. Det er et perfekt eksempel på et procedureprogrammeringssprog. Selv mit første programmeringsforay brugte BASIC på en Amstrad CPC-64. Hver linje begynder med et linjenummer, efterfulgt af en simpel instruktion i menneskeligt læsbart sprog.

Da proceduresprog følger kommandoerne efter hinanden, er det generelt let for mennesker at følge med på, hvad der sker i programmet. Det er imidlertid også vanskeligt at gøre noget ud over en simpel læringsøvelse - som bringer os videre til oprettelsen af ​​objektorienteret programmering.

Objektorienteret?

Med objektorienteret programmering er ideen at gruppere relaterede variabler og funktionalitet i et objekt, der repræsenterer en slags kompleks datastruktur. Dette objekt kan derefter genbruges flere gange eller udvides til at være noget endnu mere komplekst.

For eksempel kan et spil have et spillerobjekt. Hvert spillerobjekt i spillet repræsenterer en enkelt, unik spiller i det virkelige liv i vores imaginære multiplayer-onlinespil. Hvert spillerobjekt har et kaldenavn, en aktuel placering, en opgørelse og en bevægelsesfrekvens. Selvom hver spiller er unik, ønsker vi stadig, at de skal dele den samme basisniveau-funktionalitet. Hver spiller kan have en bevæge sig funktion, der får spilleren til at bevæge sig frem X antal firkanter. Hver spiller kan have en anden bevægelsesfrekvens, men når vi beder spilleren om at bevæge sig i en kommando, vil den vide, hvordan man reagerer i henhold til sin egen internetmekanik.

Hvorfor er dette nyttigt? Ved at tage et mere virkeligt eksempel - fordi moderne grafiske brugergrænseflader ville være umulige uden objekter - har alle operativsystemer et Window-objekt. Det er derfor let at have en ny “vindue” komplet med lukke og fuldskærmsknapper og muligheden for at blive flyttet rundt - uden at skulle programmere det selv. Alt hvad du skal gøre er at sige oprette et vindue.

Faktisk består moderne software af tusinder over tusinder af objekter - ikke kun vinduer, men knapper og formfelter og advarselsbokse (som i sig selv er en speciel slags vindueobjekt) - og det er kun den måde, de er arrangeret på, og logikken af interaktion mellem dem, der gør denne software anderledes end andre. Det betyder, at programmører og software-designere er fri til at koncentrere sig om at fremstille kernemekanikken i deres program uden at skulle genopfinde hjulet hver gang.

En anden fordel ved objektorienteret design er, at funktionalitet er adskilt og usynlig for hinanden. Så når spilleren trykker på frem-tasten i vores spil, er det opkald det flytte funktion i spillerobjekt. Hvis vi foretager en lille ændring af, hvordan dette træk nøjagtigt udføres i afspillerobjektet - som at hoppe i stedet for at gå - så behøver vi ikke at justere tastaturlytteren. Det ringer stadig “bevæge sig” uanset hvad der sker internt i spillerobjektet - så vi kan ændre funktionalitet uden at bryde alt andet.

Det samme er tilfældet i operativsystemer - hvis brugeren pludselig beslutter at ændre deres vinduesfarve til rød, behøver du ikke at registrere det og gøre vinduet rødt også - det hele er indbygget i vindueobjektet.

Arv

Når vi først har objekter, kan vi også udvide og arve dem for at producere mere nyttige objekter med forskellig opførsel eller yderligere funktionalitet. Du kan genfind hjulet igen - hvis du vil. I vores spillereksempel ønsker vi måske at oprette en “superman” objekt. Supermand er stadig en spiller, den samme som alle andre - han vil også have et kaldenavn, og ønsker at blive noteret på de samme spillerledertavler - men i stedet for den standardbevægelseshandling, der fører spillerobjektet X-rum fremad, ønsker vi ham at flyve i stedet - bevæg 10 kvadrater ad gangen over toppen af ​​alle objekter i vejen. Ved at udvide det grundlæggende spillerobjekt kan vi “arve” al den nyttige funktionalitet uden at skulle omskrive det hele igen - men vi kan stadig “overstyring” bevægelsesfunktionen med vores specielle supermandflyvning!

Objektorienteret programmering er en absolut åbenbaring, hvis du kun nogensinde havde oplevet procedureprogrammering, og jeg synes personligt, det er en skam, at en simpel slags OOP-sprog ikke undervises i ungdomsskolen.

En sidste ting: Logikbaserede programmeringssprog

Disse er af særlig interesse for mig, da de generelt er mest nyttige til alt, hvad der vedrører kunstig intelligens. Logikbaserede programmeringssprog, såsom Prolog, bruger ikke kommandoer og instruktioner i traditionel forstand. I stedet vil de løse et problem i betragtning af et sæt regler og betingelser.

Tænk på et middagsselskab, som du er vært for din familie. Din tante kan ikke sidde ved siden af ​​din onkel, fordi de vil diskutere; du vil ikke have to børn, der sidder sammen, fordi de vil være små rivaler; du ønsker bestemt ikke at sidde mellem to børn. Det er det lige der - det er dit Prolog-program skrevet. Nu skal du bare give det en liste over børn og voksne, der kommer til festen, så viser den en liste over mulige siddepladsforslag!

Jeg håber du nød denne introduktion på begynderniveau til programmeringskoncepter. Jeg er ked af, at jeg ikke kunne gå nærmere ind på, og der er selvfølgelig en million ting, som jeg ikke har berørt. Hvis du vil lære mere, så fortæl mig det i kommentarerne. Måske kunne vi lave en række begynderobjektorienterede programmeringsvejledninger til forskellige sprog, hvis der er nok interesse? Sørg for også at tjekke vores programmeringsrelaterede arkiver med forskellige værktøjer og programmeringswebsteder.

Billedkredit: ShutterStock




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.