SITE SEARCH

OOP är vad? Grundprinciper för objektorienterad programmering

Varför Objektorienterad Programmeringges preferens i de flesta projekt? OOP erbjuder ett effektivt sätt att hantera deras komplexitet. Istället för att betrakta programmet som en sekvens av körbara instruktioner representerar den den som en grupp objekt med vissa egenskaper och utför vissa åtgärder med dem. Detta leder till skapandet av tydligare, mer tillförlitliga och lätta att följa applikationer.

Grundprinciper för objektorienteradprogrammering (OOP) bildades eftersom begränsningar hittades i tidigare tillvägagångssätt. Bland dem - obegränsad tillgång till data och ett stort antal länkar som innebär begränsningar för införandet av förändringar. Deras medvetenhet och skäl är viktiga för att förstå vad OOP är i programmering och vad är dess fördelar.

Procedurella språk

C, Pascal, FORTRAN och liknande språk ärprocedur. Det vill säga, varje operatör beställer datorn att göra något: få uppgifterna, lägg upp siffrorna, dela med sex, visa resultatet. Den procedurella språkansökan är en lista med instruktioner. Om det är litet krävs ingen annan organisationsprincip (ofta kallad paradigm). Programmeraren skapar en lista med instruktioner, och datorn kör dem.

Separering i funktioner

När applikationerna blir större, listanär besvärlig. Få kan förstå mer än några hundra instruktioner tills de är grupperade ihop. Av denna anledning har funktionen blivit ett sätt att göra programmen mer begripliga för sina skapare. På vissa språk kan samma begrepp kallas ett delprogram eller ett förfarande.

Applikationen är uppdelad i funktioner, som alla har en tydligt definierad syfte och gränssnitt.

Idén om separation av förfaranden kan expanderas till en större gruppering av objekt som kallas en modul, men principen är analog: gruppering av komponenter som bär listor av dokument.

Uppdelning av funktioner och moduler - en av hörnstenarna för strukturerad programmering, som under flera decennier tills PLO var den medför paradigm.

öppna detta

Problem med strukturerad programmering

Som ansökningar växte alltmerstor strukturell programmering började uppleva svårigheter. Projekt blev för komplicerade. Graferna skiftades. Ett större antal programmerare var inblandade. Komplexiteten växte. Kostnaderna höjdes, diagrammet flyttade längre och kollapsen kom.

En analys av orsakerna till dessa misslyckanden avslöjade bristerprocessparadigm. Oavsett hur väl ett strukturerat tillvägagångssätt för programmering implementeras blir stora applikationer alltför komplicerade.

Vilka är orsakerna till dessa problem i samband medprocessuella språk? För det första har funktioner obegränsad tillgång till globala data. För det andra modellerar icke-relaterade procedurer och meningar inte den verkliga världen.

Om vi ​​överväger dessa problem i samband medprogram för lagerregistrering, då är ett av de viktigaste globala dataelementen summan av redovisningsenheter. Olika funktioner kan komma åt dem för att ange ett nytt värde, visa det, ändra det och så vidare.

Obegränsad tillgång

I ett skrivet program, till exempel i C, finns det två typer av data. Lokala är dolda inuti funktionen och andra procedurer används inte.

När två eller flera funktioner ska nåstill samma data, då den senare måste vara global. Dessa är till exempel information om vilka objekt som ska beaktas. Global data kan nås genom något förfarande.

I ett stort program finns det många funktioner och många globala element. Problemet med processparadigmet är att detta leder till ett ännu större antal potentiella kopplingar mellan dem.

Ett så stort antal föreningar orsakarnågra svårigheter. För det första komplicerar detta förståelsen för programmets struktur. För det andra gör det svårt att göra ändringar. En ändring av ett globalt dataobjekt kan kräva anpassning av alla funktioner som har åtkomst till det.

I bokföringsprogrammet bestämmer exempelvis någon att kodenav det redovisade ämnet bör inte bestå av 5 siffror, men av 12. Detta kräver att datatypen ändras från kort till lång. Nu måste de kodrelaterade funktionerna ändras för att fungera med det nya formatet.

När element ändras i en stor applikation,Det är svårt att säga vilka förfaranden som har tillgång till dem. Men även om detta klargörs kan förändring av dem leda till felaktigt arbete med andra globala data. Allt är kopplat till allt annat, så en förändring på en plats kommer att vara i en annan.

