# Expert 3 Sprint 3

---

## K1: Je hebt object georiënteerde software gemaakt die samenwerkt met een database.

Voor het bewijs van algemene kennis over K1 zie [Expert review 2 K1](../expertReview/expert2sprint2.md#K1:-Je-hebt-object-georiënteerde-software-gemaakt-die-samenwerkt-met-een-database.).

### Database connectie

Voor het database gedeelte van K1 ben ik bezig geweest met het maken van een connectie naar de database doormiddel van NodeJs:

[Config](../../../../code/server/test/config.js)

[Connection](../../../../code/server/test/testConnection.js)

### Classes in CPP

Voor het OOP gedeelte van K1 ben ik bezig geweest met het maken en gebruiken van classes in CPP, hierbij heb ik gebruik gemaakt van abstraction en encapsulation:

[CPP Classes](https://gitlab.fdmci.hva.nl/propedeuse-hbo-ict/onderwijs/2023-2024/out-a-se-ti/blok-4/muupooviixee66/-/tree/bead6a5a13e5df6658cb9db451c4565250c6a2f6/code/arduino/Position-tracking)

### Java

Omdat wij gebruik maken van java voor het maken van de Android App, is het makkelijk om gebruik te maken van OOP. Java is een object georiënteerde programmeertaal en maakt het makkelijk om gebruik te maken van OOP sinds het een van de belangrijkste concepten is van Java.

In Java heb ik gebruik gemaakt van de volgende OOP concepten:

Abstraction: [Navigation Manager](../../../../code/src/Fitbot/app/src/main/java/com/example/fitbot/util/NavigationManager.java)

In deze class heb ik een public static void gemaakt. Door de void public te maken kan deze functie vanuit elke class worden aangeroepen. Door static te gebruiken kan deze functie worden aangeroepen zonder dat er een object van de class hoeft te worden gemaakt. 

De functie is te gebruiker door `NavigationManager.hideSystemUI(this);` aan te roepen. Hierbij is `this` de context van de huidige activity.

---

## K3: Je hebt een infrastructuur ontworpen en gebouwd volgens zelf-gedefinieerde vereisten.

Voor K3 heb ik de feedback op mijn diagrammen van de vorige sprint verwerkt. Deze sprint heb ik research gedaan naar Reverse Proxy, MariaDB en server hosting.

[Infrastructuur met problemen en oplossingen](https://muupooviixee66-propedeuse-hbo-ict-onderwijs-2023-178fb5f296aa35.dev.hihva.nl/documentation/database/infrastructure/)

---

## K4: Je ontwerpt een embedded systeem op basis van gegeven hardware. & K5: Je kan software schrijven voor een intelligente controller voorzien van actuatoren en sensoren.

Voor K4 ben ik bezig geweest met het onderzoeken van hardware die kan samen werken met pepper om de gebruikers positie te tracken. Aan het begin was het idee om met een Wii Balance Board te werken, maar dit was niet mogelijk. Daarom ben ik gaan kijken naar andere hardware waarmee dit mogelijk zo zijn.

[Research naar hardware en software voor de controller](/docs/documentation/research-questions/position-tracking-research.md)

Voor K5 ben ik bezig geweest met het onderzoeken en schrijven van de software die nodig is om de hardware te laten werken. Hierbij heb ik gekeken naar de software die nodig is om de hardware te laten werken en hoe deze samenwerkt met de software van een Android App. Research naar de software die nodig is voor de controller is te vinden in de link hierboven. De code voor de controller is te vinden in de link hieronder.

Code voor [BLE device scanner](https://gitlab.fdmci.hva.nl/propedeuse-hbo-ict/onderwijs/2023-2024/out-a-se-ti/blok-4/muupooviixee66/-/blob/bead6a5a13e5df6658cb9db451c4565250c6a2f6/code/src/Fitbot/app/src/main/java/com/example/fitbot/bluetooth/DeviceScanner.java). Deze code is geschreven voor een android applicatie die BLE devices kan discoveren en connecten.

Code voor de [ESP32](https://gitlab.fdmci.hva.nl/propedeuse-hbo-ict/onderwijs/2023-2024/out-a-se-ti/blok-4/muupooviixee66/-/blob/bead6a5a13e5df6658cb9db451c4565250c6a2f6/code/arduino/Position-tracking/test/test.ino). Deze code is geschreven om de ESP32 zich te laten opstellen als GATT server en de data van de LDR sensor te versturen naar de android app.

---