hpf是什么意思
Den h?r artikeln beh?ver fler eller b?ttre k?llh?nvisningar f?r att kunna verifieras. (2015-05) ?tg?rda genom att l?gga till p?litliga k?llor (g?rna som fotnoter). Uppgifter utan k?llh?nvisning kan ifr?gas?ttas och tas bort utan att det beh?ver diskuteras p? diskussionssidan. |
Objektorienterad programmering (engelska: object-oriented programming, OOP) ?r en programmeringsmetod i vilken ett program kan inneh?lla en varierande upps?ttning objekt som interagerar med varandra. De ursprungliga idéerna i metoden (objekt, inkapsling) uppstod i slutet av 1960-talet i programmeringsspr?k f?r simulering. De byggdes sedan p? med arv under mitten och slutet av 1980-talet. Denna metod att programmera anses av f?respr?karna vara effektiv och kraftfull, speciellt vid konstruktion av st?rre program, eftersom o?nskad p?verkan mellan programmets olika delar minimeras. Det ?r ocks? oftare l?ttare att ?teranv?nda programdelar fr?n ett program i ett annat, eftersom begreppen, objektklasserna, ofta blir generella och anv?ndbara i olika sammanhang.
Objekt
[redigera | redigera wikitext]Ett objekt ?r en instans av en klass, det vill s?ga ett slags simulering av en f?reteelse som anv?nds inom objektorienterad programmering f?r att samla data och kod som h?r ihop. Ett objekt kan till exempel vara en bok i ett program som anv?nds p? ett bibliotek f?r att hantera utl?ning. Boken har ett antal egenskaper som beskrivs av dess attribut (f?rfattare, titel, antal sidor, egenskapen att vara utl?nad eller tillg?nglig till exempel) och ett antal metoder som kan anv?ndas f?r att h?mta eller ?ndra information (man kanske vill veta f?rfattare till boken, eller ?ndra status som utl?nad eller tillg?nglig). Ett annat objekt skulle kunna vara en l?ntagare som d? kan ha en samling b?cker som den l?nat som attribut och metoder f?r att l?na och l?mna tillbaka b?cker.
Objektorientering handlar mycket om att designa de objekttyper, s? kallade klasser, som beh?vs. N?r ett program k?rs skapar det, ibland med hj?lp av anv?ndaren, s? m?nga objekt av dessa klasser som beh?vs.
Attribut
[redigera | redigera wikitext]Ett attribut ?r en variabel eller konstant som beskriver en egenskap hos ett objekt. Ett attribut ges ett namn s? att det kan anropas/anv?ndas i programmet. Beroende p? programmeringsspr?k s? kan man ocks? beh?va ange typ f?r attributet (heltal, flyttal, en pekare eller en textstr?ng till exempel) och det ?r ofta ocks? m?jligt att ange olika sekretessniv?er f?r attribut. Detta f?r att hindra eller ?ppna upp f?r ?tkomst av andra delar av programmet som vill veta vad attributet har f?r v?rde eller namn.
Metoder
[redigera | redigera wikitext]En metod ?r en funktion som kan h?mta information fr?n ett objekt eller manipulera objektets attribut. En metod som h?mtar information ben?mns ofta getter (efter engelskans get, h?mta) och en metod som ?ndrar ett attribut kallas setter (efter engelskans set, st?lla in).
Nyckelkoncept
[redigera | redigera wikitext]Objektorienterad programmering betonar f?ljande begrepp:
- Klass – Programmet byggs upp av delar, klasser, efter de begrepp som hanteras. Varje klass ?r en abstraktion av ett s?dant begrepp, och inneh?ller b?de information och funktionalitet. Programmet kan ses som en upps?ttning samverkande och interagerande objekt som vart och ett ?r av en viss typ/sort, de tillh?r en viss klass.
- Inkapsling - Ett objekts exakta beteende och funktion ?r dold f?r omv?rlden. Varje klass ?r en abstraktion och visar ett gr?nssnitt mot omv?rlden som specificerar hur andra klasser f?r interagera med den. Detta garanterar att alla f?r?ndringar av ett objekt sker genom programkod som tillh?r objektets klass. Ett visst objekt kan inte p?verka ett annat objekt p? annat s?tt ?n genom detta objekts gr?nssnitt.
- Arv – Klasserna och begreppen ?r inte oberoende av varandra, utan kan i m?nga fall ses som en kedja av sammanh?ngande begrepp, d?r vissa begrepp ?r allm?nna och generella, medan andra ?r specialfall av de allm?nna begreppen. Till exempel kan ett programsystem inom bankv?rlden hantera det allm?nna begreppet/klassen konto, men ?ven specialfall som inl?ningskonto, l?nekonto, konto med kreditm?jlighet o.s.v. P? s? s?tt tillh?r ett visst objekt inte bara en klass utan en hierarki av klasser med ?kande abstraktionsgrad. Funktionalitet som ?r gemensam f?r alla specialfallen, programmeras i den gemensamma "?verklassen" och endast det som s?rskiljer specialfallet programmeras i den specialiserade "underklassen". En underklass ?rver egenskaper och funktionalitet av den ?verklass den tillh?r.
- Polymorfism – I en grupp av underklasser finns funktionalitet som har yttre likheter mellan klasserna, men som m?ste programmeras p? olika s?tt beroende p? vilken av underklasserna det g?ller. Gr?nssnittet blir gemensamt f?r alla underklasserna, och definieras i ?verklassen, men den verkst?llande programkoden finns i respektive underklass. Ett visst objekt som anv?nder andra objekt beh?ver ofta inte bry sig om vilket specialfall av objekt det ?r fr?ga om utan anv?nder endast det gemensamma gr?nssnittet definierat av ?verklassen, och ?r ok?nsligt f?r m?ngden av specialfall som r?kar finnas.
Historia
[redigera | redigera wikitext]OOP-konceptet tillkom p? slutet av 1960-talet genom norrm?nnen Kristen Nygaard och Ole-Johan Dahls arbete med programspr?ket Simula. F?r detta fick de b?da Turingpriset 2001.[1][2]
Delvis har OOP inneburit ett paradigmskifte inom programmering, och kan p? s? s?tt j?mf?ras med till exempel strukturerad programmering, som lanserades i slutet av 1970-talet. V?sentligen inneb?r OOP ett ?kat fokus p? de data och begrepp som anv?nds, snarare ?n de processer som ska genomf?ras med dessa data.
OOP har tidvis anv?nts, och missbrukats, som ett marknadsf?ringsbegrepp, och har d? f?tt t?cka flera olika metoder att modularisera och dela upp program. Beroende p? vilket programmeringsspr?k som har anv?nts, har olika detaljer i och tolkningar av de grundl?ggande begreppen betonats och h?vdats vara v?sentliga. Det har till exempel f?rekommit diskussioner huruvida multipelt arv ?r n?dv?ndigt f?r OOP, och om s? kallad "dynamisk bindning" eller "sen bindning" kr?vs f?r att uppn? de efterstr?vade f?rdelarna med OOP. Begreppet Object-Based Programming (ist?llet f?r Object-Oriented Programming, OOP) har myntats f?r programmeringsspr?k som inte st?der alla delar i OOP-paradigmen t.ex. 1983 ISO-standarden av Ada (1995 blev Ada v?rldens f?rsta ISO-standardiserade objektorienterade programmeringsspr?k).
Programmeringsspr?k
[redigera | redigera wikitext]Det g?r att programmera objektorienterat i en m?ngd olika programmeringsspr?k. Nedan listas de mest v?lk?nda programmeringsspr?ken som st?djer objektorientering.
|