PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL
Om foredragsholderne Thomas Skjørten, ProVentus Jobbet i ProVentus siden 2004 Jobber mye med teknologi og forskning I hovedsak teknologi fra Progress og Microsoft Begynte med Progress i 2004 Hilde Andreassen, Berg-Hansen Reisebureau AS Jobbet i Berg-Hansen siden 2005 4 års erfaring med modellering Begynte med Progress i 2006
Dagens meny Hvorfor objektorientert programmering? UML-modellering Hva er UML? Hvorfor UML? Eksempelmodeller Objektorientert Progress OOABL OpenEdge Architect 10.2A Beta
Hvorfor objektorientert programmering? THOMAS SKJØRTEN
Objektorientert programmering Kort historikk Simula påbegynnes Simula 67 presenteres. Objektorientering er født. Smalltalk C++ Java.NET / C# OOABL
Hvorfor objektorientering? Å programmere handler om å lære maskiner å utføre menneskelige oppgaver I objektorientering struktureres koden i logiske enheter som både inneholder data og logikk Disse enhetene settes i sammenheng og benytter hverandres funksjonalitet får å lage systemer
Innkapsling Innkapsling lar oss bygge enheter som er selvforsynte med alt de trenger for å utføre funksjonaliteten de tilbyr Disse enhetene kan enkelt gjenbrukes Klart skille mellom data og funksjoner Den som kaller prosedyren er ansvarlig for å holde på de dataene som trengs, samt å sende med disse verdiene til hvert kall Prosedyren har levetid på et enkelt kall Funksjoner grupperes i klasser som også inneholder data Klassen holder selv styr på sine data Også mellom kall Levetiden til et objekt av klassen bestemmes av den som oppretter objektet Prosedyrisk programmeringObjektorientert programmering
Innkapsling, eksempel (prosedyrisk) Kasse.p
Innkapsling, eksempel (OO) Kasse.p
Hvorfor objektorientering? Arv Mer gjenbruk! Mulighet til å organisere klasser i hierarkier der klasser kan arve funksjonalitet fra andre klasser slik at man slipper å implementere dette flere ganger Når en klasse arver fra en annen vil den automatisk inneholde alle data og funksjoner fra klassen den arver fra Ofte vil klasser som arver fra en annen tilby ekstra funksjonalitet i forhold til klassen den arver fra
Arv, eksempel
Arv: typesikkerhet
Hvorfor objektorientering? Polymorfisme gir oss muligheten til å programmere ”dynamisk” uten å bryte med typesikkerhet Ved å benytte arv kan vi i koden gjøre kall der mottakeren av kallet ikke er kjent før ved kjøring av programmet Programmet kan dermed oppføre seg forskjellig basert på valg som blir tatt av brukeren eller andre eksterne faktorer
Polymorfisme, eksempel
Mye mer oversiktlig kode. Koden er organisert etter menneskelige begreper, ikke etter programfunksjoner (substantiver / verb) Bil, Konto, Faktura, Lån CreatePlan, ExcecutePlan, ExecutePlan2, DoMagic, SuperFunction Enklere gjenbruk av kode Innkapsling Arv Typesikkerhet Kompileringsfeil, ikke runtimefeil! Hvorfor objektorientering ? Oppsummering
UML modellering BASIC HILDE ANDREASSEN
Hva er UML? UML = Unified Modelling Language Et språk definert for å beskrive virkeligheten Viser hoveddelene i ett system og deres avhengigheter Modell System Bruker
Hvorfor UML? Oppnår bedre forståelse mellom kunden og utvikleren om hva som faktisk skal lages Diagrammer gir en presis forståelse av løsningen som skal utvikles. Vi lager det kunden FAKTISK ønsker. I OO programmering kan vi ofte få komplekse løsninger, det er derfor lurt å planlegge før og underveis i programmeringen Gir god oversikt Slipper mye tekst i dokumentasjonen
Basic UML modellering UseCase Kartlegger ulike senario for systemet Avdekke risiko områder Inneholder krav til systemet Ofte brukt som basis for testing Class diagram Objekter satt i system Viser objekter og relasjoner mellom dem Sequens diagram Viser sekvensen og flyten for løsningen Baserer seg ofte på senario i UseCase
ProCargo UseCase – Overordnet diagram
ProCargo Class diagram
ProCargo Sequence diagram
Progress OOABL
Oppsummering Objektorientering lar oss strukturere koden i logiske enheter Dette gir oss store muligheter for gjenbruk av kode Sterk typing fører til færre runtimefeil UML hjelper oss til å få en gjennomtenkt løsning
Flere sprøsmål / kontakt Thomas Skjørten Hilde Andreassen
Ressurser Objektorientering OpenEdge Getting Started: Object oriented programming (whitepaper) OpenEdge Getting Started: Object oriented programming (whitepaper) UML UML Destilled, Fowler UML Destilled, Fowler Unified Modelling Language User Guide, Booch, Rumbaugh, Jacobson Unified Modelling Language User Guide, Booch, Rumbaugh, Jacobson Applying UML and Patterns, Larman Applying UML and Patterns, Larman Head First Object-Oriented Analysis & Design, McLaughlin, Pollice, West Head First Object-Oriented Analysis & Design, McLaughlin, Pollice, West PUG-Norge