Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Objektorienteret programmering – begrebsmodellering

Lignende præsentationer


Præsentationer af emnet: "Objektorienteret programmering – begrebsmodellering"— Præsentationens transcript:

1 Objektorienteret programmering – begrebsmodellering

2 Introducerende objektorienteret programmering
Begrebsapparat til OO Objektorienteret programmering et program betragtes som en fysisk model der simulerer opførslen af en imaginær eller reel del af verden. Fysisk modellering er baseret på en opfattelse af virkeligheden i termer af fænomener og begreber. En fysisk model konstrueres ved at modellere fænomener som objekter og begreber som klassser af objekter.  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

3 Begrebsmodellering Referencesystem Modelsystem Problemspecifikke
begreber modellering Realiserede begreber abstraktion abstraktion Problem/vision vedrørende fænomener Objekter Referencesystem Modelsystem  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

4 Introducerende objektorienteret programmering
Fænomener og begreber Et fænomen er en ting der har en bestemt, individuel eksistens (fysisk eller imaginær) Et begreb er en generaliseret ide af en samling af fænomener baseret på viden om fælles egenskaber ved fænomenerne i samlingen  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

5 Introducerende objektorienteret programmering
Om begreber Designation (benævnelse) Den samling af navne under hvilke begrebet er kendt Ekstension Den samling fænomener som begrebet dækker Intension En samling egenskaber som karakteriserer fænomenerne i begrebets ekstension  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

6 Introducerende objektorienteret programmering
Eksempler på begreber Designation Ekstension Intension Agurk Transportmiddel Cirkel Smukt design  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

7 Aristotelisk begrebsopfattelse
Karakteristik (intension :-) Intensionen omfatter definerende egenskaber som alle fænomener i ekstensionen skal have og karakteristiske egenskaber som fænomener i ekstensionen kan have Veldefinerede begreber med skarpe grænser Relativt homogene fænomener Ekstensionen er entydigt fastlagt ved intensionen Eksempler (ekstension :-) Findes inden for veletablerede fagområder som matematik, fysik, zoologi, botanik  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

8 Prototypisk begrebsopfattelse
Karakteristik (intension :-) Intensionen omfatter eksempler på egenskaber som fænomener i ekstensionen kan have samt en udvalgt samling af typiske fænomener: prototyper “Uldne” begreber med uskarpe grænser Stor variation mellem fænomener Ekstensionen er ikke entydigt fastlagt ved intensionen Eksempler (ekstension :-) Overalt!  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

9 Begrebsmodellering, igen
Referencesystem Modelsystem RB PSB Problemspecifikke begreber (PSB) er prototypiske Realiserede begreber (RB) er Aristoteliske Udfordring i modellering at give aristoteliansk definition til prototypiske begreber  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

10 Introducerende objektorienteret programmering
Dannelse af begreber Identifikation af objekter Klassifikation gruppering Generalisering/specialisering is-a Aggregering has-a Associering X-a Organisering af viden...  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

11 Identifikation af objekter
Sokrates Miss Daimi Hannibals march over alperne Peter Bastian Sirius 2000 Herbie Ritt Bjerregaard  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

12 Klassifikation (abstraktion)
Uden abstraktion ville alt være _ _ _ ??? Klassifikation er et middel til at danne og skelne mellem forskellige klasser af fænomener og begreber. To former for klassifikation Gruppering Generalisering/specialisering  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

13 Introducerende objektorienteret programmering
Gruppering Samling af ens fænomener til begreber. Person Sokrates Peter Ritt Bil Miss Daimi Herbie Rejse Sirius 2000 Hannibals march over Alperne  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

14 Generalisering/specialisering (is-a)
Samling af begreber til overbegreber (generaliserede begreber). Køretøj Truck Bil Bus Taxa Personbil Ambulance Stationcar Sedan  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

15 Hvad gør et begreb specielt?
Transportmiddel Fly Passagerfly Rutefly 4-personers fly Militærfly Skib Køretøj Bil Bus Lastbil Varevogn Pick-up Truck Personbil Privatbil Taxa Cykel Figur Ellipse Cirkel Trekant Ligebenet Ligesidet Retvinklet Firkant Trapez Parallellogram Rektangel Kvadrat Drage Tilføjelse af egenskaber!  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

16 Specialisering: ekstra egenskaber
B is-a A Intension(B) Intension(A) A B Ekstension(B) Ekstension(A)  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

17 Introducerende objektorienteret programmering
Super- og sub begreber Udlånsemne Generelt begreb Specielle begreber udlån(l: låner) indlån() erHjemme() Bog Video forfatter() forlag() ISBN() producer() format() spilletid()  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

18 Super- og sub begreber i Java
public class Video extends Udlånsemne { /** Hvem har produceret denne video?*/ public String producer(); /** Hvilket format har denne video */ public String format(); /** Hvor lang tid varer denne video */ public Time spilletid(); } public class Udlånsemne { /** * Dette emne udlånes til l. * Emnet skal være hjemme */ public void udlån(Låner l); * Emnet returneres public void indlån(); * Er emnet hjemme public boolean erHjemme(); } public class Bog extends Udlånsemne { /** Hvad er forlaget */ public String forlag(); /** Hvad er titlen */ public String titel(); /** Hvad er ISBN nummeret */ public String ISBN(); }  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

