Uppräkningstyper enum. DD2385 Programutvecklingsteknik Några bilder till föreläsning 11 12/5 2014. Enum m.m. OOA (ObjektOrienterad Analys)



Relevanta dokument
OOA Objektorienterad Analys. Exempel på informell kravspecifikation. DD2385 Programutvecklingsteknik Några bilder till föreläsning 11 13/5 2013

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Automation Region. Affärsdriven systemutveckling genom agila metoder. Stefan Paulsson Thomas Öberg

Linköpings universitet 1

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Informationshantering vid systemutveckling styrd av CM

Du fulländar mig! Om synergierna mellan agila metoder och UX. Joakim Holm Adaptiv AB. Erik Hammarström Antrop AB

Agil programutveckling

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Användningscentrering i agila utvecklingsprojekt. johanna.sarna@valtech.com Valtech

This work by. Fredrik Wendt. is licensed under a. Creative Commons

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp

SCRUM och agil utveckling

12 principer of agile practice (rörlig)

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Systemet. Varför? Persiska viken 3 juli Resultat. Mitt under striden: USA befinner sig i konflikt med Irak och Iran. Mitt under striden, forts:

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Agil projektmetodik Varför och vad är det?

Användarcentrerad systemdesign

Agile-metoder, XP och ACSD

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Användarcentrerad systemdesign


Projektmetodik. Översikt. Lektion 1: Metodiker. Metodiker.

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektsamlingar i Java

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Agenda. Objektorienterad programmering Föreläsning 13

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Agile Enterprise Architecture

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

extreme Programming refactored - recension och analys av Kent Becks senaste definition av XP

Tvådimensionella fält

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Verktyg för agil systemutveckling. Vad är ett verktyg? Olika typer av verktyg för mjukvaruutveckling. Vad kan ett bra verktyg tillföra?

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Agile i ett större sammanhang. Thomas Nilsson CTO, Agile Developer, Coach & Mentor

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Chapter 4: Writing Classes/ Att skriva egna klasser.

Extreme Programming En bra metod?

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Mönster. Ulf Cederling Växjö University Slide 1

Försöket med trängselskatt i siffror

