Objektorientering. Programkvalitet



Relaterede dokumenter
Citation for pulished version (APA): Nordbjerg, F. E. (1993). Objektorientering = Programkvalitet? Prosabladet. De it-professionelles fagblad, (4).

Videregående Programmering for Diplom-E Noter

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.

Abstrakte datatyper C#-version

Kapitel 21: Softwarearkitektur designprincipper

Objektorienteret design med arv og polymorfi:

Forslag til oprettelse af et konferencemodul

4 Basal Objekt-orienteret Programmering I.

CCS Formål Produktblad December 2015

Forord. Med pjecen ønsker vi først og fremmest at informere vores medlemmer om de arveretlige regler samt om vigtigheden af at få skrevet

UML til kravspecificering

BIM Shark brugervejledning v1 Februar 2016

Penge- og Pensionspanelet. Unges lån og opsparing. Public

Hvem sagde variabelkontrol?

Studieretningsprojektet i 3.g 2007

29 Opsamling af Objekt-orienteret Programmering.

Bilag 1: Ekstrakt af forretningsarkitekturanalyse af digital understøttelse af tværgående komplekse patientforløb

KOMMENTARSKABELON. Høring af CCS Informationsstruktur. Foreningen af Rådgivende Ingeniører, FRI og DANSKE ARK

TIL. ARBEJDSOPGAVER UDARBEJDET AF: Charlotte Sørensen lærer v. Morten Børup Skolen, Skanderborg DANMARK I DEN KOLDE KRIG

1-2-3 klasse Præsentationsporteføjle

CNC-maskiner. Typer. CNC-maskiner. Programmerbar overfræser - Fabrikat WADKIN. Fig. 1

Formandsberetning i HBH 2015.

Tilfredshedsundersøgelse Brugere og pårørende. Bofællesskaber og støttecenter Socialpædagogisk Center

Evalueringsresultatet af danskfaget på Ahi Internationale Skole. ( ) Det talte sprog.

Miljøministerens besvarelse af spørgsmål nr. W stillet af Folketingets Miljøudvalg

Objektorienteret Analyse & Design

En mini e-bog til dig fra Solrød Kommune i samarbejde med Aros Business Academy 7 FEJL DU IKKE MÅ BEGÅ, NÅR DU SØGER JOB

Automatisering Af Hverdagen

imo-learn MOVED BY LEARNING

Skriftlig eksamen i Datalogi

Problempræsentation. Er der overhovedet nogen, der interesserer sig for det, I vil lave? PRO-Programmet.dk 1

Indledning... 2 Opbygning... 2 Servicesegmenternes sammenhæng... 3 UNA... 4 UNB... 6 UNH UNT UNZ... 14

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Forberedelse - Husk inden:

Lærervejledning til teacher-content.com senest rettet Efter beskrivelsen kan du få svar på nogle af de oftest stillede spørgsmål.

Trykskrift Nr 5072/DK/1204 RAPPORT

STEDBEVIDST UDVIKLING. Jes Ryttersgaard Kort og Matrikeldtyrelsen

Releasebeskrivelse KMD Sag. Version Nyheder og ændringer i KMD Sag & KMD Sag EDH

Vejledning til Word på PC

Indsigelse mod vindmølleplanlægning for Jernbæk & Holsted N Til rette vedkommende i Vejen Kommune:

Analyse af PISA data fra 2006.

Nyt værdigrundlag s. 2. Rønbækskolens formål, mål og værdigrundlag s. 3. Værdigrundlaget arbejder i hverdagen s. 6

Bør kragerne flyve mod øst?

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

SLS-kasserer. - En vejledning til kassererarbejdet i din lokalbestyrelse

Du har arbejdet for dine penge. Nu skal de arbejde for dig. - Drop opsparingen og investér i stedet pengene.

Indkredsning af de grundlæggende normative principper for økologisk jordbrug. Hugo F. Alrøe & Erik Steen Kristensen

Indholdsfortegnelse. 10 Brugergrupper med differentierede rettigheder Forbedret teksteditor Nye features i Epos e-rekruttering ver. 1.

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Dansk-historieopgaven (DHO) skrivevejledning

Mundtlig prøve i Matematik

Bacheloruddannelsen i Historie ved Aalborg Universitet. Tillæg til. Studieordning for bacheloruddannelsen i almen Historie og

GENEREL VEJLEDNING KOM GODT I GANG FOR DIG SOM ER KURSIST

