 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.

Slides:



Advertisements
Lignende præsentationer
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Advertisements

Velkommen til Softwarekonstruktion
07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Programmeringsteknologi: Lektion 1
Lavet af: Paw Petersen Design Design Class Diagram (DCD)
Objektorienteret programmering
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Larman, 2. udgave kap. 11 Grundlæggende Systemudvikling zHvad er systemudvikling ? zHvad er UML ? zHvad er analyse og design ? zHvad er UP ?
Grundlæggende elementer i UML
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Objektorienteret programmering – UML2Java.  Jens Bennedsen 2001Multimedie programmering8.2 Indhold Klasser og associering til enkelt objekt –Programmering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
Variabler, klassevariabler, identitet og lighed, collections
Introduktion til programmering Repetition - ArrayList.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
I o p o DAIMI, AU, Marts 1999Introducerende objektorienteret programmering5B.1 Et lille banksystem Modellering ved hjælp af UML.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering Collections Samlinger af objekter.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
DAIMIIntroducerende objektorienteret programmering1 Et lille banksystem Modellering beskrevet ved et UML klassediagram.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Hvad er en inkrementel og iterativ process?
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Quiz – Uge 3 – torsdag – første time
Quiz – Uge 3 – torsdag – første time
Præsentationens transcript:

 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode

 Jens Bennedsen 2002Objektorienteret systemudvikling Perspektiver på klassemodellen Begrebslig –Beskriver folks opfattelse af verden –Uafhængigt af software Specifikation –Interfaces af klasser (typeer) Implementation –Interne egenskaber ved en klasse I design I programmering I analyse

 Jens Bennedsen 2002Objektorienteret systemudvikling Operation ( public) Person (Design model) klasse Attribut ( privat)

 Jens Bennedsen 2002Objektorienteret systemudvikling Kode /** * Denne klasse er en realisering af Design * klassen Person, hvor alderen beregnes ud * fra den dato hvor personen er født Jens Bennedsen 24. oktober 2000 */ public class Person {/** * returnerer personens navn */ public String getNavn() { return navn; } /** * ændrer personens navn til navn */ public void setNavn(String navn) { this.navn=navn; } /** * returnerer personens adresse */ public String getAdresse() { return adresse; } /** * ændrer personens adresse til adresse */ public void setAdresse(String adresse) { this.adresse = adresse; } /** * returnerer personens alder */ public int getAlder() { return alder; } /** * lægger et år til personens alder (Skal kaldes når personen har fødselsdag for at hans alder er korrekt) */ public void foedselsdag() { alder = alder + 1; } private String navn = ""; private String adresse = ""; private int alder = 0; }

 Jens Bennedsen 2002Objektorienteret systemudvikling Eller… /** * Person repræsenterer en simpel person i et bibliotekssystem Jens Bennedsen 20. marts 2002 */ public interface Person { public String getNavn(); public void setNavn(String navn); public String getAdresse(); public void setAdresse(String adresse); public int getAlder(); }

 Jens Bennedsen 2002Objektorienteret systemudvikling Associering 0..1 Kardinalitet (0 eller en låner knyttet til en bog Associering

 Jens Bennedsen 2002Objektorienteret systemudvikling BogEksemplar (implementation) /** * Denne klasse repræsenterer et eksemplar af en bog i et bibliotek * Jens Bennedsen 24. oktober 2000 */ public class BogEksemplar {public BogEksemplar(…) { låner=null;… } … public Låner getLåner() { return låner; } public void setLåner(Låner låner) { this.låner = låner; } … private Låner låner; } Retningen på associationen er valgt udfra use cases/interaktion

 Jens Bennedsen 2002Objektorienteret systemudvikling Accociering 1..1 Låner navn : String adresse : String getAlder() : int getNavn() : String setNavn(String) getAdresse() : String setAdresse(String) BogEksemplar antalUdlån:() : int 0..1 Bog titel : String ISBN-nr : String 11 Flere ens bog eksemplarer - udfaktorisering Tvungen deltagelse

 Jens Bennedsen 2002Objektorienteret systemudvikling Bog - BogEksemplar Associeringen tilføjes som en attribut –aflæses af getBog() –opdateres af setBog(...) Alle attributter kan aflæses ( get… ) og opdateres ( set… ) Associeringen initialiseres når et BogEksemplar objekt skabes –constructor Bog titel : String ISBN-nr : String Bog(String, String) getTitel() : String setTitel(String) getISBN_Nr() : String setISBN_Nr(String) BogEksemplar antalUdlån : int låner : Låner bog : Bog BogEksemplar(Bog) antalUdlån:() : int getLåner() : Låner setLåner(Låner) setBog(Bog) getBog() : Bog 1

 Jens Bennedsen 2002Objektorienteret systemudvikling Kode /** * Denne klasse repræsenterer et eksemplar af en bog i et bibliotek * Jens Bennedsen 24. oktober 2000 */ public class BogEksemplar { public BogEksemplar(Bog bog) { this.bog = bog; } … public Låner getLåner() { return låner; } public void setLåner(Låner låner) { this.låner = låner; … } public Bog getBog() { return bog; } public void setBog(Bog bog) { if (bog!=null) this.bog = bog; } private Låner låner=null; private Bog bog; }

 Jens Bennedsen 2002Objektorienteret systemudvikling Registrering fra låner til udlånsemner LånerImpl navn : String adresse : String getAlder() : int getNavn() : String setNavn(String) getAdresse() : String setAdresse(String) 0..*0..1 BogEksemplar antalUdlån()

 Jens Bennedsen 2002Objektorienteret systemudvikling Design Information om hvilke tilknyttede BogEksemplarer der er –List (eller anden Collection)List operationer til at tilføje og fjerne BogEksemplar objekter –addEksemplar –removeEksemplar BogEksemplar LånerImpl navn : String adresse : String eksemplarer : List getAlder() : int getNavn() : String setNavn(String) getAdresse() : String setAdresse(String) addEksemplar(BogEksemplar) removeEksemplar(BogEksemplar) 0..* getEksemplarer(): List

 Jens Bennedsen 2002Objektorienteret systemudvikling Associering (implementation) import java.util.*; public class LånerImpl implements Låner {public LånerImpl(..) {.. eksemplarer = new ArrayList(); }... public void addEksemplar(BogEksemplar eksemplar) { eksemplarer.add(eksemplar); } public void removeEksemplar(BogEksemplar eksemplar) { eksemplarer.remove(eksemplar); } public List getEksemplarer() { return eksemplarer; }... private Collection eksemplarer; }