Begrebsmodellering, UML og Java

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Programmeringsparadigmer.
07 – Kort om OO Introduktion.
Introduktion til objektorientering
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Selve objektet versus referencen til objektet Nedarvning
Informationsteknologi B-A, HHX, 2005,
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Larman, 2. udgave kap. 11 Grundlæggende Systemudvikling zHvad er systemudvikling ? zHvad er UML ? zHvad er analyse og design ? zHvad er UP ?
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.
03.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Klasser Oversigt, principper og teknikker Kapitel 3.
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
07.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Funktioner Oversigt, principper og teknikker Kapitel 7.
12.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Modelkomponent Oversigt, principper og teknikker Kapitel 12.
Objektorienteret programmering
Forelæsning 3.1 Collections Javas for-each løkke
09.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Kriterier Oversigt, principper og teknikker Kapitel 9.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
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.
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
Generelt om abstraktion og modellering Tietgen Skolen.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
Forelæsning 7.1 – repetition
Unified Modeling Language
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.
Variabler, klassevariabler, identitet og lighed, collections
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.
 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,
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)
Introduktion til objektorientering OO, Java og BlueJ.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
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.
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 programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
DAIMIIntroducerende objektorienteret programmering1 Et lille banksystem Modellering beskrevet ved et UML klassediagram.
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
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.
Eksamen Praktisk prøve.
Geometri i 4.Y.
01.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Objektorienteret Analyse & Design (OOA&D) Grundbegreber, principper og metode Kapitel 1.
Introduktion til objektorientering
Fænomen og begreb.
Fænomen og begreb.
Fænomen og begreb.
Parametrisering En kort introduktion.
Præsentationens transcript:

Begrebsmodellering, UML og Java

Oversigt Begrebsapparat til objektorientering Modelleringseksempler Begrebsopfattelser og -modellering Strukturer: specialisering, aggregering, associering Anvendes til organisering af viden om problemområdet Understøttes (i nogen grad) af konstruktioner i OO sprog Modelleringseksempler Abstrakte modeller i UML Implementation i Java Mindre eksempler: bibliotek, biludlejning, terning og raflebæger Case: Biografbookingsystem dIntProg, F08

Begrebsapparat til OO Objektorienteret programmering á la Nygaard 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 begreber og fænomener. En fysisk model konstrueres ved at modellere begreber som klassser og fænomener som objekter. dIntProg, F08

Problem/vision vedrørende fænomener Begrebsmodellering Problemspecifikke begreber modellering Realiserede begreber abstraktion abstraktion Problem/vision vedrørende fænomener Objekter Problemdomæne Model dIntProg, F08

Objektorienteret modellering Hvilken del af problemdomænet er relevant? Hvordan betragtes denne del af problemdomænet? Hvilke fænomener skal modelleres? Hvordan forstås fænomener i termer af begreber? Hvad er et begreb? dIntProg, F08

Fænomener og begreber Et fænomen er Et begreb 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 dIntProg, F08

Om begreber Designation (benævnelse) Ekstension Intension 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 dIntProg, F08

Eksempler på begreber Designation Ekstension Intension Hest Bil Rektangel Mad dIntProg, F08

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 dIntProg, F08

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! dIntProg, F08

Begrebsmodellering, igen Problemdomæne Model RB PSB Problemspecifikke begreber (PSB) er oftest prototypiske Realiserede begreber (RB) er Aristoteliske Udfordring i modellering at give aristotelisk definition til prototypiske begreber dIntProg, F08

Dannelse af begreber Identifikation af objekter Klassifikation gruppering Generalisering/specialisering is-a Aggregering has-a Associering X-a Organisering af viden... dIntProg, F08

Identifikation af objekter Sokrates Miss Daimi Hannibals march over alperne Peter Bastian Sirius 2000 Herbie Ritt Bjerregaard dIntProg, F08

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 dIntProg, F08

Gruppering Samling af ens fænomener til begreber. Person Sokrates Peter Ritt Bil Miss Daimi Herbie Rejse Sirius 2000 Hannibals march over Alperne dIntProg, F08

Generalisering/specialisering (is-a) Samling af begreber til overbegreber (generaliserede begreber). Køretøj Truck Bil Bus Taxa Personbil Ambulance Stationcar Sedan dIntProg, F08

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! dIntProg, F08