AGIL KRAVHANTERING. Hitta behoven bakom kraven!! Thomas Nilsson! Agile Coach & Mentor! CTO, Responsive

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 1. Kursinformation Vad är Software Engineering? Hur går ett projekt till?

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDI02. Programmeringsprojekt, Föreläsning 1. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Föreläsning 12: Exempel och problemlösning

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Föreläsning 8: Exempel och problemlösning

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Analys och bedömning av företag och förvaltning. Omtentamen. Ladokkod: SAN023. Tentamen ges för: Namn: (Ifylles av student.

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Objektorienterad programmering i Java

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 11: Rekursion

Presentation. Fredrik Runnsjö 1996 Utvecklare 2004 Testare ~2006 Scrum/Canban

Support Manual HoistLocatel Electronic Locks

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

3rd September 2014 Sonali Raut, CA, CISA DGM-Internal Audit, Voltas Ltd.

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Uttagning för D21E och H21E

UML use cases. Mikael Söderström Institutionen för informatik Umeå universitet

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 8. Designmönster

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Transkript:

DD2385 Programutvecklingsteknik Några bilder till föreläsning 11 12/5 2014 Innehåll Enum m.m. OOA (ObjektOrienterad Analys) Utvecklingsmetodik särskilt XP-liknande Uppräkningstyper enum Definiera egen typ med egna värden: enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday Day är en klass med konstanta värden. Värdena refereras med Day.Wednesday Day.Saturday Day theday = Day.Saturday; Day[] specialdays = {Day.Tuesday, Day.Thursday, Day.Sunday; Uppräkningstyper enum values() alla värden inom typen: f o r ( Day d : Day. v a l u e s ( ) ) System. out. p r i n t l n ( d ) ; ger utskrift Monday Tuesday Wednesday Thursday... Lägg i filen Day.java

Uppräkningstyper enum ordinal() ger ordningsnummer f o r ( Day d : Day. v a l u e s ( ) ) System. out. p r i n t ( d. o r d i n a l ( ) + ) ; ger utskrift 0 1 2 3 4 5 6 Går att jämföra och sortera: implements Comparable System. out. p r i n t l n ( Day. Thursday. compareto ( Day. Saturday ) ) ; ger utskrift -2 Spelkort med enum c l a s s S p e l k o r t { Farg f a r g ; V a l o r v a l o r ; S p e l k o r t ( Farg f, V a l o r v ){ f a r g = f ; v a l o r = v ; public S t r i n g t o S t r i n g ( ) { return f a r g + + v a l o r ; Spelkort med enum enum för Farg public enum Farg {HJARTER, KLOVER, RUTER, SPADER enum för Valor public enum V a l o r {ESS, TVA, TRE, FYRA, FEM, SEX, SJU, ATTA, NIO, TIO, KNEKT, DAM, KUNG Kortlek c l a s s K o r t l e k { S p e l k o r t [ ] l e k = new S p e l k o r t [ 5 2 ] ; K o r t l e k ( ) { i n t i =0; f o r ( Farg f a r g : Farg. v a l u e s ( ) ) f o r ( V a l o r v a l o r : V a l o r. v a l u e s ( ) ) l e k [ i ++] = new S p e l k o r t ( f a r g, v a l o r ) ;

Metoder att lägga till i Kortlek : tostring() En lång String med 5 kort per rad public S t r i n g t o S t r i n g ( ) { S t r i n g B u i l d e r a l l t = new S t r i n g B u i l d e r ( ) ; i n t rad = 0 ; f o r ( S p e l k o r t s : l e k ){ a l l t. append ( s + ) ; i f ( rad++ == 4){ a l l t. append ( \n ) ; rad = 0 ; a l l t. append ( \n ) ; return a l l t. t o S t r i n g ( ) ; Blanda korten Arrays.asList(kortlek) gör lista intimt kopplad till en array (här kortlek). Ändringar i listan görs även i arrayen. C o l l e c t i o n s. s h u f f l e ( A r r a y s. a s L i s t ( k o r t l e k ) ) ; Listan blandas Kortleken blandas Metoder att lägga till i Kortlek : blanda() void blanda ( ) { C o l l e c t i o n s. s h u f f l e ( A r r a y s. a s L i s t ( l e k ) ) ; Gamla Spelkort c l a s s S p e l k o r t { S t r i n g f a r g ; i n t v a l o r ; Testa kortleken: skapa, skriv ut, blanda, skriv ut p u b l i c s t a t i c void main ( S t r i n g [ ] u ) { K o r t l e k l e k = new K o r t l e k ( ) ; System. out. p r i n t l n ( K o r t l e k e n f r a n b o r j a n : ) ; System. out. p r i n t l n ( l e k ) ; l e k. blanda ( ) ; System. out. p r i n t l n ( \ n K o r t l e k e n blandad : ) ; System. out. p r i n t l n ( l e k ) ; S p e l k o r t ( S t r i n g f, i n t v ){ f a r g = f ; v a l o r = v ; public S t r i n g t o S t r i n g ( ) { return f a r g + + v a l o r ;

Enum är mer än enstaka värden Varför är nya Spelkort bättre än gamla? Med enum så är Farg och Valor väldefinierade Största och minsta värden är säkert tillgängliga values() ordinal() Med gamla Spelkort kan man skapa t.ex. new Spelkort( VIRUS,-1729) Enum är klass med konstruktor och metoder (om man vill) Enum - klasser är final, går ej att ärva från Enum med ett enda värde Singleton public enum S i n g l e t o n {THEONLY Namnen väljs förstås som man vill public enum Earth { o u r P l a n e t public enum K o h i n o o r {Diamond Singleton med lite innehåll public enum SnowWhite { THEONLY; i n t age ; boolean m a r r i e d = f a l s e ; Object spouse ; void i n c r A g e ( ) { age++; Sju dvärgar p u b l i c enum Dwarf { B l i c k ( 1 3 1 ), F l i c k ( 1 1 2 ), G l i c k ( 1 4 2 ), S n i c k ( 1 1 5 ), P l i c k ( 1 0 8 ), Whick ( 1 2 0 ), Quee ( 9 9 ) ; i n t age ; void marry ( Object newpartner ) { m a r r i e d = true ; spouse = newpartner ; public S t r i n g t o S t r i n g ( ) { S t r i n g r s t r i n g = SnowWhite + age ; i f ( m a r r i e d ) r s t r i n g +=, m a r r i e d to + spouse ; return r s t r i n g ; Dwarf ( i n t a ) { age = a ; p u b l i c S t r i n g t o S t r i n g ( ) { return super. t o S t r i n g ( ) + + age ; // f l e r metoder

Varje dvärg (konstant instans av klassen) definieras med ett namn och ett kontruktoranrop P l i c k (108) // age=108 i s s e t i n c o n s t r u c t o r Skriv ut sju dvärgar i mainmetod public s t a t i c void main ( S t r i n g [ ] u ) { System. out. p r i n t l n ( A l l d w a r f e s ) ; f o r ( Dwarf d : Dwarf. v a l u e s ( ) ) System. out. p r i n t ( d + ) ; System. out. p r i n t l n ( ) ; c 2005 Paragon Innovations, Inc. OOA Objektorienterad Analys Definiera VAD ett system ska göra Hitta objekt, klasser och relationer Hjälpmedel Kravspecifikation Analysera kravspec och hitta substantiv verb relationer (attrib., obj., aktörer) (metoder, rel.) (associationer, arv) Bygg upp Data Dictionary Användningsfall (Use Cases) Brainstorming för att hitta fler klasser Exempel på informell kravspecifikation Some employees work by the hour. They are paid an hourly rate that is one of the fields in their employment record. They submit daily time cards that record the date and the number of hours worked. If they work more than 8 hours per day they are paid 1.5 times their normal rate for those extra hours. They are paid every Friday. Some employees are paid a flat (non-hourly) salary. They are paid on the last working day of the month. Their monthly salary is one of the fields in their employment record. Some of the salaried employees are also paid a commission based on their sales.

They submit sales receipts that record the date and amount of the sale. Their commission rate is a field in their employee record. They are paid every second Friday. Every employment record contains the name of the employee, together with any other relevant in- formation. Employees can select their method of payment. They may have their paychecks mailed to the postal address of their choice; they may have their paychecks held for pickup by the company cashier; or they can request that their paychecks be directly deposited into the bank account of their choice. Fortsätter... Data Dictionary Substantiv (några av dem) amount hur mycket som sålts bank account konto för löneinsättning date datum employee anställd med tim- eller månadslön employment record upgifter om anställd hourly rate lön per timme name den anställdes namn time card ett per dag och anställd med uppgifter om datum och antal arbetade timmar Data Dictionary, fortsättning Verb (några av dem) generate payments pay Relationer (några av dem) employee has employment record 1-1 employment record has name 1-1 salaried employee is employee och så vidare... Waterfall Code-and-fix Spiral Rapid Prototyping Utvecklingsmetodik Unified Process (UP) Agile methods, t.ex. XP = extreme Programming SCRUM COTS

Vattenfall Klassisk, välkänd, vanlig (?) Introduerades av Royce 1970 Vattenfallsmodellens faser Behovsanalys Kravspecifikation Design Implementation Testning Leverans Drift och underhåll Lätt att förstå Vattenfall fördelar Förstärker goda(?) vanor: först design, sedan kodning Dokument-driven Lämplig för stora kända tillämpningar och oerfarna programmerare Vattenfall nackdelar Idealiserad, verklighetsfrånvänd Speglar ej den iterativa naturen hos programutveckling Orealistiskt att veta allt från början Programvaran kommer sent, allvarliga fel/problem kan upptäckas sent Administrationen stor och dyr, särskilt för små projekt Spiralmodellen Programutveckling är naturligt experimentell och iterativ 1. Skriv ett program 2. Uppfyller det kraven? 3. Om NEJ goto 1, annars sluta Iterativ modell med riskanalys Varje iteration löser delproblemet med högst risk Varje iteration utförs vattenfallslikt Flexibel och realistisk... men riskanalys är svårt!

Rapid Prototyping Code and Fix Starta med programidé Skriv på tills programmet är klart Ingen särskild plan Kan fungera för små proof of concept projekt. Fungerar inte för stora projekt!!! Idé: Snabbt visa en icke-teknisk beställare vad som går att göra Iterera fram till slutprodukten Analys och design i varje steg + Iterativt + Kundorienterat + Tydliga delresultat Kunden måste delta aktivt (dyrt) En ofullbordad prototyp kan bli slutprodukt Smal, kundspecifik produkt COTS COTS = Commercial Off-The-Shelf software Bygg ihop slutprodukten från existerande programvara T.ex. databaser, grafikpaket, textredigerare Snabbt, billigt (+) Ger en baslösning utan finesser Licensproblem, licensavgifter ( ) Traditionella metoder är byråkratiska vill planera allt från början accepterar inte att krav ändras under tiden skiljer på design och konstruktion kan fungera för stora förutsägbara projekt men fungerar ofta inte bra

Lättviktiga metoder anpassar sig till förändring är iterativa är kodorienterade Agile = lättviktigt, vig, flexibel, kvick Växte fram under 90-talet Mest kända är XP = extreme Programming och SCRUM Manifesto for Agile Software Development Skrevs 2001 av en grupp förespråkare för agila metoder. Individuals and Interactions over processes and tools Working Software over comprehensive documentation Customer Collaboration over contract negotiation Responding to Change over following a plan That is, while there is value in the items on the right we value the items on the left more. XP regler (grön svår att hålla) The planning game Small releases Metaphor Simple design Refactoring Pair programming Collective ownership Continuous integration On-site customer Coding standards Testing 40-hour week The planning game Görs i början av varje iteration Kunden beskriver önskade funktioner Utvecklaren uppskattar kostnaderna och tiden Kunden väljer funktioner Varje funktion detaljplaneras och arbetet fördelas En Iteration tar 1 2 veckor

Enkel design Gör det enklaste som fungerar Gör inget mer än vad som behövs Refactoring Kodförbättring utan att programmets synliga funktion ändras Gemensamt ägande Alla är ansvariga för allt och får ändra (förbättra) allt Testning Testa varje programdel (UNIT-testing) Testa hela systemet ofta Automatisera testningen Skriv testerna före själva programkoden Testdriven programutveckling Hjälpmedel för testning JUnit http://www.junit.org Kritik mot XP Extreme Programming Refactored: The Case Against XP av Matt Stephens & Doug Rosenberg XP is a mixture of common sense and nonsense Constant refactoring is a poor substitute for design Planera med UML innan kod skrivs! Emergent design is shortsighted and inefficient Tillåt att man implementerar naturliga nästa steg Dogmatiska XP-företrädare Mycket kritik mycket diskussion Många kritiker anser att en del av XP är bra, t.ex. Refactoring Enkelhet Iterering Testning men att de överdrivs av XP

SCRUM Iterativ process för programutveckling Roller Scrum Master Utvecklingsteam Produktägare Sprint = iteration, 3-30 dagar planeras, utvärderas Obligatoriska möten sprintstart, sprintslut, dagligen Obligatoriska dokument Skillnader SCRUM XP SCRUM är mindre tekniskt, mer om management SCRUMs ursprung är ej i mjukvarukontruktion SCRUM har inget om parprogrammering eller testning SCRUM har längre iterationer än XP I SCRUM har kund inflytande endast i början av sprint I SCRUM jobbar teamen fritt under sprint SCRUM Master är en permanent roll, i XP växlar coach-rollen XP: endast för erfarna programutvecklare SCRUM: för alla?