torsdag 23 april 2009

Klasser och objekt

Vid objektorienterad programmering bygger man upp sina program av ett antal väl avgränsade enheter som kallas objekt. 

Det klassiska bilden av ett datorprogram är en "låda" i vilken man stoppar in indata och får ut udata. Programmets uppgift är alltså att transformera ett dataflöde. Detta treaditionellla sätt att uppfatta datorprogram på brukar kallas det funktionsorienterade synsättet.

Det objektorienterade synsättet är annorlunda. Enligt detta uppfattar man ett datorprogram som en modell av den verklighet programmet skall samverka med. De enskilada e
nheterna i ett program, de s.k objekten, är då modeller av verkligen eller tänkta ting i programmet omgivining och ett datorprogrammes upphoft är att manipulera objektet. I programmets använder man s.ks klasser för att avbilda och beskriva objektens egenskaper. 

Varje objekt har en unik identitet och i programmet kommer man åt objekt via namn, antigen direkt eller via referenser. I java används referenser. Man kan t.ex. konstruera ett objekt blomman som avbildar en verklig blomma eller ett objekt fönstret som beskriver ett fönster på skärmen. Varje objekt har en uppsättning egenskaper vilka bestäms av dess attribut och dess operationer. Attribut används för att hålla reda på objektets tillstånd, eller status.
Varje objekt har en egen, unik uppsättning attribut. Normalt brukar man gömma ett objekts attribut inne i objektets så att det blir oåtkomlig utifrån och bara kan förändras av objektets självt. Detta kallas inkapsling eller information hiding.

Som exempel kan vi studera objektet hissen som beskriver en verklig hiss. Dess tillstånd kan beskrivas med hjälp av de två attributern riktning och våning. Attributen rikting kan ha något värde stilla, uppåt eller neråt och attributet våning kan innehålla ett heltal som anger vilken våning hissen 
är på. 

Olika objektorienterade programmeringsspråk använder olika termer för "attribut". I Java används för det mesta termen "instansvariabel" i C++ används termen "datamedlem" och i Ada "komponent". I fortsättningen kommer vi att använda ordet instansvariabel. Ibland använder vi det enklare ordet variabel när det är uppenbart att det är frågan om en instansvariabel.

Den andra kategorin egenskap för ett objekt är de operationer som man 
kan utföra på objektet. För objektet "hissen" kan det t.ex. finnas metoderna körTill, stanna och vilkenVåning . Metoden "körTill" använder man för att få hissen att köra till en viss våning, "stanna" används för att stoppa hissen f.n. befinner sig. I Java kallas en sådan operation för en "metod". Ibland används vi ordet instansmetod för att betona att en viss metod hanterar enskild instans av en klass.

Ett objekt är alltså en modell av ett verkligt eller tänkt föremål, men hur beskrivs då objekt i ett program? Det är här begreppet klass kommer in. En klass är en mall, eller mönster, som beskriver hur objekt med samma uppbyggnad och egenskaper ser ut.  

En klass är alltså  en beskrivning.

                 
Objekt
Modell av ett verkligt eller tänkt föremål.
Har två slags egenskaper; attribut och operationer.
Kallas instansvariabler resp. metoder i Java.



Inga kommentarer:

Skicka en kommentar