Objektorientert programmering med Java ISBN 82-7674-748-5



Like dokumenter
EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Argumenter fra kommandolinjen

Socket og ServerSocket

Invitasjon til tegning av spillerettsaksje ved Lofoten Golfbane AS

Presentasjon av Gunn Ågot Leite

LOVER OG REGLER. For. Nedre Eiker Pistolklubb

Visuell dykkerinspeksjon av prosessutløpet til. Stolt Sea Farm. Kvinesdal kommune Rapport nr

Postkasse- og TV-reklame ergrer de fleste norske forbrukere

Strøm målinger. Lokalitet Salvågvika. Marine Harvest Agder A/S

Fra administrasjonen: Riitta Hellman (ikke ved sak 04/6/5) Grethe Strand-Pedersen (ikke ved sak 04/6/5), referent

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

Kanter, kanter, mange mangekanter

Hjort nr Merkt Sist obs Status: Felt Kolla vart felt i Nordbotn i september -07.

Til aksjonærer i Bjørge ASA INNKALLING TIL EKSTRAORDINÆR GENERALFORSAMLING BJØRGE ASA

Enkle generiske klasser i Java

Oblig 4Hybelhus litt mer tips enn i oppgaven

Fjernvarme i norsk energiforsyning

Logistisk regresjon 2

2 Grafisk grensesnitt 1

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

Økt bruk av biobrensel i fjernvarme

Resultatliste Regionstevne Fagernes idrettspark 22. mai 2008 G-10-60m G m G-10 - Lengde (sone 1m) G-10 - Liten ball (80g) G-11-60m G m

Java fra Eclipse til Evalanche

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Eksport og innsending

K at ek et foreningens

Vedtekter for Statens institutt for forbrukforskning (SIFO)

UNIVERSITETET I OSLO

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

HØGSKOLEN I SØR-TRØNDELAG

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Norske forbrukere bruker i større grad makta si enn tidligere

HØGSKOLEN I SØR-TRØNDELAG

Christian Poppe SIFO

IKA- kongsberg, kontaktseminar. Offentlighet og. Informasjonsdirektør Ove Skåra 21. oktober 2009, Kongsberg

CASCADING STYLESHEETS (CSS)

Uttalelse fra Norges Handikapforbund(NHF) vedrørende rikspolitiske retningslinjer for universell utforming.

UNIVERSITETET I OSLO

Statens institutt for forbruksforskning. Noter til regnskapet 2004

JavaScriptbibliotek. Introduksjon MVVC. Informasjonsteknologi 2. Gløer Olav Langslet Sandvika VGS

Protokoll fra styremøte 5/2004 den 1. september 2004 kl

SUBTRAKSJON FRA A TIL Å

UNIVERSITETET I OSLO

Hvordan hente ut listen over et hagelags medlemmer fra Hageselskapets nye portal

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Nordisk Fjernvarmesymposium 2004 Avfall og varmepumper i Ålesund

Artikler. Registrer: År: Tittel: Undertittel: Oversatt tittel: Oversatt undertittel:

1 Kodegenerering fra Tau Suiten

Potensialet for fjernkjøling og markedet i fremtiden

INF1000 Prøveeksamen Oppgave 7 og 9

Tittel Objektorientert systemutvikling 3

PG 4200 Algoritmer og datastrukturer Innlevering 2

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Christian Poppe, SIFO

LocalBank Prosjektbeskrivelse

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Debugging. Tore Berg Hansen, TISIP

Klasser, objekter, pekere og UML. INF gruppe 13

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

Tittel Objektorientert systemutvikling 2

Løsningsforslag til Case. (Analysen)

Flytte innhold fra Fronter til Canvas

HØGSKOLEN I SØR-TRØNDELAG

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Styreseminar 2. juni 2004 NHH, BERGEN

EKSAMEN I FAG SIF MMI OG GRAFIKK Lørdag 16. august 2003 Tid: kl

Her er et eksempel på hvordan en konteringsmal brukes, under registrering av en telefonregning fra Telenor (Innkjøp > Leverandørfaktura):

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

Høringsnotat Allmennkringkastingsplakat for NRK

Sprettball Erfaren ComputerCraft PDF

Protokoll fra styremøte 3. juni kl

