Oversigt Modellering Begrebsmodellering, UML og Java Begrebsapparat til objektorientering 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 Modellering.2 Begrebsapparat til OO Begrebsmodellering Objektorienteret programmering á la Nygaard et program betragtes som en fysisk model der simulerer opførslen af en imaginær eller reel del af verden. Problemspecifikke modellering Realiserede Fysisk modellering er baseret på en opfattelse af virkeligheden i termer af og fænomener. abstraktion abstraktion En fysisk model konstrueres ved at modellere som klassser og fænomener som objekter. Problem/vision vedrørende fænomener Objekter Problemdomæne Model Modellering.3 Modellering.4 Objektorienteret modellering Fænomener og 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? 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 Hvad er et begreb? Modellering.5 Modellering.6
Om Eksempler på 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 Designation Ekstension Intension Hest Rektangel Mad Modellering.7 Modellering.8 Aristotelisk begrebsopfattelse Prototypisk 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 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 Karakteristik (intension :-) Intensionen omfatter eksempler på egenskaber som fænomener i ekstensionen kan have samt en udvalgt samling af typiske fænomener: prototyper Uldne med uskarpe grænser Stor variation mellem fænomener Ekstensionen er ikke entydigt fastlagt ved intensionen Eksempler (ekstension :-) Overalt! Modellering.9 Modellering.0 Begrebsmodellering, igen Dannelse af PSB Problemdomæne RB Model Identifikation af objekter Klassifikation gruppering Generalisering/specialisering is-a Problemspecifikke (PSB) er oftest prototypiske Realiserede (RB) er Aristoteliske Udfordring i modellering at give aristotelisk definition til prototypiske Aggregering has-a Associering X-a Organisering af viden Modellering. Modellering.2 2
Identifikation af objekter Klassifikation (abstraktion) Sokrates Uden abstraktion ville alt være _??? Miss Daimi Hannibals march over alperne Peter Bastian Sirius 2000 Herbie Ritt Bjerregaard Klassifikation er et middel til at danne og skelne mellem forskellige klasser af fænomener og To former for klassifikation Gruppering Generalisering/specialisering Modellering.3 Modellering.4 Gruppering Generalisering/specialisering (is-a) Samling af ens fænomener til. Samling af til over (generaliserede ). Person Køretøj Peter Sokrates Ritt Miss Daimi Herbie Truck Bus Rejse Personbil Taxa Ambulance Sirius 2000 Hannibals march over Alperne Stationcar Sedan Modellering.5 Modellering.6 Hvad gør et begreb specielt? Specialisering: ekstra egenskaber Transportmiddel Fly Passagerfly Rutefly 4-personers fly Militærfly Skib Køretøj 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! A B B is-a A Intension(B) Intension(A) Ekstension(B) Ekstension(A) Modellering.7 Modellering.8 3
Klasser og objekter Specialisering i UML (is-a) Klasser repræsenterer Objekter repræsenterer fænomener Blomsterhandler levér() bindbuket() indbetal() Alexandra Blomster Quist Blomster Biering Blomster Generelt begreb Specielle Bog forfatter() forlag() ISBN() Udlånsemne udlån(l: låner) indlån() erhjemme() Video producer() format() spilletid() Modellering.9 Modellering.20 Specialisering i Java Associering i UML (X-a) 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() { X = har-lejet 0.. Kunde lej(b: ) aflever(b: ) Behandles først i detaljer i kapitel 8-9 Modellering.2 Modellering.22 Associering i Java Aggregering (has-a) 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); Struktur mellem der beskriver et hele og (nogle af) de dele som helet består af. Varighed Afrejsested Rejse Motor Hjul Karosseri Sæde Dør Tag Skærm Transportmiddel Destination Modellering.23 Modellering.24 4
Aggregering i UML og Java Die roll() value() DieCup rollall() sum() 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() { Modellering.25 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) Modellering.26 Eksempel: et biografbookingsystem Begrebsmodel i UML En reservation er til en bestemt forestilling. Forestillinger planlægges ved fastsættelse af film, sal, dato og klokkeslet. 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 telefonnummer. Bookingsystem Kunde Sæde Reservation Forestilling Dato Film Navneord bookingsystem, reservation, biograf, sal, sæde, række, kunde, forestilling, film, dato, klokkeslet, telefonnummer Række Sal Klokkeslet Udsagnsord reservere, planlægge Modellering.27 Modellering.28 Begrebsdannelse og oo-sprog Direkte repræsentation Klassifikation gruppering class PSB RB Specialisering is-a extends Aggregering has-a Reference (attribut) evt. indre klasse Referencesystem Modelsystem Associering X-a Reference (attribut) Objektorienterede programmeringssprog har abstraktionsmekanismer der muliggør en direkte repræsentation af og begrebsstrukturer fra problemområdet. Modellering.29 Modellering.30 5
Systematik i OOP Udvalgte objektorienterede sprog Modellering fra problembeskrivelse til begrebsmodel forfinelse til klassemodel (metodesignaturer og specifikationer) 957 958 960 Fortran Algol Lisp Implementering strukturelt: fra klassemodel til Java-kode (automatik) indmad: attributter og metoder (kreativitet og systematik) 967 97 980 985 995 Pascal Simula BETA C++ Imperative sprog C Java Smalltalk FP Standard ML Miranda Haskell Prolog Problemdomæne Funktionssprog Logiksprog Modellering.3 Modellering.32 6