SITE SØK

OOP er hva? Grunnleggende prinsipper for objektorientert programmering

Hvorfor Objektorientert ProgrammeringGis fortrinn i de fleste prosjekter? OOP tilbyr en effektiv måte å håndtere kompleksiteten på. I stedet for å betrakte programmet som en sekvens av kjørbare instruksjoner, representerer den den som en gruppe objekter med bestemte egenskaper og utfører bestemte handlinger med dem. Dette fører til etablering av mer klare, mer pålitelige og lette å følge applikasjoner.

Grunnleggende prinsipper for objektorienterteprogrammering (OOP) ble dannet fordi begrensninger ble funnet i tidligere tilnærminger. Blant dem - ubegrenset tilgang til data og et stort antall lenker som pålegger begrensninger for innføring av endringer. Deres bevissthet og grunner er viktige for å forstå hva OOP er i programmering og hva er fordelene sine.

Prosedyrspråk

C, Pascal, FORTRAN og lignende språk erprosessuelle. Dvs., hver av operatørene deres bestemmer datamaskinen for å gjøre noe: få dataene, legg opp tallene, divider med seks, vis resultatet. Prosedyrsprogapplikasjonen er en liste over instruksjoner. Hvis det er lite, kreves det ikke noe annet organisasjonsprinsipp (ofte kalt et paradigme). Programmereren lager en liste over instruksjoner, og datamaskinen kjører dem.

Separasjon i funksjoner

Når applikasjonene blir større, er listener tungvint. Få kan forstå mer enn noen få hundre instruksjoner til de er gruppert sammen. Av denne grunn har funksjonen blitt en måte å gjøre applikasjoner mer forståelige for sine skapere. På enkelte språk kan det samme konseptet kalles et underprogram eller en prosedyre.

Søknaden er delt inn i funksjoner, som hver har en klart definert hensikt og grensesnitt.

Ideen om separasjon av prosedyrer kan utvides til en større gruppering av objekt kalt en modul, men prinsippet er analog: den gruppering av komponenter som bærer lister over dokumentet.

Separasjon i funksjoner og moduler er en av hjørnesteinene til strukturell programmering, som i flere tiår før adventen til OOP var et fortegningsparadigm.

åpne dette

Problemer med strukturert programmering

Som applikasjoner vokste i økende gradStor strukturell programmering begynte å oppleve vanskeligheter. Prosjektene ble for kompliserte. Grafene skiftet. Et større antall programmerere var involvert. Kompleksiteten vokste. Kostnadene skyrocket, kartet flyttet videre, og sammenbruddet kom.

En analyse av årsakene til disse feilene viste manglerprosessparadigm. Uansett hvor godt en strukturert tilnærming til programmering er implementert, blir store applikasjoner ekstremt komplekse.

Hva er årsakene til disse problemene forbundet medprosessale språk? For det første har funksjoner ubegrenset tilgang til globale data. For det andre modelliserer ikke-relaterte prosedyrer og betydninger den virkelige verden.

Hvis vi vurderer disse problemene i sammenheng medProgram for lagerregnskap, er en av de viktigste globale dataelementene summen av regnskapsmessige enheter. Ulike funksjoner kan få tilgang til dem for å legge inn en ny verdi, vise den, endre den og så videre.

Ubegrenset tilgang

I et program som er skrevet, for eksempel i C, er det to typer data. Lokale er skjult inne i funksjonen og andre prosedyrer brukes ikke.

Når to eller flere funksjoner skal åpnestil de samme dataene, må sistnevnte være global. Disse er for eksempel informasjon om hvilke elementer som skal tas i betraktning. Globale data kan nås via en hvilken som helst prosedyre.

I et stort program er det mange funksjoner og mange globale elementer. Problemet med prosessparadigmet er at dette fører til et enda større antall potensielle bånd mellom dem.

Et så stort antall forbindelser forårsakernoen få vanskeligheter. For det første kompliserer dette forståelsen av programmets struktur. For det andre gjør det vanskelig å gjøre endringer. En endring i et globalt datapunkt kan kreve justering av alle funksjonene som har tilgang til det.

For eksempel, i regnskapsprogrammet bestemmer noen at kodenav det registrerte emnet skal bestå av ikke 5 siffer, men på 12. Dette vil kreve at datatypen endres fra kort til lang. Nå må kodeselskapene endres for å fungere med det nye formatet.

Når elementene endres i et stort program,Det er vanskelig å si hvilke prosedyrer som har tilgang til dem. Men selv om dette er avklart, kan endring av dem føre til feil arbeid med andre globale data. Alt er knyttet til alt annet, så en endring på ett sted vil være i en annen.