2 Om statiske variable/konstanter og statiske metoder.

PC-EN HUSKER ALT FOR DEG ORD FOR ORD. Skriv dagbok

Brukerveiledning for student skoleeksamen HIST Oppdatert 27. oktober 2014

Straffespark Introduksjon Scratch Lærerveiledning

Skilpaddefraktaler Erfaren Python PDF

Lagring i Linux. 1. Hvordan lagre tekst. Når du er ferdig med heftet skal du:

Post-it spørsmål fra timen (Arv og subklasser)

Layout og publisering

Tegneprogram Journeyman Scratch PDF

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Communicate SymWriter: R5. Brett og knapper

Logistisk regresjon 1

Dette er nytt i GM EPC

PROSESSTEKNIKK (TKP4120) Tema: "Visualisering av x, y-diagrammer" (ca. 5 timer)

Redigere elektronisk enkelttittel (portfolio)

En enkel lærerveiledning

Søknad om utslipp fra hus og hytter - veiledning

IKA Kongsberg Interkommunalt arkiv for Buskerud, Vestfold og Telemark IKS. Retningslinje for periodisering av kommunale arkiver

Kvadrattall og KVADRATROT FRA A TIL Å

Gjennomføre et møte. MeetAt Datamøte

praktiske eksempler DOM Document Object Model DOM og Høst 2013 Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

2. Beskrivelse av mulige prosjektoppgaver

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Utplukk og sortering. Innhold

FIRST LEGO League. Stjørdal Daniel Storsve Gutt 11 år 0 Henrikke Leikvoll Jente 11 år 0 Elias Bakk Wik Gutt 11 år 0 Julie Dybwad Jente 11 år 0

Transkript:

Tema 8 Programdesign som isolerer godt mellom logikk og presentasjon passer godt for å lage ulike grensesnitt mot logikk-delen. Klassen ZipFile som ble brukt i et konsoll-basert grensesnitt på side 67, kan like gjerne utnyttes i et grafisk brukergrensesnitt. Et meget enkelt grensesnitt kan for eksempel bygges for å vise rader med filinformasjon øverst i et vindu, og totalt innspart lagerplass nederst i vinduet. Fem team arbeidet med dette. Ingen av teamene hadde mye trening verken i analyse eller diagramkonstruksjon. De fikk likevel fram interessante design. To og to team slo seg sammen og presenterte hvert sitt felles forslag i henholdsvis gult og oransje lag. Det femte teamet overvåket, opponerte og pekte ut beste design til slutt. Pia Aimée Tordly fotograferte på oppfordring, tjenestevillig og uforberedt. Analyse og design Begge teamene brukte pakkesymboler i stedet for klassesymboler. Firkanter rundt teksten i pakkesymbolene kunne gjort at hvert pakkediagram inneholdt et klassesymbol. Innholdet i hver pakke er nemlig akkurat det som kunne stått innenfor klassesymbolet. Gult lag har plassert alle getterne (aksessorene) i den øverste avdelingen, som getsize, getname osv Det korrekte er å plassere alle metoder (som aksessorer, mutatorerer og hjelpemetoder) i den nederste avdelingen. Den øverste avdelingen skal inneholde

klassefelt, altså datafelt og pekere til objekter som deltar i det samarbeidet som klassen har ansvar for. Pilene viser avhengighet og navigasjonsretning. Helt korrekt UML-syntaks er i dette tilfelle åpne piler. Med den bakgrunnen gult team har i denne typen prosessarbeid, er resultatet meget bra. Oransje team ble av vurderingsteamet tildelt best bedømmelse. For å få helt korrekt UMLsyntaks inne i pakkene, ville det vært nok å sette en ekstra firkant rundt teksten og pusse ut tverrstrekene mellom klassediagrammets kant og pakkediagrammets kant. Pilene må være åpne. Siden entrypoint neppe skal kalle writelist og writesaved, kan disse metodene antagelig være private. Hvis klassen skal hete Dialog, er det antagelig konstruktøren, altså metoden Dialog(), som skulle vært tatt med, og dessuten angitt som public. Oransje team har også gjort en meget dyktig jobb ut fra forutsetningene! Keep it simple I alle sammenhenger der systemutvikling diskuteres, sies det at det enkleste er det beste. Mens dette sikkert er sant, er det vanskelig å få øye på det enkleste med en gang. Det krever faktisk erfaring og evne til organisering. Dessuten er det enklere å bygge en god programdesign når man selv definerer oppgaven.

