Hvorfor Objektorienteret Programmeringer præference i de fleste projekter? OOP tilbyder en effektiv måde at håndtere deres kompleksitet på. I stedet for at overveje programmet som en sekvens af eksekverbare instruktioner, repræsenterer den det som en gruppe objekter med bestemte egenskaber og udfører visse handlinger med dem. Dette fører til skabelsen af mere klare, mere pålidelige og lette at følge applikationer.
Grundlæggende principper for objektorienteretprogrammering (OOP) blev dannet, fordi begrænsninger blev fundet i tidligere tilgange. Blandt dem - ubegrænset adgang til data og et stort antal links, der pålægger begrænsninger for indførelsen af ændringer. Deres opmærksomhed og årsager er vigtige for at forstå, hvad OOP er i programmeringen, og hvad er fordelene heraf.
C, Pascal, FORTRAN og lignende sprog erproceduremæssig. Det vil sige, hver af deres operatører pålægger computeren at gøre noget: få dataene, tilføj tallene, divider med seks, vis resultatet. Den proceduremæssige sprog ansøgning er en liste over instruktioner. Hvis det er lille, er der ikke noget andet organisationsprincip (ofte kaldt et paradigme). Programmeringen opretter en liste over instruktioner, og computeren udfører dem.
Når applikationer bliver større, listener besværlig. Få kan forstå mere end et par hundrede instruktioner, indtil de er grupperet sammen. Af denne grund er funktionen blevet en måde at gøre applikationer mere forståelige for deres skabere. På nogle sprog kan det samme koncept kaldes et underprogram eller en procedure.
Ansøgningen er opdelt i funktioner, der hver især har et klart defineret formål og interface.
Ideen om adskillelse i procedurer kan udvides ved at gruppere dem i et større objekt kaldet et modul, men princippet er ens: gruppering af komponenter, der udfører instruktionslister.
Adskillelse i funktioner og moduler er en af hjørnestenene i strukturel programmering, som i flere årtier før fremkomsten af OOP var et præventive paradigme.
Som ansøgninger voksede i stigende gradstor strukturel programmering begyndte at opleve vanskeligheder. Projekter blev for komplicerede. Graferne skiftede. Et større antal programmører var involveret. Kompleksiteten voksede. Omkostningerne skyrocket, diagrammet flyttede videre, og sammenbruddet kom.
En analyse af årsagerne til disse fejl afslørede manglerprocedureparadigm. Uanset hvor godt en struktureret tilgang til programmering er implementeret, bliver store applikationer for komplicerede.
Hvad er årsagerne til disse problemer forbundet medproceduremæssige sprog? For det første har funktioner ubegrænset adgang til globale data. For det andet modeller ikke-relaterede procedurer og betydninger ikke den virkelige verden.
Hvis vi overvejer disse problemer i sammenhæng medprogram for lagerregnskab, så er et af de vigtigste globale dataelementer aggregatet af regnskabsenheder. Forskellige funktioner kan få adgang til dem for at indtaste en ny værdi, vise den, ændre den og så videre.
I et program skrevet, for eksempel i C, er der to typer data. Lokale er gemt inde i funktionen, og andre procedurer anvendes ikke.
Når der er adgang til to eller flere funktionertil de samme data, så skal sidstnævnte være global. Disse er for eksempel oplysninger om de elementer, der skal tages i betragtning. Globale data kan fås ved enhver procedure.
I et stort program er der mange funktioner og mange globale elementer. Problemet med procedur paradigmet er, at dette fører til et endnu større antal potentielle forbindelser mellem dem.
Et så stort antal forbindelser forårsageret par vanskeligheder. For det første komplicerer dette forståelsen af programmets struktur. For det andet gør det svært at foretage ændringer. En ændring i et globalt dataobjekt kan kræve justering af alle de funktioner, der har adgang til det.
For eksempel i regnskabet beslutter nogen, at kodenaf det registrerede emne skal ikke bestå af 5 cifre, men på 12. Dette kræver, at datatypen ændres fra kort til lang. Nu skal de koderelaterede funktioner ændres for at arbejde med det nye format.
Når elementer ændrer sig i en stor applikation,Det er svært at sige, hvilke procedurer der har adgang til dem. Men selv om dette er præciseret, kan ændring af dem føre til forkert arbejde med andre globale data. Alt er forbundet med alt andet, så en ændring på ét sted vil være i en anden.
Det andet og mere vigtige problem med proceduremæssigeParadigmet er, at dets placering af individuelle data og funktioner dårligt modellerer ting i den virkelige verden. Her beskæftiger vi sig med sådanne genstande som mennesker og biler. De ligner ikke data eller funktioner. Komplekse virkelige objekter har attributter og adfærd.
Eksempler på attributter (nogle gange kaldetkarakteristika) for folk er øjenfarve og jobtitel, for biler - strøm og antal døre. Som det viste sig, svarer attributterne i den virkelige verden til dataene i programmet. De har specifikke betydninger, såsom blå (øjenfarve) eller fire (antallet af døre).
Adfærd er den genstand for den virkelige verdenproducere som reaktion på en vis effekt. Hvis du beder myndighederne om at hæve deres løn, er svaret "ja" eller "nej". Hvis du trykker på bremsen, stopper bilen. Udtale og stop er eksempler på adfærd. Adfærd er som en procedure: Det kaldes til at gøre noget, og det gør det. Således modellerer data og funktioner ikke alene virkelige objekter effektivt.
Objekt i OOP er repræsenteret som en samlingdata og funktioner. Kun procedurer, der kaldes medlemsfunktioner i C ++ giver dig mulighed for at få sine værdier. Data er skjult og beskyttet mod forandring. Værdier og funktioner er indkapslet i en enhed. Indkapsling og gemmer er de vigtigste udtryk i beskrivelsen af OO-sprog.
Hvis du vil ændre data, ved du præcis hvilke funktioner der virker sammen med dem. Ingen andre procedurer kan få adgang til dem. Dette forenkler skrivning, debugging og vedligeholdelse af programmet.
Ansøgningen består som regel af flere objekter, der interagerer med hinanden, og kalder medlemsfunktionerne.
I dag er det mest anvendte sprog for OOP(objektorienteret programmering) - C ++ (plus-plus). Java mangler nogle funktioner, såsom peger, skabeloner og flere arv, hvilket gør det mindre kraftfuldt og alsidigt end C ++. C # har endnu ikke nået C + + popularitet.
Det skal bemærkes, at den såkaldteMedlemsfunktioner i C ++ kaldes metoder i nogle andre OO-sprog, såsom Smalltalk. Dataelementer kaldes attributter. At kalde en objektmetode er at sende en besked til den.
Du kan indsende objekter til virksomhedens afdelinger. I de fleste organisationer arbejder medarbejderne ikke en dag med kadre, den næste på lønningslisten og derefter en uge med detailhandel. Hver afdeling har sit eget personale med klart udpegede ansvarsområder. Der er også egne data: lønninger, salgstal, medarbejderposter mv. Personer i afdelingerne arbejder med deres oplysninger. Adskillelse af virksomheden letter dermed kontrollen med sine aktiviteter og opretholder dataets integritet. Regnskab er ansvarlig for lønningslisten. Hvis du har brug for at kende det samlede lønbeløb i den sydlige afdeling i juli, behøver du ikke at ryste i arkivet. Det er nok til at sende en note til den ansvarlige person, vente, indtil den pågældende person har adgang til de data og sender svaret til de ønskede oplysninger. Dette sikrer overholdelse af reglerne og fraværet af udefrakommende interferens. På samme måde giver objektet i OOP organisationen af applikationen.
Det skal huskes, at orienteringen til objekter ikke ervedrører detaljerne i programmet. De fleste C + + udsagn svarer til processuelle sprogoperatører som C. Faktisk er medlemsfunktioner i C ++ meget ligner funktioner i C. Kun en bredere kontekst vil gøre det muligt at fastslå, om instruktionen er proceduremæssig eller objektorienteret.
Når man overvejer programmeringsproblemet forOO sprog, i stedet for spørgsmål om dets opdeling i separate funktioner, opstår problemet med adskillelse i objekter. OOP-tænkning gør det meget nemmere at udvikle applikationer. Dette skyldes ligheden mellem software og virkelige objekter.
Hvilke ting bliver objekter i OOP? Nedenfor er typiske kategorier.
Det fysiske objekt i OOP er:
Elementer af computerens miljø af brugeren:
mennesker:
oplysninger:
Forbindelsen mellem virkelige objekter og OOP var resultatet af en kombination af funktioner og data: de revolutionerede programmeringen. Der findes ikke så tæt korrespondance på processprogene.
Objekter i OOP er medlemmer af klasser. Hvad betyder dette? Programmeringssprog har indbyggede datatyper. Int-typen, det vil sige et helt tal, er foruddefineret i C ++. Du kan erklære et hvilket som helst antal int-variabler.
På samme måde er et sæt objekter af samme klasse defineret. Det definerer de funktioner og data, der er inkluderet i dens objekter uden at skabe dem, ligesom int ikke skaber variabler.
Klassen i OOP er en beskrivelse af en række lignende objekter. Prins, Sting og Madonna er sangere. Der er ikke en enkelt person med det navn, men folk kan være såkaldte, hvis de har de relevante egenskaber. OOP-objektet er en forekomst af klassen.
I livet er klasserne opdelt i underklasser. For eksempel er dyrene opdelt i amfibier, pattedyr, fugle, insekter mv.
Princippet om denne form for division er dethver underklasse har fælles karakteristika med den klasse, hvorfra den forekommer. Alle biler har hjul og en motor. Disse er de afgørende egenskaber ved køretøjer. Ud over de generelle egenskaber har hver underklasse sine egne egenskaber. Busser har mange pladser, og lastbiler har plads til at transportere tunge laster.
På samme måde kan basklassen blive forælderflere afledte underklasser, der kan defineres, så de vil dele sine egenskaber med deres egen tilføjelse. Arv svarer til en funktion, der forenkler procedurprogrammet. Hvis flere dele af koden gør det samme, kan du udtrække de fælles elementer og sætte dem i en procedure. Tre applikationsafsnit kan kalde en funktion til at udføre fælles handlinger, men de kan også producere deres egne operationer. På samme måde indeholder basisklassen data, der er fælles for den afledte gruppe. Ligesom funktioner reducerer arv OO-programmet og afklarer sammenkoblingen af dets elementer.
Når klassen er oprettet og debugged, kan denvideresendes til andre programmører til genbrug i deres egne applikationer. Dette ligner et bibliotek med funktioner, som kan indgå i forskellige applikationer.
I OOP er arv en forlængelse af ideenflere gange. Fra den eksisterende klasse, uden at ændre det, kan du oprette en ny med tilføjelsen af andre funktioner. Den nemme genbrug af eksisterende software er en vigtig fordel ved OOP. Det antages, at dette giver en stigning i udbyttet fra den oprindelige investering.
Objekter er nemme til at oprette nye typer data. Antag at programmet bruger todimensionelle værdier (for eksempel koordinater eller breddegrad og længdegrad), og der er et ønske om at udtrykke handlinger med dem aritmetiske operationer:
position1 = position + oprindelse,
hvor position1, position og oprindelse er par af uafhængige numeriske værdier. Oprettelse af en klasse, der indeholder disse to værdier og erklærer variabler med dens objekter, opretter en ny datatype.
Operatører = (lige) og + (plus) anvendt iPositiv aritmetik ovenfor, må ikke fungere som med indbyggede typer, såsom int. Objektposition mv er ikke foruddefineret, men er programmeret. Hvordan kan disse operatører vide, hvordan de skal håndtere dem? Svaret er, at for dem kan du definere nye adfærdsmønstre. Disse operationer vil være medlemsfunktioner i positionsklassen.
Brug af operatører eller procedurer iafhængigt af hvad de arbejder med, kaldes polymorfisme. Når en eksisterende operatør, som + eller =, kan arbejde med en ny datatype, siges det at være overbelastet. Overbelastning i OOP er en slags polymorfisme. Det er dets vigtige træk.
Bogen om OOP "Objektorienteret Programmering til Dummies" vil gøre det muligt for alle at gøre sig bekendt med dette emne mere detaljeret.
</ p>