Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Fra en komma/semikolon separeret (CSV) fil på disken f.eks. dannet fra Excel - skal der indlæses en række poster (rækker og søjler). Hver række indholder data om en enkelt person (id,navn,alder,vægt) og skal indsættes i et nyt objekt af klassen Person. Når alle personobjekter er dannet fastholdes disse i en person-liste. Alle person-navne listes på en Gui og middelværdi af alder og vægt skal ligeledes vises på gui. Start af indlæsning af CSV-fil (filnavn og separator) sker via en knap på Gui. Følgende er givet: 1. To komponenter i systemet er uliciteret 2. Håndtering af databasen er leveret som en jar fil indeholdende relevante klasser med interface SAP (Service Access Point) samt tilhørende dokumentation: Sysio.jar 3. Der er også leveret en anden komponent, som indeholder nogle klasser og tilhørende dokumentation: Common.jar. Disse klasser anvendes af alle komponenter. Udvikling Udfra projektbeskrivelsen uddrages til OOA(Objekt Orienteret Analyse). Analyse betyder: Hvad handler det om? 1. Krav til grundlæggende arkitektur 2. Krav til interface til aktører 3. Krav til systemfunktioner OOA ender med en klasser til den grundlæggende arkitektur og funktioner og prototyper af interface s Derpå udføres OOD (Objekt Orienteret Design). Design betyder: Hvordan laver vi systemet?, og til sidst OOP (Objekt Orienteret Programmering) hvor der kodes. Arkitekturkrav Et diagram som viser kravene til den fysiske udlægning af projektet i samspil med omgivelserne arkitektur tung
Figur 1: UML Deployment diagram dannet udfra arkitekturkrav fom kan identificeres i problembeskrivelse. De rødlige komponenter er leveret af underleverandører. SAP, jar Ui komponenten (den grønlige) i Figur 1 og andre komponenter i System-node skal udvikles og kommunikationer findes. Krav til interface s Her formulers krav til de grænseflader som skal anvendes mod alle aktører (actor s) Gui interface Figur 2: Mug up af gui. Krav til brugerfladens i/o er hermed fastlagt. Naturligvis bør de enkelte komponenter beskrives ganske kort. Alle i/o komponenter skal forbindes til hver deres funktionelle karv.
Disk interface Interfacet er standard til disk i PC og tilgang sker gennem operativsystemet via Java API og JVM. Funktionelle krav til systemet Vi fastholder krav på høj abstraktion v.h.a. UML Use Case diagrammer. Alle diagrammerne skal kunne understøtte gui-brugerfladen. ( Vi anvender Omondo 3.2 og ikke version 3.3 da vi dermed får nogle pænere tegninger og pæne links.) UML Use case diagram(s) - (Eclipse Omondo 3.2) Figur 3 UML Use Case diagram for system Use case, actor, forward-/backward trace, systemkrav, testvektorer. UML activity diagram(s) (Eclipse Omondo 3.2)
Figur 4 UC1 og UC3 Figur 5 UC2
Figur 6 UC4 Function list (no UML diagram) Function list for activity diagrams Use Activity FunctionName Decription Used in # Case design UC1 FetchList getpersonlist 1 AvarageAge calculateaverageage() With person list calculate average 2 age. AvarageWeigh calculateaverageweight() With person list calculate average 3 t weight. DisplayAge displayavarageage() Display average age 4 DisplayWeight displayavarageweight() Display average weight 5 UC3 DisplayList displaypersonlist() Display all person s values 6 UC4 ClearListArea clearavaragevalues() clearpersondisplay() UC2 CreatePersonL ist createpersonlist() Clear person list display. Clear average values Read lines one by one from file, make person object and add this into a person list outsource OpenFile openfile() Open file and create streams. outsource CloseFile closefile() Close file outsource ReadTokens readlines() Read all lines from file and process. Close file after last line. Use process: createpersonandaddtolist() outsource MakePersonA dd2list addpersontolist Decode a single line and form a person object and add person object to the person list. outsource 7 8 Classes Vi skal udvikle nogle komponenter til indsættelse i deploymentdiagrammet og anvende 2 externe component (se deployment diagram). Egentlig skal vi blot finde klasser, men vi vil gerne have indflydelse på design forløbet, idet vi ønsker en bestemt indkabsling.
Figur 7 Første version af et klassediagram 1. Common og Sysio er pakker leveret af underleverandør(er) som jar filer 2. Vi har valgt følgende klasser a. Gui som ansvarlig for al i/o mellem bruger og system. b. Calculate til at foretage beregninger. c. Application til at administrere systemet,herunder fødsel, start og død. *********************************Slut på OOA************************************