Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Objektorientert systemutvikling og UML  OOSU er den mest anvendte metoden på både store og små prosjekter  UML er det mest anvendte beskrivelsesspråk.
Memento Object Behavioral Design Pattern. Lagre og hente tilstander • Et system inneholder ofte mekanismer som trenger gjenbruk av tilstander • Memento.
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet viser hvem som har kontrollen til enhver tid Det spesifiserer nøyaktig.
Programmering i ActionScript - hva er det, og hvordan undervise?
Introduksjon til objektorientert programmering i PHP
Objektorientert systemutvikling og UML
IMT OOSU 28.sept Dagens tema : forts. DESIGN PATTERNS ObjektOrientert Design = Bevissthet i tildeling/fordeling av ansvar til softwareklasser for.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Operativsystemer.  En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen.  Ofte vil det være flere prosesser/tråder på datamaskinen.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
Organisasjoner og systemer
Unified Process – Elaboration Iterasjon 3
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Mønstre og tekniske applikasjoner
En gang til!? .
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Gruppe 9 Design evaluering og validering.
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser.
En kort innføring i Design Patterns
GoF GoF er fire systemutviklere, Gang of Four GoF fikk utgitt boken Design Patterns høsten 1994 Boken Design Patterns er en klassiker Design Patterns beskriver.
Forbindelser Diagrammer i UML består av ting med forbindelser
Klassediagrammer Klassen er en grunnleggende enhet i det objektorientert systemet Alle kan finne klasser i et domene Det å finne klasser er en intuitiv.
Hovedprinsipper i Rational Unified Process
Domeneklasser En applikasjon kan ha domenesvake og domenesterke klasser.
Strukturerende elementer i UML
Klassediagrammer Klassen er en grunnleggende enhet i et objektorientert system Alle kan finne klasser i et domene Det å finne klasser er en intuitiv aktivitet.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Bygging av gui for binærkode Prosjektet simpletidy.
XMLBeans av Vegard Skipnes (s141721). Agenda Hva er XMLBeans? Historie Eksempel  XML Schema  XML fil  Bruk i java Innstallering Min mening Sammendrag.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Composite & Decorator Patterns Patterns Composite Spørsmål? Introduksjon Decorator Resymé Gruppe 4 Ivar Bonsaksen Remi Karlsen Jonas Lepsøy Stian Rostad.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java & OO.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Innkapsling av request. Køing, logging, angre Command tilhører gruppen av ”behavioral patterns” Instanser av mønsteret leder til instanser av forespørsler.
Biblioteket easylib og proped Konfigurering og simpletidy.
Composite GoF Structural Pattern. Alle kjenner Composite Alle som har brukt lister organisert som trær i brukermiljøer, kjenner Composite Pattern.
XML og Composite Pattern Mønstre og bygging av xml-tre.
Username anonym Password s1mpletransport Host hve3920.hive.no Path /home/transport.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Objektorientert utforming
Objektorientert utforming In 140 Sommerville kap. 12.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Objektorientert design
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.
Kapittel 23 (Big Java 2.utg) Tråder. Kjøring av tråder Ein tråd er ein del av eit program som blir eksekvert uavhengig av andre deler av programmet Vi.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Use case realisering Designmodellering Kirsten Ribu Kapittel 4 UML Distilled.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Strukturerende elementer i UML
Objektorientert programmering i Java
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre

Mønstre fra ulike paradigmer •GoF beskriver 24 instanser av mønstre •GRASP beskriver 9 instanser av best practices •XP Agile beskriver 11 prinsipper for objektorientert design •Andre beskriver tusenvis av instanser for vellykket struktur

Eksempel fra GoF •Mønsteroversikter kan vises i UML pakkediagram •Merk at Adapter brukes både på klasse- og objektnivå •GoF beskriver derfor 23 typer, men 24 instanser, av mønstre.

Mønstre kan bygge på hverandre •Larman viser hvordan f. eks. GoF Adapter bruker mange av prinsippene i GRASP •Tom DeMarco viser hvordan Single Responsibility Principle kan assosieres med kohesjon •Page-Jones viser det samme med high cohesion

