Java & OO.

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

Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Praktisk info til prosjektkunder
Introduksjon til objektorientert programmering i PHP
Noen matematiske nøtter
Kursmøte 3 På-vei-mot f(x) setninger.
Målinger generelt •I et moderne samfunn brukes målinger i mange ulike sammenhenger •Eksempler: –Sammenligne priser, lønninger –Høyde: størrelse på klær.
Etter forarbeidet og dagen i dag er målet at dere skal kunne:
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Om smidig brukerkommunikasjon Smidig 2011 Johannes Brodwall Steria Norway.
UML & object models av gruppe 8
Objektorientert programmering Objektorientert systemutvikling
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Gruppe 9 Design evaluering og validering.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser.
En kort innføring i Design Patterns
Forbindelser Diagrammer i UML består av ting med forbindelser
Ting Forbindelser Ting og forbindelser blir til sammen et diagram
Hovedprinsipper i Rational Unified Process
Bendik Bygstad Høgskolen i Vestfold RUP-prosjekt Sammenhengen med UML 1.Hovedstruktur i RUP-prosjekter 2.Faser og iterasjoner 3.Sammenhengen med.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Testing av system Gruppe 6 Henrik Bækhus Morten A. Iversen Mathias Bondeson Gunnar K. Kulleseid Svein Ivar Kristiansen Ronny Hulthin.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Design patterns: State og Strategy
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Tema: Test First Positivist: Det som ikke kan måles, eksisterer ikke! Reduserer sjanser for defekter! Gir en oppdatert ”TODO-liste” Gir trygghet til å.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
Testing av objektorienterte systemer Testplanlegging
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Objektorientert utforming In 140 Sommerville kap. 12.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert design
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
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.
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.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
Ting Forbindelser Ting og forbindelser blir til sammen et diagram
IS-102 Interaksjon med objekter
Objektorientert programmering i Java
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Java & OO

Om objekter Objekt: Software entitet (ting) Brukes av andre objekter Eksponerer et view (også interface, type): Meldinger objektet forstår Hva en bruker (klient) kan gjøre med et objekt er avhengig hvilket view klienten har Views kan være implisitt eller eksplisitt

Bruk av objekter Et objekt kan aksesseres gjennom ett eller flere views (fargede) Forskjellige klienter kan bruke samme objekt gjennom forskjellig views Objekt Klient Klient

Objekter: Hvorfor Mange objekter representer ting som eksisterer i virkeligheten Objekter har Levetid Oppførsel Tilstand (dvs. de kan huske hva som har skjedd med dem)

Bruk av objekter Bruk av et objekt Bruk av flere objekter ViewName var = ....; var.doSomething(); var.doSomethingWith(8); // 8 er en parameter Bruk av flere objekter ViewName var = ...; OtherView other = ...; var.doSomethingWith(other); // var kan bruke other i sin behandling av meldingen ”doSomethingWith”

Klasser Objekter med likheter er i samme klasse Hver objekt tilhører nøyaktig én klasse En klasse kan være spesialisering av en annen klasse (arv – alle Hunder er Dyr)

Forhold mellom objekter: Arv Et objekt kan brukes som sin klasse, eller en superklasse Dersom vi refererer til Hunden ’Max’ som et Dyr: Kan vi bare bruke Max’s egenskap i kraft av et dyr, men Vi kunne også byttet ut bruken av Max med Katten Marie (som også er et Dyr, men ikke en Hund) Vi trenger ikke å bry oss med Max’s ekstra egenskaper

Subklasse-superklasse En spesialisert klasse kalles også en subklasse En generell klasse kalles også en superklasse Hver klasse kan kun ha én superklasse Alle dyr Alle hunder Alle katter Max Marie

Interfaces Klasser snakker om hva objekter er Interfaces snakker om hvilke roller de spiller For eksempel: Max er en Hund, men han er også en Forsikringsfordel ettersom han er en prisbelønnet vakthund Sikkerhetslåsen vår er også en Forsikringsfordel Max og Låsen har ikke mye til felles, men når forsikringspolisen behandles, kan de behandles likt

