Fremtidens programmering er objektorienteret

Posted on marts 15, 2003
Filed Under Artikelarkiv, Prosa-Bladet

Prosabladet nr. 3, marts 2003
Chips i det hele – og de kan alt. Sammen med trådløse netværk og internet til det hele. Det er fremtiden. Og det eneste rigtige i den sammenhæng er objektorienteret programmering. Det er vurderingen fra de fagfolk, PROSAbladet har talt med. Her viser vi en flig af metoden bag objektorienteret programmering – og hvorfor det er så vigtigt at beherske for fremtidens programmører.

mar03.jpgDer er ikke den mindste tvivl eller vaklen.

– Skal jeg anbefale nogen noget som helst, så må det være at kaste sig over objektorienterede teknologier, vurderer Eric Jul.

Som professor på datalogi på Københavns Universitet og underviser i blandt andet i Java og objektorienteret programmering, er han måske en smule forudindtaget, når det handler om at vurdere arbejdsopgaverne for fremtidens programmører. Men han underviser også stadig i klassiske funktionsorienterede programmeringssprog, fordi de færdigheder også er nødvendige at have som programmør. Og ser man tilbage på programmeringssprogenes historiske udvikling, så er vi uden tvivl nået til at stadium, hvor alfa og omega er objektorienterede teknikker.

– Efter assembler og almindeligt maskinkode kom højniveausprogene som Fortran, Algol og så videre, der introducerer variabel-begrebet og mulighederne for at kalde funktioner forskellige steder fra. Så kom tabellerne til. I Fortran har du biblioteker med funktioner, men du skal stadig selv definere din tabel og din datastruktur, forklarer datalogiprofessoren.

Genvejen mellem analyse og programmering
For ham at se kommer det rigtige gennembrud først ved den objektorienterede teknologis introduktion af begreber som klasser og objekter, hvor koden tager udgangspunkt i både data og funktioner – som et samlet hele.

– En klasse er et lille bibliotek, hvor der er flere ting, du kan lave. Samtidig behøver du ikke selv at definere datastrukturerne, forklarer Eric Jul.

Men det store slagkraftige argument for at bruge objektorienterede teknologier og programmeringssprog er et helt andet. Nemlig den korte vej fra den virkelighed, som programmet skal automatisere eller fungere i – og over til fungerende kode.

– Der er en meget tæt forbindelse mellem implementering og brugergrænseflade. Det opdager du, hvis du begynder at beskrive et problem i virkeligheden ved hjælp af objektorienteret analyse. Hurtigt viser det sig, at de klasser, du inddeler virkeligheden i, i praksis også bliver de klasser, som du skal bruge, når du skal programmere løsningen, forklarer Eric Jul.

Hans eget yndlingseksempel overfor de studerende er et simpelt booking system, der skal reservere sæder i et tog.

– Meget hurtigt kan man identificere, at der skal være klasser som et sæde, et tog og en reservation. Og det er jo præcis den inddeling, du skal bruge, når du begynder at programmere løsningen, fortæller han.

Men det er ikke bare objektorienterede programmeringssprog, der kender til at genbruge programkomponenter i andre sammenhænge og dermed forenkle koden og forkorte arbejdsopgaven. Udgangspunktet for objektorientering er netop den modulære opbygning – og fordi modulerne indeholder både data- og funktionsdefinitioner, kan de umiddelbart skiftes ud.

Programmer er også et industriprodukt

– Du kan jo bruge en analogi med bilen. For hundrede år siden skulle du have en mekaniker med, når du købte en bil, fordi den var så kompliceret. I dag kan du jo bare gå ud og kigge på dine behov. Skal du bruge en lastbil, en pick-up, en familiebil, hvor mange sæder skal der være og så videre. Når du på den måde vurderer, hvilken type bil, du vil have, så kigger du jo i virkeligheden på klasser. Og mange af modellerne genbruger endda komponenter. Hvis du køber en Citroën, er der mange komponenter, som du også kan finde i en Renault, og de er til dels også bygget på samme fabrik. På samme måde, som når du bygger en bil, kan du tage komponenter og stykke dem sammen til den opgave, du skal løse, når du anvender objektorienterede teknologier. Du kan tage et hjul her, et vindue et andet sted fra og stykke det hele sammen. Og det virker, og det er i høj grad netop den tankegang, som de objektorienterede programmeringssprog understøtter, forklarer Eric Jul.

Mange programmører sværger til maskinnære sprog eller direkte assembler, når de skal udvikle programmer, der skal fungere i små enheder med begrænsede ressourcer – hvad enten det er små processorer eller små hukommelsesenheder eller begge dele. Men det er gammel overtro, siger fagmanden.

Legoklodsidéen er det centrale

– Til de små enheder er objektorienteret programmering perfekt. Det kan godt være, at der er flere linier kode, men jeg vil godt stille spørgsmålstegn ved, om det fylder mere, når det er kompileret, vurderer Eric Jul.

Igen og igen, når han fortæller om objektorienteret programmering, dukker Java frem som det salomoniske sværd. Java er svaret på de fleste tekniske spørgsmål. Det er det programmeringssprog, der både har en enkel objektorienteret struktur, som er nem at overskue og lære at beherske, og samtidig kan Java-programmer fungere på enhver platform.

