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 Class Diagram Eisen vaststellen Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen Use cases Scenario’s Klant moet accoord gaan. Oriëntatie: CRC’s, Class diagram, Eisen vaststellen Functionaliteit specificeren: Uses Cases, Scenario’s Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen 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 Systeemtest Acceptatietest Klassenstructuur nader uitwerken: Interaction diagrams, State diagrams Code hacken / Testen 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.” Noteer de code zo, dat het duidelijk is welke messages gestuurd worden. Voorbeeld: Roep niet goForward() aan, maar stuur de message goForward naar jezelf: this.goForward() Doel: Duidelijkheid Benader attributen door het sturen van messages. Voorbeelden: Gebruik in een klasse Person niet zomaar het attribuut description, maar vraag het op via een message: this.getDescription() 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 Wat is team building? • • • • • Meerdere personen Eén doel Samenstelling verschillend Op elkaar ingespeeld zijn Verantwoordelijkheids gevoel Het nut van verschillende rollen •Specialiteiten •Taken •Duidelijke afspraken •Verantwoordelijkheden De rol van de projectleider •Overal verantwoordelijk voor •Afspraken maken •Aanspreekpunt van de klant AF Hugo •Plannen CRC-cards 23-11 Class Diagrams 23-11 20-11/23-11 •Orde bewaren Use cases en 26-11 •Uren bijhouden Scenario’s Sequence •Niemand zijn vriend 26-11 23-11/26-11 Diagrams Collaboration Diagrams State Diagrams Kaart Bestuurder Robot 26-11 26-11 30-11 27-11 27-11 Sebastiaan Marcel 20-11/23-11 23-11/26-11 23-11/26-11 23-11/26-11 26-11/26-11 26-11/26-11 26-11/26-11 26-11/30-11 27-11/27-11 27-11/27-11 OO verder uitgewerkt • incrementeel ontwikkelen • bij Robbie: • basisbewegingen • kaart maken • routebepaling • reuse of code Scheiding tussen: • functionaliteit • representatie Models Modellering van de werkelijkheid Views Representatie van de werkelijkheid Controllers Gedrag van de user-interface • Waarom simulatie? • Simulatiespecifieke implementaties • 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 • Accu • Richtingsverandering • Verplaatsing Hoe zoekt Robbie zijn weg naar een opgegeven positie? • • • • 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 Bepalen van de kortste route op de kaart 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 Waarom objecten indikken? • Robbie is groter dan 1 pixel op de kaart • Door in te dikken verdwijnen deze te smalle gangen • Reële toekomst •Infrarood besturing •Verkleining van de hardware •Basisversie voor eerste semester studenten •Ontwikkeling robot in Smalltalk • Mogelijke 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 •Leerzaam voor software ontwikkeling •Leerzaam voor werken in teamverband •Goede toekomst voor gebruik robot: •Werk te doen