Kapittel 5: Sammensatte datatyper


Vi har snakket om de enkel (fundamentale) datatypene

og de sammensatte datatypene

Array: Tabell med verdier som kan tilordnes og hentes ved hjelp av en indeks-nummerering fra 0 og oppover

Klasse: I objektorienterte språk har vi i tillegg i objektorienterte og nyere programmeringsspråk begrepet klasse, en datatype vi kan sette sammen selv og som til forskjell fra Array kan inneholde forskjellige andre datatyper og metoder/funksjoner.

Eksempel på deklarasjon av klasse i fil:

package {
public class Person {
   private var navn: String="Ole";
   private var alder: int= 12;
   public function Person(navn:String,alder:int) {
      this.navn=navn;
      this.alder=alder;
   }//Person
   public function okAlder():void {
      alder++;
   }//okAlder()
}//class
}//package

Her har vi deklarert en datatype som inneholder egenskapene (property) navn og alder og metodene Person() og okAlder().

Metoden med samme navn som klassen, Person, er en såkalt konstruktør som brukes til å initialisere/sette opp variabelen (objektet) som skal ha denne datatypen når de deklareres:

var p: Person = new Person("Kari", 13); 

Denne instruksjonslinjen oppretter et objekt med datatypen Person som initialiseres til å hete Kari og ha alderen 13.

Senere kan man øke alderen med:

p.okAlder();

Med henblikk på læreplanmålet om "Planlegging og dokumentasjon" illustrerer jeg hvordan en slik klasse kan dokumenteres skriftlig i det såkalte dokumentasjonsspråket UML :

Dette viser at klassen har private (-) egenskaper navn og alder og
public (+) metodene Person(...) og okAlder().

Dette viser hvordan klassen kan brukes, uten at man trenger å vite hvordan den er laget eller ser ut inni ("black box")!

Vi kan lage en slik, legge i egen fil, og andre kan bruke den, bare vi har gitt dem UML-diagrammet over.

Slik lages programmer i praksis, forskjellige programmerere lager forskjellige deler av systemet, og dokumenterer det de har laget med for eksempel UML-diagrammer.

Vi har tidligere brukt mange klasser i Flash og ActionScript systemet:

Eksempler på klasser og objekter vi har møtt i Flash:

Faktisk er Number, Boolean og Array klasser, de inneholder andre ting enn det vi ligger inn.
Eksempelvis er Number-objektet slik:

og Array-objektet slik: (ikke alt er tatt med)

Komponenten TextField i brukergrensesnittet: (Mye er utelatt her...)

String er et interessant objekt som har mange egenskaper og metoder:

Egenskaper:

length: Antall tegn

Metoder:
charAt(pos:Number):String Returnerer bokstaven på plassen pos
indexOf(s:String): int Returnerer plasseringen av s strengen
lastIndexOf(s:String,start:int):int Returnerer den siste plasseringen (hvis flere ganger)
slice(start,end:int):String Returnerer strengen som starter i posisjon start og slutter i posisjon end
split(skille:String): Array of String Deler strengen der skille forekommer
substr(start,lengde:int):String Returnerer streng som starter i posisjon starrt og har lengde lengde
substring(start,end:int):String Som slice