– Java kommer til at slå meget mere igennem i apparater, fordi du er uafhængig af operativsystemer, andre programmeringssprog og så videre. Hvis du koder det i Java, kan det umiddelbart overføres til de fleste enheder andre enheder. Java kan køre på alt muligt, bare du har en Java-fortolker, og den er endda nem at lave til nye ting, siger Eric Jul.

I Java kommer den centrale Legoklodsidé i objektorienteret programmering til sin fulde ret. Java er simpelthen objektorienteret programmering, der støtter Plug-and-Play.

– I Java definerer man en brugergrænseflade, og så finder man en klasse, der kan en del af det, man har brug for. Senere kan du bare plotte en anden klasse på med mere funktionalitet, hvis du for eksempel får mere ram, forklarer Eric Jul.

Men uden fagfolk går det ikke

Og tankegangen er jo ikke fremmed for de fleste brugere. De kender jo godt til den objektorienterede tankegang fra moderne kontorapplikationer.

– Moderne officeprogrammer er jo til dels objektorienteret teknologi, hvor du klippe-klistrer et element fra et sted, og kobler til det i et andet program, forklarer datalogiprofessoren.

Alligevel afviser han, at programmørerne bliver arbejdsløse i fremtiden, fordi brugerne selv kan finde ud af at samle de programkomponenter, de har brug for.

– Der er stadig nødt til at være en fagmand, en programmør, til at programmere. Vi er kun nået til, at det er blevet nemmere at være programmør, forklarer Eric Jul beroligende.

Han peger på, at det er åbent spørgsmål, om menigmand overhovedet kommer til at beherske programmering – selv med fremtidens objektorienterede teknologier.

– Der skal også i fremtiden bruges fagfolk som dataloger og programmører til at overføre programmer til alverdens små enheder. Men i den sammenhæng er det helt, helt klart, at skal jeg anbefale noget som helst, så er det at kaste sig over objektorienteret programmering. For eksempel Java. Det bliver fremtiden, vurderer professor på datalogisk institut i København, Eric Jul.

Objekt orienteret teknologi

I modsætning til traditionelle programmeringssprog ser objektorienteret programmering på data og programkode som et samlet hele. I objektorienteret programmering bruges begreberne objekter og klasser, der strukturerer opgaven på grundlag af data og i mindre grad på grundlag af funktioner, som man kender fra de klassiske programmeringssprog. I traditionel programmering ligger kode og data (variabler for eksempel) i en stor samlet struktur. Men i objektorienteret programmering pakker man dem sammen. De data og den kode, der hører sammen, lægger man i en fælles struktur – en pakke.

Skabelonerne til sådan en pakke kalder man en klasse. Når man med udgangspunkt i en klasse giver data værdier, så får man et objekt. Hvert objekt har fået liv, når der er fyldt noget i skabelonen. Og man kan kun ændre data i et objekt via de funktioner, der er i objektet. For eksempel har Gud skabt mennesket som en klasse, men hver enkelt menneske er et objekt – et individ med hver sine kendetegn.

Objektorienteret analyse og design hænger tæt sammen med objektorienteret programmering. Således fokuserer man i udviklingen på grænseflader, og derfor bliver den model, udviklingsarbejdet når frem til, enkel at gøre operativ – og nemmere at overskue og kode. Blandt andet fordi udviklingen og programmeringen arbejder ud fra begrebet med klasser. Objektorienteret programmering og den tilhørende proces med objektorienteret analyse og design er en metode, der ofte foregår i en iterativ proces, så det veksler mellem analyse, programmering og test – og tilbage igen.

Samtidig er koden opbygget på en måde, så programkomponenter kan genbruges. Opbygning af kode i objektorienteret programmering er modulær og hierarkisk opbygget, og når objekterne indeholder både funktioner og data, kan de skiftes ud med andre objekter, der stammer fra en såkaldt nedarvet klasse. Det nye objekt er kodet ud fra definitionerne i den samme klasse, men kan for eksempel have flere eller bedre funktioner.

En lang række moderne programmeringsværktøjer som Java, C++ og C# bygger direkte på den objekt orienterede tankegang, men en del andre sprog har tillempede objektorienterede elementer. Men objektorienteret analyse og design er i princippet uafhængigt af de computere og den software, der i den sidste ende skal overtage processen. Blandt andet derfor vurderes objektorienterede teknikker at få endnu større betydning i fremtidens mobile netværk, hvor funktionen ikke nødvendigvis ligger i en enhed som en computer – men et sted i netværket – i sammenhængen med andre enheder.

Billedtekst:
Når Eric Jul skal forklare principperne for objektorienteret programmering for sine studerende bruger han et simpelt booking system til reservation af sæder i et tog som eksempel.
– Meget hurtigt kan man identificere, at der skal være klasser som et sæde, et tog og en reservation. Og det er jo præcis den inddeling, du skal bruge, når du begynder at programmere løsningen, fortæller han.
Foto: Claus Thorhauge.

Comments

Leave a Reply