vad är öppen i programmering

Real-world modellering

Det andra och viktigare problemet med procedurParadigmet är att dess placering av enskild data och funktioner dåligt modellerar saker i den verkliga världen. Här handlar vi om sådana föremål som människor och bilar. De ser inte ut som data eller funktioner. Komplexa verkliga objekt har attribut och beteende.

attribut

Exempel på attribut (ibland kalladegenskaper) för människor är ögonfärg och arbetsnamn, för bilar - kraft och antal dörrar. Som det visade sig motsvarar attributen i den verkliga världen uppgifterna i programmet. De har specifika betydelser, såsom blå (ögonfärg) eller fyra (antalet dörrar).

beteende

Beteende är att föremålen för den verkliga världenproducera som svar på någon effekt. Om du uppmanar myndigheterna att höja sina löner är svaret "ja" eller "nej". Om du trycker på bromsen stannar bilen. Uttal och stopp är exempel på beteende. Beteende är som ett förfarande: det kallas för att göra något, och det gör det. Således kan data och funktioner inte själva modellera verkliga objekt effektivt.

Adresse

Objekt i OOP är representerat som en samlingdata och funktioner. Endast procedurer som kallas medlemsfunktioner i C ++ låter dig få sina värden. Data är dold och skyddad från förändring. Värden och funktioner är inkapslade i en enhet. Inkapsling och gömning är huvudvillkoren i beskrivningen av OO-språk.

Om du vill ändra uppgifterna vet du exakt vilka funktioner som interagerar med dem. Inga andra förfaranden kan komma åt dem. Detta förenklar skrivning, felsökning och underhåll av programmet.

Applikationen består i regel av flera objekt som interagerar med varandra och kallar medlemsfunktionerna.

Idag är det mest använda språket för OOP(objektorienterad programmering) - C ++ (plus-plus). Java saknar vissa funktioner, såsom pekare, mallar och flera arv, vilket gör den mindre kraftfull och mångsidig än C ++. C # har ännu inte nått C ++-popularitet.

Det bör noteras att den så kallademedlemsfunktionerna i C ++ kallas metoder i vissa andra språk, såsom Smalltalk. Dataelement kallas attribut. Om du ringer en objektmetod sänder du ett meddelande till det.

Objektorienterad programmering med plus

analogi

Du kan skicka objekt till företagets avdelningar. I de flesta organisationer arbetar anställda inte en dag med kadrer, nästa på lön och sedan en vecka med detaljhandel. Varje avdelning har sin egen personal med tydligt tilldelat ansvar. Det finns också egna uppgifter: löner, försäljningsuppgifter, anställningsrekord mm Personer i avdelningarna arbetar med sin information. Separering av företaget underlättar således kontrollen över sin verksamhet och upprätthåller dataintegriteten. Redovisning är ansvarig för löneavgiften. Om du behöver veta den totala lönen som betalas i den södra grenen i juli behöver du inte rycka i arkivet. Det räcker att skicka en anteckning till den ansvariga personen, vänta på att den här personen ska få tillgång till uppgifterna och skicka ett svar med den information som krävs. Detta garanterar överensstämmelse med reglerna och frånvaro av yttre störningar. På samma sätt ger objektet i OOP organisationen av applikationen.

Man bör komma ihåg att orienteringen mot objekt inte ärberör programmets detaljer. De flesta C + + -förklaringarna motsvarar processuella språkoperatörer som C. I själva verket är medlemsfunktionerna i C ++ väldigt lika med funktionerna i C. Endast ett bredare sammanhang kommer att göra det möjligt att fastställa huruvida instruktionen är processuell eller objektorienterad.

objekt i öppna det

Objekt i OOP: definition

När man överväger programmeringsproblemet förOO-språk, istället för frågor om dess uppdelning i separata funktioner, uppstår problemet med separation i objekt. OOP-tänkande gör det mycket lättare att utveckla applikationer. Detta beror på likheten mellan programvara och verkliga objekt.

Vilka saker blir föremål i OOP? Nedan finns typiska kategorier.

Det fysiska objektet i OOP är:

  • transport i flödesmönster;
  • elektriska element i kretsdesignprogram;
  • länder i modellen av ekonomi;
  • flygplan i flygkontrollsystemet.