Specialisering: ekstra egenskaber B is-a A Intension(B) Intension(A) A  B  Ekstension(B) Ekstension(A) dIntProg, F08

Klasser og objekter Klasser repræsenterer begreber Objekter repræsenterer fænomener Alexandra Blomster Blomsterhandler Quist Blomster levér() bindBuket() indbetal() Biering Blomster dIntProg, F08

Specialisering i UML (is-a) Udlånsemne Generelt begreb Specielle begreber udlån(l: låner) indlån() erHjemme() Bog Video forfatter() forlag() ISBN() producer() format() spilletid() dIntProg, F08

Specialisering i Java Behandles først i detaljer i kapitel 8-9 class Udlånsemne { void udlån(Låner l) { // kode for udlån } void indlån() { // kode for hjemlån boolean erHjemme() { // kode for erHjemme ... class Bog extends Udlånsemne { String forfatter() { ... } String forlag() { ... } String ISBN() { ... } ... } class Video extends Udlånsemne String producer() { ... } String format() { ... } int spilletid() { ... } Behandles først i detaljer i kapitel 8-9 dIntProg, F08

Associering i UML (X-a) X = har-lejet Bil Kunde 0..* ... lej(b: Bil) aflever(b: Bil) ... dIntProg, F08

Associering i Java class Car { Car() { ... } ... } class Customer { Collection<Car> cars; Customer() { ... cars = new ArrayList<Car>(); } void rent(Car c) { cars.add(c); void deRent(Car c) { cars.remove(c); dIntProg, F08

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 dIntProg, F08

Aggregering i UML og Java Die class Die { private int eyes; public Die() { ... } public void roll() { ... } public int value() { ... } } class DieCup { private Collection<Die> c; public DieCup(int s) { c = new ArrayList<Die>(); for (int i=0; i<s; i++) { Die d = new Die(); c.add(d); public void rollAll() { ... } public int sum() { ... } roll() value() * DieCup rollAll() sum() dIntProg, F08

Aggregering vs. associering Hårfin grænse mellem aggregering og associering Hvis du er i tvivl: benyt associering! Aggregering komponenten eksisterer kun fordi den er en del af aggregatet aggregatet har ansvaret for oprettelse af komponenten når aggregatet ophører med at eksistere, ophører også komponenten med at eksistere Associering objekterne kan ekistere uafhængigt af hinanden relationen er dynamisk (eks: bil udlejet til person) dIntProg, F08

Eksempel: et biografbookingsystem Beskrivelse Et biografbookingsystem skal holde styr på reservationer til en biograf med et antal sale. Hver sal har sæder arrangeret i rækker. En kunde kan reservere et eller flere sæder og får et række- og sædenummer retur for hvert sæde der reserveres. Kundens identifikation er telefon-nummer. En reservation er til en bestemt forestilling. Forestillinger planlægges ved fastsættelse af film, sal, dato og klokkeslet. Navneord bookingsystem, reservation, biograf, sal, sæde, række, kunde, forestilling, film, dato, klokkeslet, telefonnummer Udsagnsord reservere, planlægge dIntProg, F08

Begrebsmodel i UML Kunde Reservation Dato 1 * 1 * 1 * * Booking- system Sæde Forestilling Film * 1 * * * 1 1 Række Sal Klokkeslet * dIntProg, F08

Begrebsdannelse og oo-sprog Klassifikation gruppering Specialisering is-a Aggregering has-a Associering X-a class extends Reference (attribut) evt. indre klasse dIntProg, F08

Direkte repræsentation Referencesystem Modelsystem RB PSB Objektorienterede programmeringssprog har abstraktions-mekanismer der muliggør en direkte repræsentation af begreber og begrebsstrukturer fra problemområdet. dIntProg, F08

Systematik i OOP Modellering Implementering fra problembeskrivelse til begrebsmodel forfinelse til klassemodel (metodesignaturer og specifikationer) Implementering strukturelt: fra klassemodel til Java-kode (automatik) indmad: attributter og metoder (kreativitet og systematik) Problem- domæne dIntProg, F08

Udvalgte objektorienterede sprog 1957 Fortran 1958 Lisp Algol 1960 1967 Simula Pascal C 1971 FP 1980 Smalltalk Prolog Standard ML 1985 BETA C++ Miranda Haskell 1995 Java Imperative sprog Funktions- sprog Logik- sprog dIntProg, F08