Kapittel 6 Objektorientert design. 6.1 Programvareutvikling Skriving av kode ein liten del av arbeidet med å lage programvare Fire hovudaktivitetar Kravspesifikasjon.

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

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Introduksjon til objektorientert programmering i PHP
Programvaretesting In 140 Sommerville kap 20.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
C# for javaprogrammerere
En gang til!? .
1 Oppgave gjennomgang Kap Oppgaver -Kap 12: 1, 2, 3, 5, 7, 8, 11, 18, 19.
Grunnleggende testteori
Kapittel 24 (Big Java 2.utg) Kommunikasjon i nettverk.
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Kapittel 11 Rekursjon Å tenke rekursivt Rekursjon er ein programmeringsteknikk der ein metode kallar seg sjølv for å fullføre ei oppgåve For å kunne.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
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,
Strukturerende elementer i UML
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
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.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Automated Testing Tool & When to Stop Testing
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å.
Java 11 Programmering med og uten objekter: hva er forskjellen?
VI LAGER EN PLATEBUTIKK
Testing av objektorienterte systemer Testplanlegging
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Dagens tema: roller og tilganger i ePhorte
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Objektorientert utforming In 140 Sommerville kap. 12.
Ludvigsen-utvalet NOU 2014:7 Elevenes læring i fremtidens skole Revisjon eller revolusjon av læreplanen?
An approach to multimodal and ergonomic nomadic services Marco Riva og Massimo Legnani.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Introduksjon I tillegg til autentisering, bør/skal også ein sikker kanal tilby garanti for meldings- integritet og konfidensialitet.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF160 Videregående Programmering Hausten Om kurset Lærebok: Lewis & Loftus: Java software solutions, 4.utgåve utgåve inneheld nye, viktige.
Gen og arv.
Objektorientert design
Konstruksjon og Testing Torsdag 30. september 2004 Av Even Aasland Harald Ueland.
Nynorsk fagskriving Orden i teksta.
Vanlege nynorskfeil.
Kapittel 2 Data og uttrykk. 2.1 Strengar Ein tekststreng er eit objekt i Java, definert av String klassen Meir om denne klassen i kapittel 3 Vi bruker.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kunnskapsløftet og kroppsøvingsfaget v/ Reidun Nerhus Fretland Konferanse i Loen mars 2006.
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.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 23 (Big Java 2.utg) Tråder. Kjøring av tråder Ein tråd er ein del av eit program som blir eksekvert uavhengig av andre deler av programmet Vi.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
LMS i en læringskontekst Svein Ove Lysne Høgskolen Stord/Haugesund
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Kapittel 25 (Big Java 1.utg) Java Server Pages og Servlets.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Kap 4 og 5 i Eva Maagerø: Språket som mening
Naaman Ein dag sa jenta til matmor si: «Om berre husbonden kunne koma til profeten i Samaria, skulle nok han fri han frå hudsjukdomen.» 2.Kongebok.
Kurs for valfunksjonærar Kyrkjevalet Innhald Velkomen til kurs! Nytt ved kyrkjevalet i 2015 Kursmateriell: Valhandbok Røysting på valtinget  Utstyr.
Nynorskkurs - Substantiv.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Strukturerende elementer i UML
IS-102 Interaksjon med objekter
Kort om implementering
Lær å logge inn til offentlege tenester med BankID
Objektorientert programmering i Java
FORELDREMØTE 5B Sagstad skule hausten 2019.
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Kapittel 6 Objektorientert design

6.1 Programvareutvikling Skriving av kode ein liten del av arbeidet med å lage programvare Fire hovudaktivitetar Kravspesifikasjon Design Implementasjon Testing Inf160 fokuserer mest på implementasjon For større system blir dei andre delene viktigare

6.2 Klasser og objekt Viktig del av objektorientert design å bestemme kva klasser vi treng Vi kan finne potensielle klasser ved å leite etter substantiv i kravspec’en Det er ikkje slik at alle substantiv vi finn skal vere klasser i systemet! Gi klassene gode namn Primitiv type eller klasse? Gjenbruk – klassebibliotek Tildeling av ansvar – kva skal dei ulike klassene utføre

6.3 Statiske klassemedlemmer Både variable og metoder kan vere static Statiske klassemedlemmer blir kalt gjennom namnet på klassen, ikkje gjennom eit objekt av klassen Math.sqrt(27) – her bruker vi Math klassen sin statiske metode sqrt() som returnerer kvadratrot Statiske klassemedlemmer er felles for heile klassen, i motsetning til instansvariable og –metoder Om vi ikkje har bruk for å ta vare på tilstand, kan statiske metoder vere OK Vi kan ikkje referere til instansvariable eller –metoder i ein statisk metode

6.4 Forhold mellom klasser Avhengigheit Ein klasse bruker andre klasser Aggregering Objekt av ein klasse inneheld objekt av ein annan klasse Arv Meir om arv i kap 8

Forhold mellom klasser Dersom klasse A bruker klasse B: Ein eller fleire av klasse A sine metoder kaller ein eller fleire av klasse B sine metoder Viss ein statisk metode blir kalt bruker A berre namnet til B Elles må A ha ein referanse til eit objekt av klasse B Fleire måtar å få tilgang på A kan ha objekt av klasse B som instansvariabel Metode i A kan opprette og bruke objekt av B Referanse til B kan sendast inn som parameter Generelt: minimere bindingar mellom klasser