Sammenhenger •GoF Adapter realiserer mange av prinsippene i GRASP •Det samme gjelder for flere prinsipper innenfor GRASP •… og det samme kan sies om mange flere patterns i GoF •GRASP inneholder mange av de grunnleggende ideene (Larman 2005, side 439)

Interface og enum •Interfacet deklarerer metoder og konstanter •Interface kan ikke instansieres •Interface følger Liskovs prinsipp, og kan være argumenter •Klasser og interface kan bruke enum for å deklarere og definere metoder knyttet til sekvenser av objekter

Praktisk bruk av enum

Praktisk bruk av interface •Domeneklassene kan realisere interface •Interfacet deklarerer argumentene •Liskovs prinsipp kan også brukes for interface members

Klasser og abstraksjoner •Klassen beskriver objektene •Klassen eier et klasseobjekt som eksisterer allerede før instansiering •Abstrakte klasser følger Liskovs prinsipp, og kan være argumenter •Den abstrakte klassen deklarerer metoder og datafelt, definerer noen av metodene men kan ikke instansieres

Interface members •Feltet figureList er en member •Klassen Figure er abstrakt •Domeneklassene bindes til en abstrakt struktur med robust design

Interface-abstraksjon-struktur •Kombinasjonen av interface, abstrakte klasser og domeneklasser erstatter komplisert logikk •For eksempel kan LineElement enkelt utnyttes for å bygge nye grafiske begreper (former)

Mønstre og assosiering •Action-objekter kan starte en kommandokjede som realiserer Chain-of- Responsibility •De samme action-objektene kan være i flere instanser av Decorator på en gang •Action-objektet assosieres med dekoratøren gjennom aggregering •Grafiske brukerkontroller assosieres med sin parent gjennom komposisjon

Abstrakte metoder •Klasser med abstrakte metoder blir selv abstrakte •Metoden write i OutputStream må være abstrakt fordi –Write må kunne skrive til ulike medium •Tcp/ip, printer eller lokalt filsystem med tape, harddisk, floppy, CD, DVD osv … •Vi vet ikke hvilket medium som skal skrives •Likevel både vil og kan vi lage ferdig andre metoder som baserer seg på write

Abstraksjon og spesialisering •Klassen FileOutputStream kan spesialisere OutputStream •Ved spesialiseringen realiseres metoden write for skriving til ”fil” i det lokale filsystemet •Dermed slutter klassen å være abstrakt, og kan instansieres

Sub/superklassing og aggregering •Tunge klasser som svikter f. eks. SRP eller high cohesion, kan deles i partielle klasser •Abstrakte klasser subklasses i white-box design •Aggregering gir ofte enklere design og klarere ansvarsfordeling •Subklassing av framework-klasser kan forenkle designen

Praktisk subklassing av framework •Vector kan reduseres med tilfeldige elementer i en subklasse-design

Typesterk subklassing •Typedefinert Hashtable subklasses til multippel nummergenerator

Subklassing og klasseobjekt •Subklassing kan føre til kompliserte tilstander •Bruk av klasseobjekter forenkler syntaksen for tilstander •Klassetilstander (static variabler) kan også forenkle logikken betydelig •Men klassetilstander kan være utsatt for race conditions

Race conditions og tråder •Race conditions kan oppstå fordi objekter fra ulike tråder bruker felles ressurser •Metodene kan beskyttes med ordet synchronized •Tråder kan programmeres med ulike metoder som sparer CPU-tid •For eksempel kan sleep slippe monitoren for et angitt antall millisekunder

Eksempel på tråd •class Kakler extends Thread •Klassen må redeklarere metoden ”run” •Klassen Kakler brukes i simpletransport og simpletidy –for å overføre informasjon fra et sted til et annet –Uforstyrret og uten selv å forstyrre –Lar brukeren få tilgang til brukerkontroller før io er helt gjennomført