At lave dit eget spørgeskema

RAMMERNE FOR PROJEKTET...

> Integreret betalingssystem unik i brugervenlighed, design og kvalitet

LINJEdans, RUMlerier, FORM og ARKITEKTURfornemmelser

Lavenergihuse målt og beregnet Off-print af artikel til Danvak Magasinet

AT og Synopsisprøve Nørre Gymnasium

Vækst og Forretningsudvikling

Faglig læsning i matematik

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

Introduktion. Jan Brown Maj, 2010

Hvilke betydninger tillægger voksne en ADHD diagnose. Maja Lundemark Andersen, socialrådgiver, cand.scient.soc og ph.d.

2 Abstrakte datatyper.

Brugervejledning til. BBB s hjemmeside. BEMÆRK: Denne vejledning fungerer bedst til Windows. Senest opdateret: :45

SWC eksamens-spørgsmål. Oversigt

Jeg tror, at efter- og videreuddannelse kommer til at spille en central rolle i moderne fagforeninger i de kommende år.

1 Indholdsfortegnelse.

Allan Røder: Danske talemåder, 616 sider. Gads Forlag, Køben-

Tale ved SSWs nytårsreception d

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

Anamorphic Widescreen

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Armeringsstål Klasse A eller klasse B? Bjarne Chr. Jensen Side 1. Armeringsstål Klasse A eller klasse B?

Sohngårdsholmsvej 47, 9000 Aalborg, Tlf ,

BESKÆFTIGELSESMINISTERIET 24. april 2006 PA1 Sag nr / Hlo/EMH. Talepunkter til samrådsspørgsmål U og V:

18 Multivejstræer og B-træer.

Notat. Introdansk beskrivelse af fastlagte krav til indberetning af statistikoplysninger fra udbydere JL

Rentefølsomhed og lånefordelingen - Parcelhuse vs ejerlejligheder og København vs Aarhus

Bruger manual, SDN-aftalesystem

Bilag 4: Spørgeskema til målgruppen. Hejsa tidligere VUT-II elev

Sund eller usund økonomi 2016? - den økonomiske robusthed er steget. Ann Lehmann Erichsen, forbrugerøkonom

Velkommen til generalforsamling 2013 i Opel GT Klub Danmark.

Forældres afkald på arv fra barn

På de følgende sider kan du læse om nogle af de overvejelser du bør gøre dig, hvis du påtænker at skifte din bolig ud.

Det siger medlemmer af FOAs Social- og Sundhedssektor om velfærdsteknologi

1.s.e.trinitatis 2016 i Herlev kirke Luk. 12,13-21; Præd. 5,9-19; 1 Tim. 6,6-12 Salmer: 743; 680; ; 321; 11

Er trafikanterne tilfredse med ITS på motorveje?

Information om. Historieopgaven i 1hf

Lars Hjemmeopgave, uge36-05

3D GeoInformation. Systemudvikling. 1. Introduktion til Systemudvikling og Projektmodeller. Systemudvikling L Lars Bodum

Interview med Jørgen Schøler Cheflæge Hospitalsenheden Horsens.

Bilag til den indsigelse, som sommerhusgrundejerforeningerne på Samsø har fremsendt til Skov- og Naturstyrelsen den 27. april 2012.

Att: Mads Ellehammer:

Kom/IT rapport Grafisk design Anders H og Mikael

Projektpræsentation. Formidling og statusseminar. Hvad siger erfaringerne (1) Hvad siger erfaringerne (2) Kropssprog (1) Hvad siger erfaringerne (3)

Hygiejnisk modulafskærmning i rustfrit stål DK

Transkript:

1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte modeord. Stort set alle metoder, værktøjer og produkter reklamerer med at være "OO- dit eller dat". Pudsigt nok er dette sket i de sidste par år. Objektorientering er nemlig ikke nogen nyhed, men idéer, som er over 25 år gamle. Historien starter i Norge, hvor der udvikles et programmeringssprog, Simula, i første omgang til løsning af komplekse simuleringsopgaver, men man indser hurtigt, at de begreber og sproglige konstruktioner, der er udviklet, er velegnede til løsning af et langt større spektrum af problemer. Sproget videreudvikles, og i 1967 udbydes programmeringssproget Simula67 på markedet som et generelt programmeringssprog. Simula67 er et komplet objektorienteret programmeringssprog med understøttelse af klasser, nedarvning, polymorfi mv. Af forskellige grunde fik Simula aldrig nogen større udbredelse, men levede stille og roligt i universitetskredse rundt om i Verden - bla. i Århus og Aalborg. Simula er således meget klart forbillede for bla. C++, som i dag er et af de mest udbredte objektorienterede programmeringssprog. Det er ikke nogen tilfældighed, at C++'s "far", Bjarne Stroustrup, er datalog fra Århus Universitet. Der er altså ikke tale om en revolutionerende ny teknik, men om gode gamle idéer som har levet og udviklet sig indtil tiden var moden - og det er den øjensynligt nu. Denne artikel foregiver ikke at give et endeligt svar på overskriftens spørgsmål, men vil forsøge at give et indtryk af, hvad objektorientering er og specielt, hvordan objektorientering kan forbedre programkvaliteten.

