Objekt (datavetenskap) -
Object (computer science)

Inom datavetenskap kan ett objekt vara en variabel , en datastruktur , en funktion eller en metod och är som sådan ett värde i minnet som refereras av en identifierare .

I objektorienterad programmering paradigm , objektet kan vara en kombination av variabler, funktioner och datastrukturer; särskilt i klassbaserade variationer av paradigmet hänvisar det till en viss instans av en klass .

I den relationsmodellen för databashantering kan ett objekt vara en tabell eller kolumn eller en koppling mellan data och en databasenhet (som att relatera en persons ålder till en viss person).

Objektbaserade språk

En viktig skillnad i programmeringsspråk är skillnaden mellan ett objektorienterat språk och ett objektbaserat språk. Ett språk anses vanligtvis vara objektbaserat om det innehåller de grundläggande funktionerna för ett objekt: identitet, egenskaper och attribut. Ett språk anses vara objektorienterat om det är objektbaserat och också har förmågan att polymorfism , arv, inkapsling och, eventuellt, komposition. Polymorfism hänvisar till förmågan att överbelasta namnet på en funktion med flera beteenden baserat på vilket objekt som skickas till den. Konventionell meddelandeöverföring diskriminerar endast det första objektet och anser att det är att "skicka ett meddelande" till det objektet. Vissa OOP-språk som Flavors och Common Lisp Object System (CLOS) möjliggör dock diskriminering av mer än den första parametern för funktionen. Arv är förmågan att underklassera en objektklass, skapa en ny klass som är en underklass av en befintlig och ärver alla dataförhindringar och beteenden hos sina föräldrar men lägger också till nya och / eller ändrar en eller flera av dem.

Objektorienterad programmering

Objektorienterad programmering är ett sätt att utforma modulära återanvändbara programvarusystem. Det objektorienterade tillvägagångssättet är en utveckling av god designpraxis som går tillbaka till början av datorprogrammering. Objektorientering är helt enkelt den logiska förlängningen av äldre tekniker som strukturerad programmering och abstrakta datatyper . Ett objekt är en abstrakt datatyp med tillägg av polymorfism och arv .

I stället för att strukturera program som kod och data integrerar ett objektorienterat system de två med begreppet "objekt". Ett objekt har tillstånd (data) och beteende (kod). Objekt kan motsvara saker som finns i den verkliga världen. Så till exempel kommer ett grafikprogram att ha objekt som cirkel , kvadrat , meny . Ett online shopping system kommer att ha objekt som kundvagn, kund, produkt . Shoppingsystemet stöder beteenden som att beställa , betala och erbjuda rabatt . Objekten är utformade som klasshierarkier. Så till exempel med shoppingsystemet kan det finnas klasser på hög nivå som elektronikprodukt , köksprodukt och bok . Det kan finnas ytterligare förfiningar till exempel under elektroniska produkter : CD-spelare, DVD-spelare , etc. Dessa klasser och underklasser motsvarar uppsättningar och delmängder i matematisk logik.

Specialiserade föremål

Ett viktigt koncept för objekt är designmönstret . Ett designmönster ger en återanvändbar mall för att hantera ett vanligt problem. Följande objektbeskrivningar är exempel på några av de vanligaste designmönstren för objekt.

  • Funktionsobjekt : ett objekt med en enda metod (i C ++ skulle denna metod vara funktionsoperatören, "operator ()") som fungerar ungefär som en funktion (som en C / C ++ pekare till en funktion).
  • Oföranderligt objekt : ett objekt som är inrättat med ett fast tillstånd vid skapelsestiden och som inte ändras efteråt.
  • Första klassens objekt : ett objekt som kan användas utan begränsning.
  • Behållarobjekt : ett objekt som kan innehålla andra objekt.
  • Fabriksobjekt : ett objekt vars syfte är att skapa andra objekt.
  • Metaobject : ett objekt från vilket andra objekt kan skapas (jämför med en klass , som inte nödvändigtvis är ett objekt).
  • Prototypobjekt : ett specialiserat metaobjekt från vilket andra objekt kan skapas genom kopiering
  • Guds objekt : ett objekt som vet eller gör för mycket (det är ett exempel på ett antimönster ).
  • Singleton-objekt : ett objekt som är den enda förekomsten av sin klass under programmets livstid.
  • Filterobjekt : ett objekt som tar emot en dataström som ingång och förvandlar det till objektets utdata. Ofta är in- och utgångsströmmar teckenströmmar, men dessa kan också vara strömmar av godtyckliga objekt. Dessa används vanligtvis i omslag eftersom de döljer den befintliga implementeringen med den abstraktion som krävs på utvecklarsidan.

Distribuerade föremål

tenderar att vara större, mer hållbara och mer serviceorienterade än programmeringsobjekt.