Forhold mellom klasser Objekt av ein klasse bruker ofte andre objekt av same klasse Samanlikningar ( compareTo(), equals() ) Lage nye objekt ( concat() ) Aggregering – objekt kan vere laga av andre objekt Vi definerer alle objekt med referanser til andre objekt som instansdata, som aggregerte objekt “has-a” forhold

Forhold mellom klasser this -referansen Reservert ord som blir brukt når eit objekt refererer til seg sjølv Blir ofte brukt til å skille mellom parameter til ein konstruktør og instansvariable med same namn

6.5 interface Interface (grensesnitt) blir brukt i fleire samanhengar Kontaktflate mellom brukar og system, gjerne i form av eit skjermbilde Tilgjengelege metodar for å bruke eit objekt blir gjerne omtalt som klassen sitt grensesnitt Eit interface i Java er ei formalisering av det siste

interface Ei samling av konstantar og abstrakte metoder Ein abstrakt metode har ingen implementasjon (ingen kode) Spesifiserer returtype, namn og parameterliste Vi kan ikkje opprette instanser (objekt) av eit interface Ein klasse som implementerer eit interface må ha alle metodene som er med i interfacet Bruk av det reserverte ordet implements

interface interface i UML Comparable-interfacet Blir brukt for å samanlikne to objekt Kun ein metode: compareTo() Tar eit objekt som parameter int res = obj1.compareTo(obj2); Returnerer int res < 0: obj1 < obj2 res = 0: obj1 = obj2 res > 0: obj1 > obj2 Kva vil det seie at eit objekt er størst?

6.6 Enumererte typer Introdusert i kap 3 Spesiell type klasse, der alle verdier er objekt/instanser av klassen Verdiane er lagra som public static variable i klassen Vi kan også legge til instansvariable og –metoder Vi ser litt på Seasons -eksemplet

6.7 Design av metoder Ei algoritme er ein stegvis prosess for å løyse eit problem Kan samanliknast med ei oppskrift Alle metoder innheld ei algoritme som løyser oppgåva metoden skal utføre Vi bruker ofte pseudokode for å beskrive algoritmer Det er ofte nødvendig/lurt å dele opp metoder Få oversikt – splitt og hersk! Private hjelpemetoder som får ansvar for mindre deler av problemet

Design av metoder Parameter til metoder Alle parameter i Java blir sendt by value Kva betyr det? Det betyr ulike ting, avhengig av om parameteren er ein primitiv type eller eit objekt Primitive typer: verdien av den faktiske parameteren i metodekallet blir kopiert til den formelle parameteren i metode-headeren I klartekst betyr det at vi opererer på ein kopi i metoden Eventuelle endringar er ikkje synlege etterpå

Design av metoder Objekt som parameter: objekt er referanser/adresser, vi sender altså over ein kopi av referansen Det betyr at metoden har den same referansen, og difor opererer på det originale objektet Endringar er synlege etterpå Vi ser litt nærare på eksemplet i ParameterTester

6.8 Overloading Vi kan ha fleire metoder med same namn i same klasse Desse må ha ulike parameterlister slik at kompilatoren veit kva metode som blir kalt Tal på parameter til metoden Datatype Rekkefølgje Det er ikkje nok å ha ulike typer returverdi, sidan denne ikkje alltid blir brukt Vanleg å overloade konstruktørar

6.9 Testing Vi testar programvare for å finne feil Så godt som all programkode inneheld feil Betre at vi finn feil under testing enn at dei som skal bruke systemet gjer det Inspeksjon Gjennomgang av designdokument eller kode for å finne, men ikkje rette, feil Test case Input, det brukaren gjer, forventa output Test suite, test cases som saman dekker dei ulike delene av systemet vi skal teste

Testing Test cases må lagast med andakt Skal helst avsløre alle feil Skal ikkje overlappe kvarandre Bruk av ekvivalensklasser til å finne input Grenseverdier Black box testing Vi ser bort frå korleis programmet fungerer, ser kun på at output skal stemme med input White box testing Vi testar ut frå vår kunnskap om korleis programmet fungerer Vi prøver å få kjørt alle statements i programmet

6.10 GUI Design Java tilbyr hjelpemiddel for å lage det mest utrulege av GUI Men pass på... Kva lærte du om design i In105? Prøv å Hindre brukaren i å gjere feil Tilby fart og effektivitet for den erfarne Vere konsistent

6.11 Layout managers Ein layout manager er eit objekt som styrer korleis komponentar blir stilt opp i ein container Bestemmer størrelse og plassering Bestemmer kva endringar som skal skje når containeren endrar størrelse, eller når nye konponentar blir lagt til Alle containerar har ein default layout manager som vi kan erstatte om vi vil

Layout managers Mange typer, vi ser på nokre av dei mest brukte Flow layout Border layout Grid layout Box layout Rigid area og glue

6.12 Kantlinjer Vi kan forsyne alle Swing-komponentar med kantlinjer av ulike slag BorderFactory klassen tilbyr metoder for å lage slike Bruk med fornuft, sjå BorderDemo - eksemplet

6.13 Inneslutningshierarki Har nokon eit betre ord for containment hierarchy? Vi grupperer komponentar i containerar Containerane er vidare gruppert i andre containerar Til saman utgjer dette eit hierarki Komplisert GUI-design kan gjerne representerast som ein trestruktur, jfr fig 6.13 i læreboka