2 2. Programkvalitet Interessen for at indføre objektorientering skyldes naturligvis, at de anvendte metoder og teknikker ikke er tilfredsstillende. Der tales ofte om, at vi har en software-krise. Symptomer herpå er bla.: systemer er ofte forsinkede, er meget dyrere end forventet, lever ikke op til brugernes forventninger og er vanskelige at ændre/tilpase. Samtidig skifter kravene til systemerne hurtigere og hurtigere, og organisationer bliver mere og mere afhængige af informationssystemer. En vej ud af software-krisen er derfor systemer, som først og fremmest er modificérbare. Modificérbarhed opnås, hvis - systemet er gennemskueligt - systemarkitekturen er stabil, dvs. at mindre ændringer i kravene til systemets funktionalitet også kun kræver mindre ændringer i enkelte af systemets moduler - ikke i systemets grundlæggende arkitektur - systemet er opbygget af moduler, som kan anvendes uden kendskab til deres interne struktur (er lukkede), men samtidig skal modulerne være åbne for ændringer/udvidelser 3. Objektorientering Objektorientering søger at opnå dette gennem, at programmer opbygges som objekter, der modellérer den virkelighed, som programmet beskriver, gennem dataabstraktion og gennem nedarvning og polymorfi (se nedenfor). Modelaspekt Et program skal være opbygget af komponenter, som svarer til begreber i programmets problemområde. Når vi tænker på de begreber, som indgår i et system, så tænker vi ikke på data og funktioner som adskilte dele, men på helheder (objekter) som indeholder både data og operationer til bearbejdning af dataene. Fx. omfatter begrebet Bankkonto ikke blot data (saldo, rentefod mv.), men også de operationer, der kan udføres på en bankkonto (indsæt, hæv, beregn rente mv.). De fleste systemudviklingsmetoder focusere på enten data (fx. JSP) eller funktioner (fx. Yourdon SA/SD). Objektorientering søger at beskrive data og funktioner under ét og giver hermed mere forståelige modeller. Dvs. programkoden bliver en bedre model af virkeligheden, og dermed lettere gennemskueligt. Dataabstraktion Det har vist sig, at dataobjekter betragtet på et vist logisk niveau er langt mere stabile end funktioner. Dataobjekterne i problemområdet (kunde, konto mv.) forbliver stort set de samme, mens krav til funktionalitet ændres ustandseligt. Objektorientering tager udgangspunkt i dataobjekter og beskriver dem abstrakt, dvs. gennem krav til deres tilknyttede operationer.

