Hugo de Groot Rik de Groot Sander Hartogensis Reinoud Karssenberg Martijn Lindhout Marcel Lindenbergh Julien Moorrees Sebastiaan Overdijk
Het object-geörienteerde project Het klassendiagram Object-georiënteerd programmeren Team building en rollen MVC Simulatie Routeplanning Demonstratie Toekomst van Robbie Nawoord
CRC sessies Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen Class Diagram Eisen vaststellen
Use cases Scenario’s Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen Klant moet accoord gaan.
Sequence Diagrams Collaboration Diagram State Diagrams Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen
Iedere groep klassen moet afzonderlijk getest worden Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen Systeemtest Acceptatietest Eventueel volgende increment beginnen.
Diagram voor laatste twee incrementen
Deel diagram voor 3e increment: botssensor
Deel diagram 3e increment: Driver en Map
Deel diagram voor simulatie
Leef je in in de klasse waar je mee bezig bent. Doel: Op een logische manier verantwoordelijkheid verdelen. Voorbeeld: “Ik ben de klasse Logboek. Met mijn method setMaxNumberOfMessages kan worden ingesteld hoeveel logboek-entry’s ik kan bevatten.”
Voorbeeld: Roep niet goForward() aan, maar stuur de message goForward naar jezelf: this.goForward() Noteer de code zo, dat het duidelijk is welke messages gestuurd worden. Doel:Duidelijkheid
Voorbeelden: Gebruik in een klasse Person niet zomaar het attribuut description, maar vraag het op via een message: this.getDescription() Benader attributen door het sturen van messages. Doel: Verantwoordelijkheid voor het opleveren van een attribuut-waarde staat op 1 plek.
Probeer koppelingen tussen objecten zo los mogelijk te houden. Voorbeeld: klasse Simulation : Battery simBattery = new SimulatedBattery(); this.getRobot(). setBattery(simBattery); Doel: Herbruikbare klassen Heldere verdeling van verantwoordelijkheid
Meerdere personen Eén doel Samenstelling verschillend Op elkaar ingespeeld zijn Verantwoordelijkheids gevoel Wat is team building?
Specialiteiten Taken Duidelijke afspraken Verantwoordelijkheden Het nut van verschillende rollen
Overal verantwoordelijk voor Afspraken maken Aanspreekpunt van de klant Plannen De rol van de projectleider Orde bewaren Uren bijhouden Niemand zijn vriend
incrementeel ontwikkelen bij Robbie: basisbewegingen kaart maken routebepaling reuse of code OO verder uitgewerkt
functionaliteit representatie Scheiding tussen:
ModelsViewsControllers Modellering van de werkelijkheid Representatie van de werkelijkheid Gedrag van de user-interface
Simulatiespecifieke implementaties Waarom simulatie?
Testen classes onderling interactie met de werkelijkheid zeldzame omstandigheden Minder afhankelijk van de andere groep
Schild
Wereld kennis van Robbie’s positie kennis van aanwezige objecten kennis van de grenzen
Accu
Richtingsverandering
Verplaatsing
Alle objecten op de kaart worden ingedikt De kortste route wordt berekend Indien mogelijk, volgt Robbie deze route Bij een eventuele botsing: Botsing wordt in kaart gebracht Er wordt weer overnieuw begonnen Hoe zoekt Robbie zijn weg naar een opgegeven positie?
Alle vrije posities markeren met afstand ‘oneindig’ Het eindpunt wordt op afstand 0 gezet Dit eindpunt wordt in een wachtrij geplaatst Voor alle punten in de wachtrij: Afstand wordt opgehaald Voor alle omliggende punten: Indien nieuwe afstand + 1 < oude afstand Afstand wordt aangepast Punt wordt in de wachtrij geplaatst Routes vlak langs objecten voorkomen als het kan Als afstand = ‘oneindig’: eindpunt onbereikbaar Bepalen van de kortste route op de kaart
Robbie is groter dan 1 pixel op de kaart Waarom objecten indikken? Door in te dikken verdwijnen deze te smalle gangen
Infrarood besturing Verkleining van de hardware Basisversie voor eerste semester studenten Ontwikkeling robot in Smalltalk Reële toekomst
Meerdere botssensoren voor nauwkeuriger detectie Toevoeging van andere sensoren, bijvoorbeeld een laser voor afstandsdetectie Uitbreiding intelligentie m.b.t. de kaart: Herkenning van objecten, bijv. Verplaatsbare objecten. JAVA chip op robot Commando’s geven aan robot via spraakmodule Mogelijke toekomst
Leerzaam voor software ontwikkeling Leerzaam voor werken in teamverband Goede toekomst voor gebruik robot: Werk te doen