Objektorienteret programmering – begrebsmodellering

Slides:



Advertisements
Lignende præsentationer
Programmeringsparadigmer.
Advertisements

Softwarekonstruktion
07 – Kort om OO Introduktion.
Introduktion til objektorientering
Selve objektet versus referencen til objektet Nedarvning
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Arv Idéen i arv et at kunne genbruge gennem generalisering
04.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Struktur Oversigt, principper og teknikker Kapitel 4.
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
Objektorienteret programmering
05.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Adfærd Oversigt, principper og teknikker Kapitel 5.
09.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Kriterier Oversigt, principper og teknikker Kapitel 9.
1 Dagens gang Sidste uges opgaver OA+D: Adfærd Nye opgaver.
Objektorienteret programmering
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
Repetition: Introduktion til OOP med C# og .NET
Generelt om abstraktion og modellering Tietgen Skolen.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Objektorienteret programmering – UML2Java.  Jens Bennedsen 2001Multimedie programmering8.2 Indhold Klasser og associering til enkelt objekt –Programmering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
 Jens Bennedsen 2002Objektorienteret systemudvikling To syn på verden Aristotelisk vs. prototypisk syn.
Begrebsmodellering, UML og Java
Objektorienteret programmering – begrebsmodellering
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Objektorienteret programmering – begrebsmodellering.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Introduktion til objektorientering OO, Java og BlueJ.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Kari Rye Schougaard, Ph.d.-stud Værktøjer og teknikker A A R H U S U N I V E R S I T E T Datalogisk Institut Objekt Orienteret Modellering.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
 Jens Bennedsen 2001Multimedie programmering14.1 Lingo Inside LingoLand.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2001Multimedie programmering Introduktion og velkomst.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Eksamen Praktisk prøve.
Forelæsning Uge 1 – Torsdag
Introduktion til objektorientering
Fænomen og begreb.
Fænomen og begreb.
Fænomen og begreb.
Forelæsning Uge 1 – Torsdag
Præsentationens transcript:

Objektorienteret programmering – begrebsmodellering

Multimedie programmering Oversigt En introduktion til objektorientering Et perspektiv (Weltanschaung) Agenter, ansvar, beskeder og metoder Begrebsapparat til objektorientering Begrebsmodellering Anvendes til organisering af viden om problemområdet Understøttes af konstruktioner i OO sprog Modelleringseksempel Case: Bøger og kolleger Abstrakt model Implementation i Java  Jens Bennedsen 2001 Multimedie programmering

Problemløsning i hverdagen (1) Hvis min bil går i stykker, har jeg et problem; hvad gør jeg for at løse det? Henvender mig på et bilværksted og forklarer dem hvori problemet består Overlader bilen til værkføreren og får den tilbage i repareret stand nogen tid efter Hvad er det jeg har gjort for at løse mit problem? Fundet en passende agent eller udbyder af service Overbragt agenten en meddelelse om mit problem Det er blevet agentens ansvar at løse problemet på mine vegne Agenten har en metode til at løse problemet, men den behøver jeg ikke at kende til  Jens Bennedsen 2001 Multimedie programmering

Problemløsning i hverdagen (2) Samme princip hvis jeg skal sende blomster til min farmor i Svendborg Henvender mig til min lokale blomsterhandler med en meddelelse der indeholder information om hvilke blomster jeg ønsker samt min farmors adresse, og så sker det hele bag kulisserne... formodentlig ved at blomsterhandleren videregiver min meddelelse til en anden blomsterhandler i Svendborg der sørger for at fremskaffe blomsterne, binde en buket og få dem sendt ud til min farmor. Den fysiske realitet, buketten, stammer til syvende og sidst fra gartneren der dyrker blomsterne, men han er næsten helt forsvundet i de overvejelser jeg gør mig når jeg tænker på at give min farmor blomster.  Jens Bennedsen 2001 Multimedie programmering