19 Introducerende objektorienteret programmering
Hvad kan jeg gøre? Udlånsemne u = new Udlånsemne(…); Bog b = new Bog (…); Video v = new Video (…); Låner l = new Låner (…); u.udlån(l);? u.erHjemme()? u.forfatter()? u.spilletid()? u.ISBN()? v.spilletid()? v.udlån(l);? v.erHjemme()? v.indlån()? b.ISBN()? v.ISBN()? Hvilke egenskaber har Udlånsemne? Bog? Video?  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

20 Introducerende objektorienteret programmering
Hierarkier En subklasse er en specialisering af superklassen Subklassen arver superklassens egenskaber Subklassen er mere specialiseret end superklassen Forekomster: superklassen subklassen  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

21 Introducerende objektorienteret programmering
Hierarkier - 2 Mængden af forekomster i subklassen er indeholdt i mængden af forekomster af superklassen I.e. hvis det er en subklasseforekomst er det også en superklasseforekomst. I subklassen tilføjes egenskaber  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

22 Substitutionsprincippet
Substitutionsprincippet: En subklasse skal kunne erstatte (substituere) sin superklasse Bruges til at sikre et “velformet” hierarki Bruges til at checke et eksisterende hierarki.  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

23 Introducerende objektorienteret programmering
Eksempel Beholder Værtshusgæst drik( ) gladAften( ) class Værtshusgæst { public void gladAften() { //pre: penge på lommen //post: alkohol i blodet while (<stående>) do b.drik() } private Beholder b; end Værtshusgæst Krus Glas Damesko drik( ) drik( ) drik( )  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

24 Introducerende objektorienteret programmering
Anvendelse Et system til en bank der blandt andet kan beregne renter: Konto System rente( ) * tilskrivRente( ) class System { public void tilskrivRente() { //pre: - //post: Alle konti har fået til- skrevet renter Iterator i = konti.iterator(); while (i.hasNext()) { Konto k = (Konto)i.next(); k.rente(); } private ArrayList konti: Checkkonto Aktionærkonto Kassekredit rente( ) rente( ) rente( )  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

25 Introducerende objektorienteret programmering
Anvendelse 2 Differentieret moms på varer: Vare Moms returner p+25% moms( ):int moms (p:int) : int returner varensmoms.moms(pris) Food Luksusvare moms (p:int) : int moms (p:int) : int returner p+5% returner p+25% + 50  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

26 Introducerende objektorienteret programmering
Vare class Vare { public Vare(Moms mo, int pr) {m=mo; p=pr;} public int moms() {return m.moms(p);} public void updateMoms(Moms nyM) {m=nyM;} private Moms m; private int p; } class Moms { public int moms(int b) {return (int)(b*0.25);} } class FoodMoms extends Moms { public int moms(int b) {return (int)(b*0.05);} }  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

27 Introducerende objektorienteret programmering
Anvendelse class Test { public void main (){ Moms am = new Moms(); FoodMoms fm = new FoodMoms(); Vare agurk = new Vare(fm, 5); System.out.println(agurk.moms()); agurk.updateMoms(am); }  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

28 Introducerende objektorienteret programmering
Aggregering (has-a) Struktur mellem begreber der beskriver et hele og (nogle af) de dele som helet består af. Bil Motor Hjul Karosseri Sæde Dør Tag Skærm Rejse Afrejsested Destination Varighed Transportmiddel  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

29 Introducerende objektorienteret programmering
Aggregering i Java class Rejse { private Time varighed; private String afrejsested; private Transport transportmiddel; private String destination; } Time Rejse  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

30 Introducerende objektorienteret programmering
Associering (X-a) X = låner / erUdlåntAf Emne Person 0..* 0..1 udlån(l: låner) indlån() erHjemme() registrer(e: emne) afRegistrer(e: emne)  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

31 Introducerende objektorienteret programmering
Associering i Java (1) class Udlånsemne { public Item() { låner = null; } public boolean inLibrary() { return borrower == null; } public void udlån(Låner l) { låner = l; l.register(this); public void hjemlån() { låner.afRegister(this); låner = null; private Låner låner;  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

32 Introducerende objektorienteret programmering
Associering i Java (2) class Låner { public Låner() { emner = new HashSet(); } public void register(Emne t) { emner.add(t); public void afRegister(Emne t) { emner.remove(t); private Set emner;  Jens Bennedsen, 2003 Introducerende objektorienteret programmering

33 Begrebsdannelse og Java
Klassifikation gruppering Specialisering is-a Aggregering has-a Associering X-a interface/class extends attribut reference  Jens Bennedsen, 2003 Introducerende objektorienteret programmering


Download ppt "Objektorienteret programmering – begrebsmodellering"

Lignende præsentationer


Annoncer fra Google