Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Mallinna liikennevalot UML-tilakonekaaviona esim käyttäen kaavionpiirto-ohjelmaa. Voit olettaa, että tilakoneeseen tulee tapahtuma "30 sekuntia kulunut"  jolloin valoja voi vaihtaa. Voit halutessasi mallintaa myös liikennevalojen välitilat joissa keltainen valo on päällä. http://en.wikipedia.org/wiki/UML_state_machine
  2. Toteuta tilakone switch-case rakenteella. Voit käyttää koodin kirjoittamiseen esimerkiksi http://ideone.com/ -ympäristöä. Kieleksi voi valita esim. C++11
    Esimerkki tällä tavalla toteutetusta tilakoneesta löytyy sivulta Yksinkertainen Caps Lock -tilakonemalli tai osoitteesta http://en.wikipedia.org/wiki/Event-driven_finite-state_machine
  3. Tee Qt Creatorissa uusi käyttöliittymäsovellus, lisää käyttöliittymään aluksi painikeet tilakoneen tilojen vaihtamiseksi, ja tekstikentät joissa lukee missä tiloissa eri liikennevalot milloinkin ovat.

  4. Lisää tilakoneeseesi QTimer-ajastin, joka vaihtaa tilakoneen tiloja

  5. Mallinna kerrostalon hissi UML-tilakonekaaviona esim käyttäen kaavionpiirto-ohjelmaa. Sisällytä toiminnallisuuteen ainakin perustoiminnallisuus eli esim. kaikkien kerrosten painikkeet ja näytöt, jotka kertovat hissin tilasta.

  6. (Valinnainen lisätehtävä) Lisää tilakoneeseen myös ovien sensorit ja ajastin oven sulkeutumiselle, sekä mahdollisuus painaa useamman kerroksen painikkeita siten, että hissi muistaa mennä niihin kaikkiin yksi kerrallaan.

  7. Toteuta tilakone switch-case rakenteella.
    Esimerkki tällä tavalla toteutetusta tilakoneesta löytyy mm. sivulta Yksinkertainen Caps Lock -tilakonemalli tai osoitteesta http://en.wikipedia.org/wiki/Event-driven_finite-state_machine
  8. Tee Qt Creatorissa uusi käyttöliittymäsovellus, joka simuloi hissin toimintaa.
  9. Toteuta aikaisemman tehtävän liikennevalot Qt:n QStateMachine:na. Esimerkki Qt:n tilakoneen käytöstä löytyy sivulta Erittäin yksinkertaiset liikennevalot Qt-tilakoneena. Kytke esimerkkiin QTimer-ajastin, joka pyörittää liikennevaloja painikkeen sijaan.
  10. Toteuta aikaisemman tehtävän hissi Qt:n QStateMachine:na.
  11. Toteuta Qt:n QStateMachinella liikennevalo-tilakone, jossa on mallinnettuna sekä yksittäisen liikennevalon, että koko risteyksen tilanne. Tarvitset tähän alitilakoneita.

...