Hva er åpen i programmeringen

Real-world modellering

Det andre og mer viktige problemet med prosedyreParadigmet er at plasseringen av individuelle data og funksjoner dårlig modellerer ting i den virkelige verden. Her behandler vi slike gjenstander som mennesker og biler. De ser ikke ut som data eller funksjoner. Komplekse ekte objekter har egenskaper og atferd.

attributter

Eksempler på attributter (noen ganger kaltegenskaper) for folk er øyenfarge og jobbtittel, for biler - kraft og antall dører. Som det viste seg, er attributter i den virkelige verden tilsvarende dataene i programmet. De har spesifikke betydninger, for eksempel blå (øyenfarge) eller fire (antall dører).

oppførsel

Oppførsel er at gjenstandene til den virkelige verdenprodusere som svar på noen effekt. Hvis du spør myndighetene om å øke lønn, er svaret "ja" eller "nei". Hvis du trykker på bremsen, stopper bilen. Uttale og stopp er eksempler på atferd. Atferd er som en prosedyre: det kalles for å gjøre noe, og det gjør det. Dermed er data og funksjoner ikke i seg selv modellerte virkelige objekter effektivt.

adressering

Objekt i OOP er representert som en samlingdata og funksjoner. Bare prosedyrer som kalles medlemsfunksjoner i C ++, lar deg få sine verdier. Data er skjult og beskyttet mot endring. Verdier og funksjoner er innkapslet i en enhet. Innkapsling og gjemning er hovedbetingelsene i beskrivelsen av OO-språk.

Hvis du vil endre data, vet du nøyaktig hvilke funksjoner som virker sammen med dem. Ingen andre prosedyrer kan få tilgang til dem. Dette forenkler skriving, feilsøking og vedlikehold av programmet.

Søknaden består som regel av flere objekter som samhandler med hverandre, og kaller medlemsfunksjonene.

I dag er det mest brukte språket av OOP(objektorientert programmering) - C ++ (pluss-pluss). Java mangler noen funksjoner, for eksempel pekere, maler og flere arv, noe som gjør den mindre kraftig og allsidig enn C ++. C # har ennå ikke nådd populariteten til C ++.

Det bør bemerkes at den såkalteMedlemsfunksjoner i C ++ kalles metoder i noen andre OO-språk, for eksempel Smalltalk. Dataelementer kalles attributter. Å ringe en objektmetode er å sende en melding til den.

Objektorientert programmering med pluss

analogi

Du kan sende inn objekter til selskapets avdelinger. I de fleste organisasjoner arbeider ansatte ikke en dag med kadrer, den neste på lønn og deretter en uke med detaljhandel. Hver avdeling har sitt eget personale med klart tilordnet ansvar. Det finnes også egne data: lønn, salgstall, ansattsposter, etc. Personer i avdelingene jobber med informasjonen. Separasjon av selskapet, forenkler dermed kontrollen over sine aktiviteter og opprettholder integriteten til dataene. Regnskap er ansvarlig for lønn. Hvis du trenger å vite den totale mengden lønn betalt i den sørlige grenen i juli, trenger du ikke å rive i arkivet. Det er nok å sende et notat til den ansvarlige personen, vent på at denne personen skal få tilgang til dataene og sende et svar med nødvendig informasjon. Dette sikrer overholdelse av forskriftene og fravær av ekstern forstyrrelse. På samme måte gir objektet i OOP organisering av applikasjonen.

Det skal huskes at orienteringen til objekter ikke ervedrører detaljene i programmet. De fleste instruksjoner C ++ operatørene svarer til de prosedyrespråk slik som C Faktisk, medlemsfunksjonene i C ++ er svært like funksjoner i C. Kun en bredere sammenheng tillater å fastslå hvorvidt instruksjonen eller objektorientert.

objekt i åpen det

Objekt i OOP: definisjon

Når du vurderer programmeringsproblemet forOO språk, i stedet for spørsmål om sin oppdeling i separate funksjoner, oppstår problemet med separasjon i objekter. OOP-tenkning gjør det mye enklere å utvikle applikasjoner. Dette skyldes likheten til programvare og ekte objekter.

Hvilke ting blir objekter i OOP? Nedenfor er typiske kategorier.

Det fysiske objektet i OOP er:

  • transport i strømningsmønstre;
  • elektriske elementer i kretsdesign programmer;
  • land i modellen av økonomi;
  • fly i flytrafikkontrollsystemet.