En standardmetod för att paketera distribuerade objekt är via ett IDL (Interface Definition Language). En IDL skyddar klienten för alla detaljer i det distribuerade serverobjektet. Detaljer som vilken dator objektet finns på, vilket programmeringsspråk det använder, vilket operativsystem och andra plattformsspecifika problem. IDL är vanligtvis också en del av en distribuerad miljö som tillhandahåller tjänster som transaktioner och uthållighet till alla objekt på ett enhetligt sätt. Två av de mest populära standarder för distribuerade objekt är Object Management Group 's CORBA standard och Microsoft är DCOM.

Förutom distribuerade objekt har ett antal andra tillägg till det grundläggande konceptet för ett objekt föreslagits för att möjliggöra distribuerad beräkning:

  • Protokollobjekt är komponenter i en protokollstack som omsluter nätverkskommunikation i ett objektorienterat gränssnitt.
  • Replikerade objekt är grupper av distribuerade objekt (kallas repliker ) som kör ett distribuerat flerpartsprotokoll för att uppnå hög konsistens mellan sina interna tillstånd och som svarar på förfrågningar på ett samordnat sätt. Exempel är fel-toleranta CORBA- objekt.
  • Levande distribuerade objekt (eller helt enkelt levande objekt ) generaliserar det replikerade objektkonceptet till grupper av repliker som internt kan använda vilket distribuerat protokoll som helst, vilket kanske bara resulterar i en svag konsistens mellan deras lokala stater.

Några av dessa tillägg, såsom distribuerade objekt och protokollobjekt , är domänspecifika termer för speciella typer av "vanliga" objekt som används i ett visst sammanhang (såsom fjärrmetoden eller protokollsammansättning ). Andra, som replikerade objekt och levande distribuerade objekt , är mer icke-standardiserade genom att de överger det vanliga fallet att ett objekt finns på en enda plats åt gången och tillämpar konceptet på grupper av enheter (repliker) som kan spänna över flera platser, kan ha bara svagt konsekvent tillstånd och vars medlemskap kan förändras dynamiskt.

Den semantiska webben

Den semantiska webben är i huvudsak en ram distribuerade-objekt. Två viktiga tekniker på Semantic Web är Web Ontology Language (OWL) och Resource Description Framework (RDF). RDF ger möjlighet att definiera grundläggande objekt - namn, egenskaper, attribut, relationer - som är tillgängliga via Internet. OWL lägger till en rikare objektmodell, baserad på uppsättningsteori, som ger ytterligare modelleringsfunktioner som flera arv .

OWL-objekt är inte som vanliga stora korn distribuerade objekt som nås via ett gränssnittsdefinitionsspråk. Ett sådant tillvägagångssätt skulle inte vara lämpligt för Internet eftersom Internet ständigt utvecklas och standardisering på en uppsättning gränssnitt är svår att uppnå. OWL-objekt tenderar att likna den typ av objekt som används för att definiera applikationsdomänmodeller i programmeringsspråk som Java och C ++ .

Det finns dock viktiga skillnader mellan OWL-objekt och traditionella objektorienterade programmeringsobjekt. Traditionella objekt sammanställs i statiska hierarkier vanligtvis med enstaka arv, men OWL-objekt är dynamiska. Ett OWL-objekt kan ändra sin struktur under körning och kan bli en förekomst av nya eller olika klasser.

, ett uttalande anses bara vara falskt om det finns faktisk relevant information om att det är falskt, annars antas det vara okänt, varken sant eller falskt.

OWL objekt är faktiskt mest lik föremål i artificiell intelligens ram språk som KL-ONE och Loom.

Följande tabell kontrasterar traditionella objekt från objektorienterade programmeringsspråk som Java eller C ++ med semantiska webbobjekt:

OOP-objekt Semantiska webbobjekt
Klasser betraktas som typer för instanser. Klasser betraktas som uppsättningar av individer.
Instanser kan inte ändra sin typ vid körning. Klassmedlemskap kan ändras vid körning.
Listan över klasser är fullständigt känd vid sammanställningstid och kan inte ändras efter det. Klasser kan skapas och ändras vid körning.
Kompilatorer används vid byggtid. Sammanställningstidsfel indikerar problem. Reasoners kan användas för klassificering och konsistenskontroll vid körning eller byggtid.
Klasser kodar mycket av deras mening och beteende genom tvingande funktioner och metoder. Klasser gör sin mening uttrycklig i termer av OWL-uttalanden. Ingen tvingande kod kan bifogas.
Instanser är anonyma i den utsträckning att de inte lätt kan adresseras utanför ett körprogram. Alla namngivna RDF- och OWL-resurser har en unik URI under vilken de kan refereras.
Stängd värld: Om det inte finns tillräckligt med information för att bevisa att ett uttalande är sant antas det vara falskt. Öppen värld: Om det inte finns tillräckligt med information för att bevisa att ett uttalande är sant kan det vara sant eller falskt.

Se även

Referenser