Klassebegrebet En klasse er en beskrivelse af en række objekter med fælles egenskaber. Man kan sammenligne en klasse med en record-definition, blot er der tilføjet operationer i form af procedurer/funktioner til bearbejding af objekternes data. Ved at anvende klasser til at opbygge de moduler, som et program skal bestå af, tilgodeses modelaspektet. Moduler i programmet (= klasser) svarer direkte til begreber i problemområdet. Ved at indkapsle data i objekter og kun tilgå dem via de tilknyttede operationer understøtter klasser dataabstraktion. Klasser er således den helt centrale konstruktion i objektorienteret udvikling mht. opnåelse af gennemskuelighed og stabilitet. 3 class BankKonto private public Rentefod, Saldo: Real Ejer: #Kunde Opret( - ): --- DispBeløb: return Saldo Indsæt( - ): --- Hæv( - ): --- -- andre operationer -- definition af datafelter -- reference til et objekt af type Kunde Figur 1: Beskrivelse af klassen BankKonto i en til lejligheden opfundet notation. Åben/lukket-princip Isoleret betragtet er en klasse et lukket modul: data er indkapslet bag operationer, som kan anvendes udelukkende udfra kendskab til deres interface (parameterlister og funktionelle specifikationer), men vi ønsker jo også, at vores moduler skal være åbne over ændringer, udvidelser og anvendelse i andre sammenhænge end de oprindelige. Løsningen herpå er nedarvning (og polymorfi). Nedarvning Nye klasser kan dannes som specialiseringer af gamle klasser. Nye egenskaber kan tilføjes, og gamle kan omdefineres. Fx. hvis vi har en klasse BankKonto, som bla. indeholder datafelterne Ejer, Saldo og Rentefod og bla. operationen DispBeløb, som returnerer Saldo. Vi kan danne en ny klasse ØkonomiKonto, som en specialicering af BankKonto ved at definerere ØkonomiKonto, som en arving til BankKonto. ØkonomiKonto har hermed automatisk alle BankKonto's egenskaber (data og operationer). ØkonomiKonto adskiller sig imidlertid fra BankKonto ved at have tilknyttet en kredit på fx. 10000 kr. I ØkonomiKonto tilføjes derfor datafeltet Max, og operationen DispBeløb omdefineres, så der nu returneres Saldo + Max. På tilsvarende vis kan andre kontotyper defineres udfra eksisterende klasser. Polymorfi Sammen med nedarvning understøtter polymorfi mulighederne for at udvide/ændre programmer. Polymorfi indebærer, at referencer til et objekt af en given klasse kan erstattes af referencer til et objekt af en klasse, som er arving til den oprindelige. Da en arving er en

4 specialisering af sin forfader, så har arvingen også alle forfaderens egenskaber (data og class ØkonomiKonto inherit BankKonto -- ØkonomiKonto er arving til BankKonto. private public Max: Real DispBeløb: return Saldo + Max -- datafelterne RenteFod og Saldo arves og skal ikke defineres igen. Ligeledes for Ejer. -- DispBeløb omdefineres, øvrige operationer arves. -- evt. andre operationer specielle for ØkonomiKonto Figur 2: Beskrivelse af klassen ØkonomiKonto som arving til BankKonto. Objekter tilhørende klasse ØkonomiKonto har alle egenskaber defineret i BankKonto og alle defineret i ØkonomiKonto. operationer - nogle evt. omdefinerede). Hermed kan arvingen udføre samme operationer som forfaderen, men på sin egen måde. I bankeksemplet betyder dette, at man kan kalde DispBeløb og få det rigtige svar uanset om, det er et objekt af type BankKonto eller et objekt af typen ØkonomiKonto, man refererer til. Hermed kan rutiner, som er skrevet til at bearbejde objekter af klassen BankKonto, også håndtere objekter af typen ØkonomiKonto, men endnu vigtigere også objekter af nye klasser, som måtte blive defineret i fremtiden, blot de er arvinge til BankKonto og har en (for dem korrekt) version af operationen DispBeløb. 4. Afslutning Sammenfattende kan det siges, at - software-udviklingens største udfordring er at skabe systemer, der er gennemskuelige, stabile overfor nye krav til systemets funktionalitet og systemer, hvis komponenter er åbne overfor modifikationer, så de kan indgå i nye anvendelser. - objektorientering prøver at møde denne udfordring ved at beskrive virkeligheden som objekter, der indeholder både data og tilknyttet funktionalitet. Udgangspunktet herfor er dataabstraktion, idet dataobjekter på et vist logisk niveau er langt mere stabile end funktioner. Nedarvning og polymorfi understøtter udviklingen af fleksibile software-komponenter, herigennem skabes modificérbart software, og mulighederne for genbrug af software-komponenter styrkes.

Det skal dog nævnes, at de objektorienterede metoder endnu ikke er færdigudviklede, der er stadig ubesvarede spørgsmål, metoderne og værktøjerne mangler eller er ufuldstændige, men tendensen er klar: Svarene kommer hurtigere og hurtigere, metoder og værktøjer forbedres hele tiden, og der gøres stadig flere erfaringer med praktisk anvendelse af objektorientering. Objektorientering ser ud til at være kommet for at blive og er det hidtil bedste bud på en løsning på software-krisen. Dette har været en meget kortfattet og postulerende opridsning af nogle grundlæggende forhold og begreber, men der findes efterhånden en righoldig litteratur, som uddyber, forklarer og argumenterer grundigere for mine påstande, og jeg må i denne sammenhæng nøjes med at henvise evt. interesserede til denne litteratur. 5