Elementer av datamaskinens miljø for brukeren:

  • meny;
  • vinduer;
  • grafikk (linje, rektangel, sirkel);
  • tastatur, mus, skriver, diskstasjoner.

mennesker:

  • arbeidere;
  • studenter;
  • kunder;
  • selgere.

informasjon:

  • bokføring bok;
  • en privat sak;
  • ordbok;
  • Tabell over breddegrader og lengder av bosetninger.

Forbindelsen mellom virkelige objekter og OOP var resultatet av en kombinasjon av funksjoner og data: de revolusjonerte programmeringen. Det er ikke så nær korrespondanse på prosessprosjektene.

objekt i en åpen definisjon

klasse

Objekter i OOP er medlemmer av klasser. Hva betyr dette? Programmeringsspråk har innebygde datatyper. Int-typen, det vil si et heltall, er forhåndsdefinert i C ++. Du kan erklære noe antall int variabler.

På samme måte er et sett med objekter av samme klasse definert. Den definerer funksjonene og dataene som er inkludert i objektene sine uten å skape dem, akkurat som int ikke oppretter variabler.

Klassen i OOP er en beskrivelse av en rekke liknende objekter. Prins, Sting og Madonna er sangere. Det er ikke en enkelt person med det navnet, men folk kan bli såkalte hvis de har de riktige egenskapene. OOP-objektet er en forekomst av klassen.

arv

I livet er klassene delt inn i underklasser. For eksempel er dyrene delt inn i amfibier, pattedyr, fugler, insekter, etc.

Prinsippet om denne typen divisjon er dethver underklasse har felles egenskaper med klassen hvorfra den forekommer. Alle biler har hjul og en motor. Dette er kjennetegnene til kjøretøyene. I tillegg til de generelle egenskapene har hver underklasse sine egne egenskaper. Busser har mange seter, og lastebiler har plass til å transportere store laster.

På samme måte kan grunnklassen bli forelderflere avledede underklasser som kan defineres slik at de vil dele sine egenskaper med tillegg av sine egne. Arv er lik en funksjon som forenkler prosedyreprogrammet. Hvis flere deler av koden gjør ganske mye det samme, kan du trekke ut de vanlige elementene og sette dem i en prosedyre. Tre applikasjonsseksjoner kan ringe en funksjon for å utføre vanlige handlinger, men de kan også produsere sine egne operasjoner. På samme måte inneholder baseklassen data som er felles for den avledede gruppen. Som funksjoner reduserer arv OO-programmet og klargjør sammenkoblingen av elementene.

objekt i oop

resirkulering

Etter at klassen er opprettet og debugged, kan densendes videre til andre programmerere for gjenbruk i egne applikasjoner. Dette ligner på et bibliotek med funksjoner som kan inkluderes i forskjellige applikasjoner.

I OOP er arv en forlengelse av ideenflere bruksområder. Fra den eksisterende klassen, uten å endre den, kan du opprette en ny med tillegg av andre funksjoner. Enkel å gjenbruke eksisterende programvare er en viktig fordel ved OOP. Det antas at dette gir en økning i avkastning fra den opprinnelige investeringen.

Opprette nye datatyper

Objekter er praktiske for å lage nye typer data. Anta at programmet bruker todimensjonale verdier (for eksempel koordinater eller breddegrad og lengdegrad), og det er et ønske om å uttrykke handlinger med dem aritmetiske operasjoner:

posisjon1 = posisjon + opprinnelse,

hvor posisjon 1, posisjon og opprinnelse er par av uavhengige numeriske verdier. Opprette en klasse som inneholder disse to verdiene og deklarerer variabler med objekter, oppretter en ny datatype.

grunnleggende prinsipper for objektorientert programmering

Polymorfisme, overbelastning

Operatører = (like) og + (pluss) brukt iPositiv aritmetikk ovenfor, må ikke fungere som med innebygde typer, for eksempel int. Objektposisjon, etc. er ikke forhåndsdefinert, men er programmert. Hvordan vet disse operatørene hvordan de skal håndtere dem? Svaret er at for dem kan du definere nye oppføringsmønstre. Disse operasjonene vil være medlemsfunksjoner i posisjonsklassen.

Bruk av operatører eller prosedyrer iAvhengig av hva de jobber med, kalles polymorfisme. Når en eksisterende operatør, for eksempel + eller =, er i stand til å jobbe med en ny datatype, sies det å være overbelastet. Overbelastning i OOP er en slags polymorfisme. Det er dets viktige trekk.

Boken om OOP "Object-Oriented Programming for Dummies" vil tillate alle å bli kjent med dette emnet mer detaljert.

</ p>
  • evaluering: