Presentation: Architectural Design for Distributed Systems Objektorienteret Middleware (OOMI)
Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... ·...
Transcript of Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... ·...
![Page 1: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/1.jpg)
1
Objektorienteret programmering
Introduktion
![Page 2: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/2.jpg)
2
Plan
• Generelt om programmeludvikling
• Objekter og klasser (begreber)
• Objektorienteret programmeludvikling
• Programmering i Java
![Page 3: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/3.jpg)
3
Aforisme
Ordene er håndtag på tingene. Hvis vi ikke passer på, holder de os virkeligheden fra livet.
Piet Hein
![Page 4: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/4.jpg)
4
Programmeludvikling
Megen udvikling baseres på trial-and-error.
Problemerne træder tydeligst frem ved udvikling af store systemer.
Der er behov for kodificering af viden om, hvad man skal gøre, og hvad man ikke skal gøre (designviden).
![Page 5: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/5.jpg)
5
Ønskværdige egenskaber ved programmel
• Brugbart
• Rettidigt
• Korrekt
• Robust
• Brugervenligt
• Effektivt
• Let at vedligeholde
• Genbrugeligt
Normalt kan alle egenskaber ikke opfyldes samtidigt.
![Page 6: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/6.jpg)
6
Objektorienteret programmering
Vedligeholdelse forenkles ved
• Enkelhed
• Fleksibilitet
• Læsbarhed
Fokus på
• Vedligeholdelse
• Genbrug
![Page 7: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/7.jpg)
7
To muligheder for fokusering
(1) Algoritmer Fokusering på “control flow” (procedure-orienteret tilgang)
(2) Datastrukturer Fokusering på “data flow”
Objektorienteret programmering er en balance imellem disse to yderpunkter.
![Page 8: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/8.jpg)
8
Om sprogs betydning
The limits of my language mean the limits of my world.
Ludwig Wittgenstein
![Page 9: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/9.jpg)
9
Objektorienterede sprog Simula 1967
Smalltalk 1970 Objective C 1982
C++ 1983 (Bjarne Stoustrup, Danmark)
Eiffel 1985 Object Pascal 1986
Beta 1990 Java 1995 C# 2000 (Anders Hejlsberg, Danmark)
og mange flere
![Page 10: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/10.jpg)
10
“You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.”
-Alan J. Perlis
Citat Alan J. Perlis
![Page 11: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/11.jpg)
11
Programmeludvikling
Abstrahere: at se bort fra noget
Algoritmer Model Abstraktion
Fortolkning
Verden
Programsystem
Målet for programmeludvikling er konstruktion af programsystemer, der hjælper mennesker med problemløsning i den virkelige verden.
![Page 12: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/12.jpg)
12
Grundlæggende begreber i objektorienteret programmering
Objekt:
Fortolkning i den virkelige verden: Et objekt kan repræsentere alt, hvad der tydeligt kan identificeres.
Repræsentation i model: Et objekt har en identitet, en tilstand og en adfærd.
![Page 13: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/13.jpg)
13
Tilstand og adfærd
Tilstanden for et objekt defineres ved felter med tilhørende værdier.
Adfærden for et objekt defineres ved metoder, der kan aflæse eller ændre objektets tilstand.
![Page 14: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/14.jpg)
14
Klasser
Klasse:
Fortolkning i den virkelige verden: Et klasse repræsenterer en mængde af objekter med fælles karakteristika. Objekterne kaldes for instanser af klassen.
Repræsentation i model: En klasse beskriver den struktur af tilstande og adfærd, der er fælles for alle klassens instanser.
![Page 15: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/15.jpg)
15
Eksempel på en klasse
class Point { // Klassenavn int x, y; // Felter
void move(int dx, int dy) { // Metode x += dx;
y += dy; } }
En klasse er en skabelon til brug for skabelse af objekter.
![Page 16: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/16.jpg)
16
Syntaks for felter og metoder
Metode: [Visibility] Type Identifier([ParameterList])
Visibility ::= public | private | protected
Felt:
[Visibility] Type Identifier [= InitialValue]
![Page 17: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/17.jpg)
17
Grafisk notation�UML (Unified Modelling Language)
Klasse: Klassenavn
felt1 . . . feltn
metode1 . . . metodem
De to nederste dele kan udelades.
![Page 18: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/18.jpg)
18
Eksempel class Point
Point
private int x private int y
public void move(int dx, int dy)
Point
x y
move()
Point
Point
-x:int -y:int
+move(dx:int, dy:int) UML-syntaks
Forkortede former
![Page 19: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/19.jpg)
19
UML-notation for objekter
felt1 = værdi1 . . . feltn = værdin
Bemærk understregningen
Den nederste del kan udelades.
Objektnavnet eller klassenavnet kan udelades.
Objektnavn : Klassenavn
![Page 20: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/20.jpg)
20
Eksempel
Et Point-objekt
p1 : Point
x = 79 y = 13
Point p1 = new Point(); p1.x = 79; p1.y = 13;
Et metode kan kalde et objekts metoder.
Eksempel på kald: p1.move(3, 4)
![Page 21: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/21.jpg)
21
3 nyttige principper ved programmeludvikling
1. Modularisering
2. Abstraktion
3. Indkapsling
![Page 22: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/22.jpg)
22
1. Modularisering
Modularitet er nøglen til god programmering.
Opdel programmet i små moduler, som interagerer med hinanden igennem snævre, veldefinerede grænseflader.
Fordele: • En programdel kan forstås, uden at hele programmet forstås.
• En fejl i en programdel kan rettes, uden at resten af koden bliver inddraget.
![Page 23: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/23.jpg)
23
Modularisering
Princip:
Et komplekst system dekomponeres til en mængde af samhørende, men løst koblede komponenter, kaldet moduler
Modulerne er typisk organiseret i et hierarki (d.v.s. et modul kan indeholde andre moduler).
Ved objektorienteret programmeludvikling udgøres modulerne af klasser og pakker (samhørende klasser).
![Page 24: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/24.jpg)
24
2. Abstraktion
At abstrahere: at se bort fra noget.
Abstraktion hjælper til med at bestemme en hensigtsmæssig samling af komponenter.
Vi kan betragte forskellige ting som ens, selv om de er forskellige.
![Page 25: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/25.jpg)
25
Abstraktion
Princip:
Modulets adfærd karakteriseres ved hjælp af en kortfattet og præcis beskrivelse
Beskrivelsen kaldes modulets kontraktlige grænseflade.
![Page 26: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/26.jpg)
26
Kontrakter
En kontrakt beskriver hvad, men ikke hvordan. Klienter behøver kun at kende kontrakten for at bruge modulet.
Et modul yder tjenester til (servicerer) sine brugere (klienter). Et modul skal overholde sine kontraktlige forpligtigelser.
![Page 27: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/27.jpg)
27
Udformning af kontrakter for klasser
En kontrakt specificerer for hver af klassens offentlige metoder metodens prebetingelse og metodens postbetingelse.
Prebetingelsen fastlægger forudsætningerne for at kalde metoden.
Postbetingelsen fastlægger virkningen af et kald.
En betingelse, som gælder såvel før som efter kald af enhver af klassens offentlige metoder, kaldes for en klasseinvariant.
![Page 28: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/28.jpg)
28
Eksempel på specifikation
/** * @invariant 0 <= size() <= capacity */ public class Stack { /** Place an object at the top of the stack * @pre !isFull() * @post size() = size()@pre + 1 */ public void push(Object obj) { ... }
/** Remove and return the top object of the stack * @pre !isEmpty() * @post size() = size()@pre - 1 */ public Object pop() { ... } }
![Page 29: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/29.jpg)
29
Nytten af kontrakter
• Design: Et godt værktøj til programspecifikation
• Implementering: Angiver retningslinjer for programmering
• Dokumentation: Udgør en væsentlig del af dokumentationen
• Afprøvning: Angiver retningslinjer for ekstern afprøvning
![Page 30: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/30.jpg)
30
3. Indkapsling
Princip:
Implementationen af et modul bør adskilles fra dets kontraktlige grænseflade og være skjult for modulets klienter
Jo mindre klienten ved om implementationen, desto løsere bliver koblingen imellem modulets og dets klienter.
Implementationen kan skiftes ud, uden at klienterne bliver berørt (så længe grænsefladen ikke ændres).
![Page 31: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/31.jpg)
31
Grænseflader
En grænseflade uden implementation kaldes en abstrakt datatype (i Java-terminologi: et interface).
Grafisk notation: ServiceInterface
aService()
ServiceImplementation
aService()
Bemærk at grænsefladenavnet er skrevet i kursiv, og at linjen på pilen er stiplet
![Page 32: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/32.jpg)
32
Eksempel
interface Movable { void move(int dx, int dy);
}
class Point implements Movable { int x, y;
void move(int dx, dy) { x += dx; y += dy; } }
![Page 33: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/33.jpg)
33
int x;
int y;
move
Indkapsling
En klasse indeholder en række egenskaber.
Nogle egenskaber er skjulte (indkapslede). De øvrige udgør klassens grænseflade.
Point
Grænsefladen Skjult information
![Page 34: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/34.jpg)
34
Polymorfi
En kontraktlig grænseflade kan overholdes af mange mulige implementeringer.
Muligheden for dynamisk at udskifte moduler, uden at klienterne berøres, kaldes for polymorfi (fra græsk: mange former).
![Page 35: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/35.jpg)
35
Eksempel på polymorfi
class Line implements Movable { Point p1, p2;
void move(int dx, dy) { p1.move(dx, dy); p2.move(dx, dy); } }
Movable m;
...
m.move(3, 4); Virker, hvad enten m aktuelt er et Point-objekt eller et Line-objekt.
m er polymorf
![Page 36: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/36.jpg)
36
Relationer imellem klasser
• Nedarvning
• Associering Aggregering Komposition
![Page 37: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/37.jpg)
37
Nedarvning
En klasse C2 siges at nedarve fra en anden klasse C1, hvis enhver instans af C2 også er en instans af C1.
C2 siges at være underklasse af C1.
C1 siges at være overklasse for C2.
C2
C1
![Page 38: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/38.jpg)
38
Notation for nedarvning
C1
C2
class C2 extends C1 { ... }
C2 er en udvidelse af C1: alt hvad der gælder for C1, gælder også for C2.
![Page 39: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/39.jpg)
39
Eksempel
Shape
Circle Polygon
class Shape {}
class Circle extends Shape { Point center; double radius; }
class Polygon extends Shape { Point[] points; }
Nedarvning repræsenterer en er-relation (engelsk: is-a relation).
![Page 40: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/40.jpg)
40
Tolkning af nedarvning
En underklasse udgør en specialisering af sin overklasse.
En overklasse er en generalisering af sine underklasser.
En underklasse udgør en udvidelse af sin overklasse. En overklasses felter og metoder deles af dens underklasser (metoderne genbruges af underklasserne).
![Page 41: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/41.jpg)
41
Multipel nedarvning
En klasse kan i princippet nedarve direkte fra mange overklasser. Dette kaldes for multipel nedarvning.
Java understøtter ikke nedarvning i sin fulde generalitet.
I Java kan en klasse højst nedarve direkte fra én anden klasse.
En begrænset form for multipel nedarvning er dog mulig, idet en klasse gerne må implementere mere end ét interface.
![Page 42: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/42.jpg)
42
Relation imellem grænseflade og implementering
grænseflade
implementation1 implementation2
Multiple implementeringer
grænseflade1 grænseflade2
implementation
Multiple grænseflader
![Page 43: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/43.jpg)
43
Abstraktionsniveauer
Princip:
Abstraktioner kan organiseres i niveauer (lag) Jo højere niveau, desto mere generel er abstraktionen Jo lavere niveau, desto mere specifik er abstraktionen
![Page 44: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/44.jpg)
44
Associering
En associering repræsenterer en relation imellem to klasser.
Angives i UML med en kant:
class A class B
![Page 45: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/45.jpg)
45
Associeringer kan navngives, og deres retning kan angives.
Student Course
Teacher
enroll
teach
* * *
1
En kants ender kan forsynes med heltalsintervaller:
l...u l, l+1, ..., u i i * 0, 1, 2, ...
advisee
advisor
*
1
![Page 46: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/46.jpg)
46
Aggregering
Aggregering er en speciel form for associering og betegner en har-relation (engelsk: has-a relation).
Der kan knyttes intervalangivelser på en kants endepunkter.
Aggregat Component
Grafisk notation:
Polygon Point
Eksempel: * *
![Page 47: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/47.jpg)
47
Komposition
Komposition er en stærkere form for aggregering, der benyttes, når der er tale om eksklusivt ejerskab.
Der kan knyttes intervalangivelser på en kants endepunkter. Eksempel:
Car Wheel 1 4
Aggregat Component
Grafisk notation:
![Page 48: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/48.jpg)
48
UML-diagram �for en E-boghandel
EBookstore Customer Address 1 * 2
Item
Book MusicCD Software
1
*
1
OrderItem * *
1
Order
1
*
![Page 49: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/49.jpg)
49
Java-klasser for online-boghandelen
class Software extends Item { int version;
}
fortsættes
class Item { String title;
String publisher; int yearPublished; int ISBN; double price;
}
class Book extends Item { String author; int edition; int volume; }
class MusicCD extends Item { String artist; int volume;
}
![Page 50: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/50.jpg)
50
class OrderItem { Item item; int quantity;
}
fortsættes
class Order { Customer customer; Collection<OrderItem> orderItems; double salesTax; double shippingFee; double total; int methodOfPayment; }
![Page 51: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/51.jpg)
51
class Customer { String name; int ID; String password; Address shippingAdrees; Address billingAdress;
}
class EBookstore { Collection<Customer> customers; Collection<OrderItem> orders; Collection<Item> items;
}
class Address { String street; String city; String state; String country; String postalCode;
}
![Page 52: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/52.jpg)
52
Traditionel systemudvikling Vandfaldsmodellen:
Kravanalyse
Design
Implementering og afprøvning
Brugertest
Vedligeholdelse
faseopdelt
![Page 53: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/53.jpg)
53
Objektorienteret systemudvikling (Booch)
Udviklingsprocessen er iterativ. Den består af successive iterationer, der som mål har, at
• identificere klasserne
• identificere klassernes semantik (deres felter og metoder)
• identificere klassernes indbyrdes relationer
• definere grænseflader
• implementere klasserne
Systemet vokser i relativt små afgrænsede skridt.
![Page 54: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/54.jpg)
54
Mikroprocessen
Identificer klasser
Identificer klassernes semantik
Identificer klassernes relationer
Definer grænseflader og implementer
Spiralmodel
![Page 55: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/55.jpg)
55
Makroproces Førnævnte tilgang kaldes for mikroproces. For at styre mikroprocessen benyttes følgende faser:
• Begrebsliggørelse (foranalyse) Forståelse af projektet, fastsættelse af rammer
• Analyse Udvikling af en model af systemets ønskede opførsel
• Design Skabelse af en arkitektur (objekter/klasser og deres relationer)
• Implementering Kodning i et objektorienteret programmeringssprog
• Vedligeholdelse Fejlretning og videreudvikling
![Page 56: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/56.jpg)
56
Makroprocessen
Foranalyse Analyse
Vedligeholdelse
Implementering
Design
Videreudviklet i Rational Unified Process
1. Påbegyndelse 2. Udarbejdelse 3. Konstruktion 4. Overdragelse
![Page 57: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/57.jpg)
57
Retningslinjer for udviklingsprocessen
(1) Begrebsliggørelse Nedskriv de basale krav til programmellets funktionalitet.
(2) Modellering af krav Foretag scenarie-analyse: Opskriv mulige brugerhandlinger og angiv systemets ønskede reaktioner. Start med scenarier, der omfatter handlinger, der ikke er fejlbehæftede.
(3) Identifikation af klasser Foretag navne-udsagnsord-analyse: Understreg alle navneord og udsagnsord i kravspecifikationen. Navneordene er kandidater for klasser. Udsagnsordene er kandidater for metoder.
![Page 58: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/58.jpg)
58
(4) Identifikation af klassernes semantik Identificer klassernes felter og metoder. Find fællestræk for klasserne og lav overklasser, der indeholde disse fællestræk.
(5) Identifikation af klassernes indbyrdes relationer
Klassediagram Brugstilfældediagram Tilstandsdiagram Sekvensdiagram
![Page 59: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/59.jpg)
59
Extreme programming (XP)�www.xprogramming.com
• Udviklingen foretages i iterationer Resultatet af hver iteration er et kørende program, der enten er en udvidelse eller en omstrukturering af programmet fra forrige iteration
• Skriv tests først Fremtvinger en klar definition af grænsefladen
Fanger fejl tidligt i forløbet
• Programmér i par Den ene koder, mens den anden tænker
Det er OK med diagrammering. Men brug ikke for megen tid på det, og vær villig til at kassere diagrammerne.
![Page 60: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/60.jpg)
60
Om udviklingsmetoder
Der er ingen kogebogsmetoder, der kan erstatte intelligens, erfaring og god smag ved design og programmering.
![Page 61: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/61.jpg)
61
Nogle designråd
1. Gør hverken designet for specifikt eller for generelt 2. Undgå unaturlige klasser 3. Respekter de naturlige abstraktionsniveauer 4. En klasse bør ikke have for mange forpligtelser (1-3) 5. En klasse bør ikke have urelaterede forpligtelser
![Page 62: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/62.jpg)
62
Javas egenskaber
• Objektorienteret
• Distribueret
• Sikkert
• Platformsuafhængigt
![Page 63: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/63.jpg)
63
Udførelse af Java-programmer Et kompromis imellem oversættelse og fortolkning
Bytekode-fortolker
CPU1
JVM
Java-chip Java-maskine
Bytekode-oversætter
Maskinkode
CPU2 JVM JIT/HOTSPOT
platformsuafhængigt
platformsafhængigt
Kildekode .java
Oversætter
Bytekode .class
![Page 64: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/64.jpg)
64
Bytekode
JVM’s instruktionscyklus:
do { hent opcode-byten for den aktuelle instruktion; hent operanderne; udfør instruktionen;
} while (!done);
Opcode (1 byte) operand1 operand2
...
James Gosling
![Page 65: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/65.jpg)
65
Applikationer og appletter
Applikation: et normalt program med adgang til alle systemressourcer.
Applet: et program indlejret i en Web-side med begrænset adgang til systemressourcer.
![Page 66: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/66.jpg)
66
Sikkerhed
• Lagerbeskyttelse
• Kodeverifikation
• Ressourcebeskyttelse
En applet kan normalt ikke
• læse og skrive filer på værtsmaskinen
• kommunikere med andre maskiner end den, hvorfra appletten er hentet
• starte andre programmer
![Page 67: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/67.jpg)
67
En simpel applikation
public class Hello { public static void main(String[] args) { System.out.println("Hello from Venus"); } }
![Page 68: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/68.jpg)
68
![Page 69: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/69.jpg)
69
En simpel applet
import java.awt.*; import java.applet.Applet;
public class HelloFromVenus extends Applet { public void paint(Graphics g) { Dimension d = getSize(); g.setColor(Color.BLACK); g.fillRect(0, 0, d.width, d.height); g.setFont(new Font("Helvetica", Font.BOLD, 24)); g.setColor(new Color(255, 215, 0)); // gold color g.drawString("Hello From Venus!", 40, 25); g.drawImage(getImage(getCodeBase(), "Venus.gif"), 20, 60, this); } }
![Page 70: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/70.jpg)
70
Det grafiske koordinatsystem (0,0)
height
width
y
x
![Page 71: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/71.jpg)
71
Konkret eksempel
(0,0)
(0,350)
•
(300,0)
(300,350)
(20,60) Hello From Venus! • (40,25)
![Page 72: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/72.jpg)
72
HTML-kode
<html> <head> <title> HelloFromVenus applet </title> </head>
<body bgcolor=black text=white> <center> <applet code="HelloFromVenus.class" width=300 height=350> </applet> </center> <hr> <a href="HelloFromVenus.java">the source.</a> </body> </html>
![Page 73: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/73.jpg)
73
Brug af Java-arkiv
Hvis et program består af flere filer - klassefiler, såvel som billede- og lydfiler - kan disse med fordel komprimeres og samles i et Java-arkiv.
jar cf Hello.jar HelloFromVenus.class Venus.gif
<applet code="HelloFromVenus.class" archive="Hello.jar" width=300 height=350> </applet>
Specificering af anvendelse i HTML:
![Page 74: Objektorienteret programmeringwebhotel4.ruc.dk/~keld/teaching/OOP_e09/Slides/pdf/01... · 2016-03-03 · 3 Aforisme Ordene er håndtag på tingene. Hvis vi ikke passer på, holder](https://reader033.fdocuments.net/reader033/viewer/2022041813/5e592eab24587c1d202ce104/html5/thumbnails/74.jpg)
74
• Læs kapitel 4 i lærebogen (side 75 - 157)
• Løs opgaverne 3.1 og 3.2
Ugeseddel 1�31. august - 7. september