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