Objektorienteret programmering – begrebsmodellering

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Programmeringsparadigmer.
07 – Kort om OO Introduktion.
Selve objektet versus referencen til objektet Nedarvning
Objektorienteret programmering
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.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Forelæsning 3.1 Collections Javas for-each løkke
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
1 Grafalgoritmer I. 2 Plan Grafer - definition - anvendelser - terminologi - eksempler på grafproblemer Grafgennemgang - dybde-først-gennemgang - bredde-først-gennemgang.
Objekter og klasser Rasmus D. Lehrmann DM
Repetition: Introduktion til OOP med C# og .NET
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Generelt om abstraktion og modellering Tietgen Skolen.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling To syn på verden Aristotelisk vs. prototypisk syn.
Begrebsmodellering, UML og Java
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 1999, Henrik B. ChristensenIntroducerende objektorienteret programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 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.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
I o p o DAIMI, AU, Marts 1999Introducerende objektorienteret programmering5B.1 Et lille banksystem Modellering ved hjælp af UML.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
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?
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Uffes Udlejningsservice.  A. Lumbye, 2004 & E. Ernst 2005Introducerende objektorienteret programmeringmodellering Uffes Udlejningsservice Uffe Ellehammer.
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
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.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
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)
DAIMIIntroducerende objektorienteret programmering1 Et lille banksystem Modellering beskrevet ved et UML klassediagram.
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.
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.
Objektorienteret programmering – begrebsmodellering
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Geometri i 4.Y.
Fænomen og begreb.
Fænomen og begreb.
Fænomen og begreb.
Quiz – Uge 4 – torsdag – første time
Præsentationens transcript:

Objektorienteret programmering – begrebsmodellering

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

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

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

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

Introducerende objektorienteret programmering Eksempler på begreber Designation Ekstension Intension Agurk Transportmiddel Cirkel Smukt design  Jens Bennedsen, 2003 Introducerende objektorienteret 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, 2003 Introducerende objektorienteret 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, 2003 Introducerende objektorienteret 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, 2003 Introducerende objektorienteret programmering

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

Identifikation af objekter Sokrates Miss Daimi Hannibals march over alperne Peter Bastian Sirius 2000 Herbie Ritt Bjerregaard  Jens Bennedsen, 2003 Introducerende objektorienteret 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, 2003 Introducerende objektorienteret programmering

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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