Delegering til agenter Afkobling Agenters valg af metode er ikke mit problem; tværtimod er der stor fleksibilitet i at vi ikke blander os i agenters (eksempelvis blomsterhandleres eller værkføreres) metoder. Agenter er fri til at anvende hvilken teknik de finder for godt, blot de leverer en løsning på problemet – det er deres ansvar. Forskellige typer agenter Agenten er modtager af min meddelelse og dermed en nødvendig betingelse for at problemet bliver løst. Hver agent har sine metoder som er specifikke for netop den service han kan tilbyde. Havde jeg henvendt mig til værkføreren med mit blomster-problem ville han sikkert have givet en besked tilbage om at han ikke havde nogen metode til at løse problemet.  Jens Bennedsen 2001 Multimedie programmering

Interaktion mellem agenter Mig Alexandra Blomster Quist Blomster Bud-Johnny Farmor levér(b,a) levér(b,a) bindBuket(b) bringUd(b) aflever(b) indbetal(gebyr)  Jens Bennedsen 2001 Multimedie programmering

Forskellige typer agenter Blomsterhandler Bud levér bindBuket indbetal bringUd  Jens Bennedsen 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Begrebsmodellering Referencesystem Modelsystem Problemspecifikke begreber modellering Realiserede begreber abstraktion abstraktion Problem/vision vedrørende fænomener Objekter Referencesystem Modelsystem  Jens Bennedsen 2001 Multimedie programmering

Objektorienteret modellering Hvilken del af problemområdet er relevant? Hvordan betragtes denne del af problemområdet? Hvilke fænomener skal modelleres? Hvordan forstås fænomener i termer af begreber? Hvad er et begreb?  Jens Bennedsen 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Multimedie programmering Eksempler på begreber Designation Ekstension Intension Hest Bil Firkant Mad  Jens Bennedsen 2001 Multimedie programmering

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 2001 Multimedie programmering

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 2001 Multimedie programmering

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 2001 Multimedie programmering

Multimedie programmering Dannelse af begreber Identifikation af objekter Klassifikation gruppering Generalisering/specialisering is-a Aggregering has-a Associering X-a Organisering af viden...  Jens Bennedsen 2001 Multimedie programmering

Identifikation af objekter Sokrates Miss Daimi Hannibals march over alperne Peter Bastian Sirius 2000 Herbie Ritt Bjerregaard  Jens Bennedsen 2001 Multimedie programmering

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 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

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

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 2001 Multimedie programmering

Specialisering: ekstra egenskaber B is-a A Intension(B) Intension(A) A  B  Ekstension(B) Ekstension(A)  Jens Bennedsen 2001 Multimedie programmering

Interfaces, klasser og objekter Interfaces repræsenterer begreber, klasser realiserer begreber Objekter repræsenterer fænomener Alexandra Blomster Blomsterhandler Quist Blomster levér() bindBuket() indbetal() Biering Blomster  Jens Bennedsen 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Super- og sub begreber i Java public interface 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 interface 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 interface 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 2001 Multimedie programmering

Multimedie programmering Hvad kan jeg gøre? Udlånsemne u = new UdlånsemneImpl(…); Bog b = new BogImpl(…); Video v = new VideoImpl(…); Låner l = new LånerImpl(…); 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 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Multimedie programmering Aggregering i Java class RejseImpl implements Rejse { … private Time varighed; private String afrejsested; private Transport transportmiddel; private String destination; } Time Rejse  Jens Bennedsen 2001 Multimedie programmering

Multimedie 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 2001 Multimedie programmering

Multimedie programmering Associering i Java (1) class UdlånsemneImpl implements 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 2001 Multimedie programmering

Multimedie programmering Associering i Java (2) class LånerImpl implements 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 2001 Multimedie programmering

Begrebsdannelse og Java Klassifikation gruppering Specialisering is-a Aggregering has-a Associering X-a interface/class extends attribut reference  Jens Bennedsen 2001 Multimedie programmering

Multimedie programmering Referencer BlueJ (Michael Köllings oop-omgivelse til undervisning) http://www.pscit.monash.edu.au/bluej/ Michael Kölling http://www.pscit.monash.edu.au/~mik/ H. B. Hansen (autoværksted og blomster til farmor) http://www.dat.ruc.dk/~hbh/ http://www.dat.ruc.dk/~hbh/OOP/oop-hvorfor.html Kristen Nygaard (faderen til objektorienteret programmering http://www.ifi.uio.no/~kristen/index.html  Jens Bennedsen 2001 Multimedie programmering