Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar Telefon Andreas Hedrén Telefon Föreläsning 13, Kapitel 14
Applikationen •Ett taxibolag funderar på att expandera •Är expansionen lönsam? •Hur många fordon kommer de att behöva?
Problembeskrivning •Företaget har ett antal taxibilar som används för att köra taxi (transportera en eller flera passagerare från en plats till en annan) och skyttel (transportera individer från olika platser till andra platser). •När en person, ett hotell, ett nöjesställe eller en turistorganisation ringer efter en taxi försöker företaget skicka en bil om det finns en ledig. •Det finns ingen kö, så det är endast om det finns några lediga bilar som bolaget tar körningen. •När en bil anländer till platsen för att hämta en person meddelas detta till företaget. Företaget meddelas sedan när körningen är avslutad.
Syfte •Syftet med modellering är att ge företaget statistik över: –Förlorade körningar –Utnyttjandegraden av varje taxi •Dessa faktorer kommer hjälpa oss att beräkna om det är lönsamt att expandera •Fokus här är dock att hitta klasserna och deras ansvar
Hitta klasser •Substantiv i singularis •Identifiera synonymer •Ta bort onödiga detaljer
Potentiella klasser och ansvar •Företag Har ett antal taxis och skyttlar Tar emot förfrågan om transport Bokar en bil •Bil Hämtar och släpper av passagerare Anländer till plats Meddelar företag vid ankomst •Taxi Transporterar passagerare mellan platser •Skyttel Transorterar flera oberoende passagerare mellan platser •Passagerare •Plats •Passagerarkälla Ringer företaget (Skapar passagerare)
Scenario •Hämta och lämna en passagerare PassagerarKälla Samarbetar med Skapa en passagerare Passagerare Begär en taxi TaxiFöretag Generera upphämtning Plats och destination
Designa klassers interface •Skapa klassernas interface (publika metoder) •Utgå från klassernas ansvar •Arbeta med ett antal scenarios (användarfall) •Fundera kring vilka klasser som känner till och skapar andra klasser
Relationer till andra klasser •Genom konstruktor: new PassengerSource(taxiCompany) •Genom en metod: taxiCompany.requestPickup(passenger) •Inom objektet: –Företagets bilar –Objekt som skapas inom objekt kan sedan skickas till andra klasser genom metoderna ovan
Implementation •När klassernas interface är färdiga kan man börja med implementationen •Implementationen kommer att visa om interfacet var korrekt –Räkna med att behöva förändra din design •Gör ett antal test som kan upprepas under utvecklingen. Även dessa måste ibland förändras när designen förändras
Iterativ utveckling •Dela upp problemet i mindre delar •Arbeta i små steg •Avsluta varje steg med en period av testning –Regressionstest –Åtgärda fel tidigt –Var beredd att hela tiden omvärdera din design –Att hitta fel tidigt är något positivt
Sammanfattning •Stabila program kräver att en genomtänkt process följs: –Analysera noga –Specificera tydligt –Designa genomtänkt –Implementera och testa inkrementellt –Granska, ändra och lär av det. Ingen är perfekt!
Det var sista föreläsningen Nu har vi tittat på: •Java syntax •Klasser och objekt •Javas klassbibliotek •Samlingar •Felhantering •Systemutvecklingsmetoder
Därefter kommer det nya saker •Filhantering •Grafikprogrammering •Multimedia •Trådar •Webtjänster •Databasprogrammering •Andra programmeringsspråk: –Python –C++ •Andra programmeringsparadigm –Procedurella språk – C, Pascal... –Deklarativa språk – Erlang, Prolog...