Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.

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.
Tabeller av objekter Klassen ArrayList
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
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.
Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Kontrollstrukturer (Kapittel 3)
Objektorientert systemutvikling og UML
Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Chain of Responsibility GoF mønster Operasjonelt (behavioral)
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
IS-102 Klassedefinisjoner
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Android-Programmering Våren Oversikt – PendingIntents Rollen til PendingIntents Vanlig bruk Deling Sending.
Kryptografi og nettverkssikkerhet
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
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,
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet spesifiserer hvem som har kontrollen til enhver tid Det vises nokså.
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
Sammensatt struktur Visning av intern struktur i et samarbeid mellom objekter Fokuserer på ett av en klasses flere mulige ansvar.
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.
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”
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Hvordan uttrykke krav Kapittel 4.4. Innledning Målet er å samles rundt ett entydig språk som ikke kan misforståes eller feiltolkes. Gjør sporbarheten.
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.
Design patterns: State og Strategy
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
9 Skanning.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Information Expert GRASP Grunnleggende prinsipp i programdesign.
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.
Aktivitetsdiagrammer
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
Objektorientert utforming In 140 Sommerville kap. 12.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
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.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Strukturerende elementer i UML
Utskrift av presentasjonen:

Beslektede algoritmer

Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan ikke inneholde kode for alle mulige varianter  I stedet lages det noen få kontraktmetoder i interface eller abstrakte klasser  Dermed kan en instans som kapsler inn en algoritme sendes som argument til klienten  Klienten bruker den innkapslede algoritmen uten å måtte kjenne den konkrete strategien

Prinsippskisse  Klienten skal utføre ulike service- operasjoner  Klienten har aggregert eller komponert et strategiobjekt som vet hvordan

Eksempelskisse  GoF bruker dette eksemplet på side 315  Det handler om ulike strategier for linjeskift  Composition implementerer ikke strategiene selv  Mønsteret minner derfor om Decorator  Forskjellen på mønstre er av og til bestemt av hensikten med mønsteret

Instans av strategy pattern  Prosjektet simpletransport bruker Strategy  Et eksempel med formatering vises på side 118  Spesialiseringer av DefaultTableCellRenderer gir ulike strategier  Installering av strategiobjektet forstås ved hjelp av MVC  Context er TableColumn komponert i TableColumnModel  Strategien installeres med meldingen setCellRenderer

setValue som kontraktmetode  Kontraktmetoden er definert i DefaultTableRenderer  Kontrakten er at domeneklassene kan overstyre metoden  Kontekstobjektet er altså en klasse i rammeverket  Domeneklassen Listpane er klient for kontekstobjektet  Kontekstobjektet tilhører MVC-gruppen i rammeverkets brukerkontroll  Det er altså rammeverkets brukerkontroll som bruker kontraktmetoden setValue

GoFs Applicability list  Flere klasser med lignende ansvar er kun forskjellig i oppførsel (behaviour)  Det er behov for ulike varianter av en algoritme som kan implementeres i et klassehierarki  Klientene kjenner ikke datasettene eller algoritmene som utnyttes i strategiobjektene  Klasser som definerer ulike algoritmer og forgreninger basert på switch- eller lister med if-else får høy kompleksitet og blir vanskelige å vedlikeholde. Flytt hver gren inn i hver sin strategiklasse i stedet

Referanser til prosjekter  simpletransport bruker Strategy for å formatere ulike lister. Se programkode 71 og 72.  Alle prosjektene bruker Strategi som layoutobjekter i paneler eller i spesialiseringer av Jframe, som nevnt blant annet i prosjekt 4, side 55.  easylib bruker Strategy i overføring av data mellom properties og XML, se side 96  simplediagram bruker Strategy for å fremstille sammensatte figurer basert på Graphics2D, interfacet Shape og metoden draw, se side 147