Var fick Objektorienterad programmering få sitt namn från?

Var fick Objektorienterad programmering få sitt namn från? / Webkultur

Objektorienterad är inte bara ett slumpmässigt buzzword som du hör i programmeringscirklar. Det finns en anledning bakom namnet - men vad? Följ med mig när jag utforskar några av de grundläggande principerna för programmeringskoncept och förklara varför varför objektorienterad programmering driver tekniken bakom någon modern mjukvara och kontrasterar den till Procedural och Logic Based Programming.

History of Procedural Programming

När datorer först uppfanns, behövde de programmeras explicit med enkla instruktioner - och “programvara” var bara en samling av dessa extremt enkla kommandon ihop som skulle springa i turordning.

Inledningsvis måste dessa nödvändiga maskinkod skrivas - flytta den här “bit” från det här minnet till den här platsen, och utför en logisk “och” operation på den med den här biten etc. - men snart blev dessa abstraherade till en högre nivå med hjälp av BASIC.

Jag misstänker att de flesta av er har stött på BASIC (Beginners All Purpose Symbolic Instruction Code) i skolan. Det är ett perfekt exempel på ett processuellt programmeringsspråk. Även min första programmeringsforay använde BASIC på en Amstrad CPC-64. Varje rad börjar med ett linjenummer, följt av en enkel instruktion i ett läsbart språk.

Eftersom procedurspråk följer kommandona en efter en, är det i allmänhet lätt för människor att följa med vad som händer i programmet. Men det är också svårt att göra något utöver en enkel inlärningsövning - vilket leder oss till skapandet av objektorienterad programmering.

Objektorienterad?

Med objektorienterad programmering är tanken att gruppera relaterade variabler och funktionalitet till ett objekt, vilket representerar en viss komplex datastruktur. Det objektet kan sedan återanvändas flera gånger, eller utvidgas till att vara något ännu mer komplext.

Ett spel kan till exempel ha ett spelarobjekt. Varje spelarobjekt i spelet representerar en enda, unik verklighetsspelare i vårt imaginära multiplayer online-spel. Varje spelarobjekt har ett smeknamn, en aktuell plats, en inventering och en rörelseshastighet. Trots att varje spelare är unik, vill vi fortfarande att de delar samma basnivåfunktionalitet. Varje spelare kan ha en flytta funktion, vilket gör att spelaren går framåt X antal kvadrater. Varje spelare kan ha en annan draghastighet, men när vi berättar spelaren att flytta i ett kommando, kommer den att veta hur man ska reagera enligt sin egen Internetmekanik.

Varför är det här användbart? Ta ett mer verkligt exempel - eftersom moderna grafiska användargränssnitt skulle vara omöjliga utan föremål - ger alla operativsystem ett Window-objekt. Det är därför lätt att få en ny “fönster” komplett med nära och fullskärmsknappar, och möjligheten att flyttas - utan att behöva programmera det själv. Allt du behöver göra är att säga skapa ett fönster.

Faktum är att modern mjukvara består av tusentals tusentals objekt - inte bara fönster, men också knappar och formfält, samt varningsboxar (som själva är en speciell typ av fönsterobjekt) - och det är bara sättet de ordnas och logiken av interaktion mellan dem som gör denna programvara olika för andra. Det betyder att programmerare och mjukvarudesigners är fria att koncentrera sig på att göra kärnmekaniken i sitt program utan att behöva återuppfinna hjulet varje gång.

En annan fördel med objektorienterad design är att funktionaliteten är åtskild och osynlig för varandra. Så när spelaren trycker framåtnyckeln i vårt spel, det samtal de flytta funktionen i spelarobjekt. Om vi ​​gör en liten förändring till hur den rörelsen exakt utförs inom spelarobjektet - som att hoppa istället för att gå - behöver vi inte justera tangentbordslyttaren. Det ringer fortfarande “flytta” oavsett vad som händer internt i spelarobjektet - så vi kan ändra funktionalitet utan att bryta allt annat.

Detsamma gäller i operativsystem - om användaren plötsligt bestämmer sig för att ändra sin fönsterfärg till röd, behöver du inte detektera det och göra fönstret rött också - det är allt inbyggt i fönstret objektet.

Arv

När vi har föremål kan vi också förlänga och ärva dem för att producera mer användbara objekt med olika beteenden eller ytterligare funktionalitet. Du kan återuppfinna hjulet - om du vill. I vårt spelarexempel kanske vi vill skapa en “stålman” objekt. Superman är fortfarande en spelare, samma som alla andra - han vill också ha ett smeknamn och vill vara listad på samma spelarledarkort - men i stället för standardrörelsen som går spelaren objekt X-spell framåt vill vi att han flyga istället - flytta 10 rutor åt gången över toppen av alla föremål i vägen. Genom att utöka det grundläggande spelarobjektet vi kan “ärva” all den användbara funktionen utan att behöva skriva om allt igen - men vi kan fortfarande “åsidosätta” flytta funktionen med vår speciella superman flytta flytta!

Objektorienterad programmering är en absolut uppenbarelse om du någonsin någonsin upplevt procedurprogrammering, och jag tycker personligen att det är synd att en enkel typ av OOP-språk inte lärs på gymnasiet.

En sista sak: Logikbaserade programmeringsspråk

Dessa är av särskilt intresse för mig, eftersom de i allmänhet är mest användbara för allt relaterat till artificiell intelligens. Logikbaserade programmeringsspråk, som Prolog, använder inte kommandon och instruktioner i traditionell mening. Istället kommer de att lösa ett problem med en uppsättning regler och villkor.

Tänk på ett middagsfest du är värd för din familj. Din moster kan inte sitta bredvid din farbror eftersom de kommer att argumentera; du vill inte ha två barn som sitter tillsammans för att de kommer att vara små rascals; du vill verkligen inte sitta mellan två barn. Det är precis där - det är ditt Prolog-program skrivet. Nu bara ge den en lista över barn och vuxna som kommer till festen, och det kommer att ge en lista över möjliga sittplatser förslag!

Jag hoppas att du njöt av denna nybörjarnivå introduktion till programmeringskoncept. Jag är ledsen att jag inte kunde gå in i mer detalj och det finns naturligtvis en miljon saker jag inte har berört. Om du vill veta mer, låt mig veta i kommentarerna. Kanske kan vi göra en serie nybörjareobjektorienterade programmeringshandledning för olika språk om det finns tillräckligt med intresse? Var noga med att kolla in våra programmeringsrelaterade arkiv med olika verktyg och programmeringswebbplatser.

Bildkredit: ShutterStock

Utforska mer om: Programmering.