De fleste gode programdesign og kodesamlinger utvikler seg fra kompliserte til enkle løsninger. De fleste dårlige programdesign går fra kompliserte til uhåndterlige løsninger. For å komme fram til et godt design i denne oppgaven, er det nyttig å regne med at det som regel finnes brukerkontroller som automatisk viser data fra datasamlinger som for eksempel array. For å unngå at logikk-objektet må tilby mange tjenester, kan det pakke dataene i et sammensatt returobjekt. Et forslag til løsning på denne oppgaven er basert på følgende to ideer: 1. å pakke de generelle filopplysningene inn i et array. Dermed kan arrayet brukes som input til en passende grafisk brukerkontroll. 2. å levere ferdig beregnet spart plass Oransje team hadde med løsningen i punkt 2. Det er et interessant spørsmål hvorfor ikke gult team kunne se at dette måtte være en vesentlig tjeneste å be om fra logikk-objektet? Keep it simple. Faglærers forslag til løsning: Ingen av løsningene spesifiserer tydelig kilden til filnavnet. I en praktisk løsning kan kilden godt være klassen Zipvindu eller et oppstartsargument som dermed kommer fra entrypoint. Kilden kan bare ikke være i klassen Ziplogikk. Dette ville gått ut over gjenbrukbarheten som ellers er oppnådd i dette programdesignet. Faglærers løsning spesifiserer konstruktørene i begge de nederste klassene. Dette er egentlig bare strengt nødvendig for ZipLogikk, og grunnen er å vise at konstruktøren bærer med seg argumentet filnavn. For klassen Zipvindu gjelder regelen at argumentløse konstruktører er default, det vil si at konstruktøren lages automatisk hvis vi ikke lager den selv. Men ved å ta den med som vist i

diagrammet ovenfor, kan vi spesifisere at den må lages likevel, fordi den skal spesialisere vinduet. Programmeringstips Datasamlinger som for eksempel Enumeration kan forsynes med typedeklarasjoner for enklere syntaks. Eksempel uten typedeklarasjoner, med konvertering ved kjøretidspunktet: private Enumeration untyped; untyped = z.entries(); ZipEntry filinfo = (ZipEntry) untyped.nextelement(); Eksempel med typedeklarasjoner og forhåndsbestemt type ved kjøretidspunktet: private Enumeration<? extends ZipEntry> typed; typed = z.entries(); ZipEntry filinfo = typed.nextelement(); I dette eksemplet er fordelen at man slipper typekonvertering (altså (ZipEntry) ) for objektet filinfo. I større sammenhenger er fordelene mye tydeligere. I programdesign for robuste systemer foretrekkes alltid typesterke elementer fremfor runtime konvertering. Konvertering ved runtime innebærer dessuten alltid en viss risiko. Oppgaveteksten Oppgaveteksten for de fem teamene ble først presentert muntlig, deretter vist på stor skjerm foran teamene. Oppgave for tre-grupper Oppgaven handler om et enkelt gui til klassen ZipFile og zipfilen test.zip. Når en fil lagres i zip-format, blir filen komprimert. Forskjellen mellom den normale filen og den komprimerte filen er det samme som spart plass.

Forskjellen mellom alle de normale filstørrelsene og alle de komprimerte størrelsene er det samme som totalt spart plass. Lag en analyse med klassesymboler for : Et entrypoint som heter HveZip. Et vindu som viser liste over filnavnene, størrelse og komprimert størrelse i en zip-fil et tall som viser hvor mye plass som totalt er spart for alle zipfilene tilsammen En logikk-klasse som leverer fillisten og utregnet plass som er spart totalt. Analysen skal vise hvilke tjenester (dvs metoder) klassene i analysen skal tilby. (Et programmert løsningsforslag ligger i kodesamlingen til kapittel 4) slutt på dokumentet

This document was created with Win2PDF available at http://www.win2pdf.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only. This page will not be added after purchasing Win2PDF.