Polymorfi ”Mange former” Forskjellige objekter kan reagere forskjellig på samme melding Eksempel: Max.beregnForsikringsFordel() -> ser etter om Max har gått på dressurkurs, hvor gammel Max er etc. Lås.beregnForsikringsFordel() -> låstype.forsikringssats Alle metoder som implementerer en melding bør Ha samme formål Ha en felles garanti (postkondisjon) -> Semantisk ekvivalens

Aktivitetsobjekter Eksempel: Vi ønsker å spesifisere en bit med kode Timer.executeAt(myTask, new Date(“2001/09/01 14:00:00”)); Timer.executeEvery(myOtherTask, 600); aCollection.doForEach(myActivity); aWindow.whenClickedDo(myOtherActivity); new Thread(myThirdTask).start(); Vi ønsker å spesifisere en bit med kode I mange språk (C/C++): Funksjonspekere

Aktivitetsklasser public interface Runnable { public void run(); } public interface ActionListener { public void actionPerformed(ActionEvent e); }

Implementasjon public class MyTextListener { public void actionPerformed(ActionEvent e) { System.out.println(“The action was performed”); } } field = new JTextField(); field.addActionListener(new MyTextListener()); Vil skrive ut teksten når man trykker Enter i tekstfeltet

Blokker, closures Action klasser blir ofte små (som over) Noen språk støtte derfor et eksplisitt blokk-konspept Kalles ofte closures Eks: (Smalltalk) textField whenActionPerformed: [ |action| ‘Action performed’ printOn: stdout. ]

Anonyme klasser Java støtter hverken blokker eller funksjonspekere Dette er det nærmeste vi kommer: field.addTextListener(new ActionEvent() { public void actionPerformed(ActionEvent e) { System.out.println(“ActionPerformed”); } }); Bedre kjent som anonyme indre klasser

Klasser versus objekter To objekter bør være av forskjellige klasser, dersom de har vesensforskjeller i hvordan de oppfører seg eller i hva slags data de bruker. En klasse kan ofte ha kun ett objekt, men dette

Gjenbruk Et ofte brukt argument for objektorientering

Noen prinsipper Liskov’s Substitusjonsprinsipp (LSP) The Open-Closed Principle (OCP)

Utviklingsaktiviteter Analyse Design Implementasjon Testing

Analyse Forstå problemet Definere krav for løsning Utgangspunkt i kravdokument eller intervju av brukere/kunder Definere krav for løsning Testbare krav er de beste

Design Tenke ut en løsning på problemet Modellere løsningen for å oppnå bedre forståelse Nøkkelverktøy: UML

Implementasjon Iverksette den design’ede løsninger

Testing Kontrollerer at man har: Utviklet programmet riktig – Design/enhetstesting Utviklet det riktige programmet – Analyse/akseptansetesting

Er det så enkelt? NEI Man kan ikke ta høyde for alle tingene man oppdager underveis Praktisk og teoretisk umulig Blir værre jo større systemet er => Gjør litt analyse, litt design, litt implementasjon, litt testing, om og om igjen (Iterativ utvikling)

Spesielle klasser Aksjoner Hendelser (eks. MouseEvent – eller Exception) Assosiasjoner (eks. Abonnement, OrdreLinje, Bestilling, Salg) Tilstand Samlinger Generelt: Er det knyttet varierende oppførsel til noe, kan det være en bra klasse

Gode klasser Utgjør en logisk enhet (high cohesion) Har en veldefinert oppgave (responsibility) Kan forståes i isolasjon (low coupling) Eier all sin data Kan forståes uten å kjenne innholdsdetaljer (abstraction) Bør forståes uten å lese innholdet Er fokusert på logiske oppgaver (intension, responsibility) og ikke fysiske oppgaver eller mekanikk Eksempel:Customer, ikke DataTranslator

Hva er et godt design? “Jeg vet det når jeg ser det” Enklere å beskrive med eksempler

Hva er dårlig design? (From Anti-Patterns) The Blob: One large objekt holding too much responsibility Spaghetti (Finnes også i OO) (From CodeSmells) Duplicated Code Classes more interested in other classes variables than their own Arrow (deeply nested if/else)

Hva er gode design? Klasser som kan forståes alene Få if-tester Klassser som ikke bryr seg så mye om hverandre Klasser som her én veldefinert oppgave

Man ser ikke så ofte godt design i virkeligheten