Element av datorens miljö för användaren:

  • meny;
  • fönster;
  • grafik (rad, rektangel, cirkel);
  • tangentbord, mus, skrivare, hårddiskar.

människor:

  • arbetare;
  • studenter;
  • kunder;
  • säljare.

information:

  • bokföring
  • en privat fråga
  • lexikon;
  • bord av breddgrader och längd av bosättningar.

Förbindelsen mellan verkliga objekt och OOP var resultatet av en kombination av funktioner och data: de revolutionerade programmeringen. Det finns ingen sådan nära korrespondens på procedurspråk.

objekt i en öppen definition

klass

Objekt i OOP är medlemmar i klasser. Vad betyder detta? Programmeringsspråk har inbyggda datatyper. Int-typen, det vill säga ett heltal, är fördefinierat i C ++. Du kan deklarera vilket antal int variabler som helst.

På samma sätt definieras en uppsättning objekt av samma klass. Det definierar de funktioner och data som ingår i dess objekt utan att skapa dem, precis som int inte skapar variabler.

Klassen i OOP är en beskrivning av ett antal liknande föremål. Prins, Sting och Madonna är sångare. Det finns inte en enda person med det namnet, men folk kan vara så kallade om de har lämpliga egenskaper. OOP-objektet är en förekomst av klassen.

arv

I livet är klasserna indelade i underklasser. Till exempel är djur uppdelade i amfibier, däggdjur, fåglar, insekter etc.

Principen för denna typ av uppdelning är detvarje underklass har gemensamma egenskaper med klassen från vilken den förekommer. Alla bilar har hjul och en motor. Dessa är de definierande egenskaperna hos fordon. Förutom de allmänna egenskaperna har varje underklass egna egenskaper. Bussar har många platser och lastbilar har utrymme för att transportera tunga laster.

På samma sätt kan basklassen bli förälderflera härledda underklasser som kan definieras så att de kommer att dela dess egenskaper med tillägg av sina egna. Ärftlighet liknar en funktion som förenklar processprogrammet. Om flera delar av koden gör nästan samma sak kan du extrahera de gemensamma elementen och lägga dem i ett förfarande. Tre applikationssektioner kan ringa en funktion för att utföra gemensamma åtgärder, men de kan också producera sin egen verksamhet. På samma sätt innehåller basklassen data som är gemensamma för den härledda gruppen. Liksom funktioner reducerar arvet OO-programmet och förtydligar sammankopplingen av dess element.

objekt i oop

återvinning

När klassen är skapad och debugged, kan denvidarebefordras till andra programmerare för återanvändning i sina egna applikationer. Detta liknar ett bibliotek med funktioner som kan ingå i olika applikationer.

I OOP är arv en förlängning av idénmultipel användning. Från den befintliga klassen, utan att ändra den, kan du skapa en ny med tillägg av andra funktioner. Lätt att återanvända befintlig programvara är en viktig fördel med OOP. Man tror att detta ger en ökning av avkastningen från den ursprungliga investeringen.

Skapa nya datatyper

Objekt är lämpliga för att skapa nya typer av data. Antag att programmet använder tvådimensionella värden (till exempel koordinater eller latitud och longitud), och det finns en önskan att uttrycka handlingar med dem aritmetiska operationer:

position1 = position + ursprung,

där position1, position och ursprung är par av oberoende numeriska värden. Att skapa en klass som innehåller dessa två värden och deklarerar variabler med dess objekt skapar en ny datatyp.

grundläggande principer för objektorienterad programmering

Polymorfism, överbelastning

Operatörer = (lika) och + (plus) som används iPositiv aritmetik ovan, fungerar inte samma som med inbyggda typer, t.ex. int. Objektposition etc. är inte fördefinierade men programmeras. Hur vet dessa operatörer hur man hanterar dem? Svaret är att för dem kan du definiera nya beteendemönster. Dessa operationer kommer att vara medlemsfunktioner i positionsklassen.

Användning av operatörer eller förfaranden iberoende på vad de arbetar med, kallas polymorfism. När en befintlig operatör, som + eller =, kan arbeta med en ny datatyp, sägs det vara överbelastad. Överbelastning i OOP är en slags polymorfism. Det är dess viktiga funktion.

En bok om PLO "Objektorienterad programmering for Dummies" gör det möjligt för alla att bekanta sig med det här ämnet mer i detalj.

</ p>
  • utvärdering: