177 lines
7.4 KiB
Markdown
177 lines
7.4 KiB
Markdown
# Expert 1 Sprint 1
|
|
|
|
---
|
|
|
|
## K1: Je hebt object georiënteerde software gemaakt die samenwerkt met een database.
|
|
|
|
Voor het maken van object georiënteerde software die samenwerkt met een database ben ik nog niet ver genoeg. Ik ben bezig geweest met het maken van OOP software, maar ik ben nog niet begonnen met het maken van een database. Ik ben wel van plan om dit te gaan doen in de volgende sprint. Door een verandering in ons product zal de database anders ingericht worden dan eerder gedacht. Daarom zal ik in deze expert laten zien wat ik al wel heb kunnen doen en wat ik van plan ben om te gaan doen.
|
|
|
|
### Database
|
|
|
|
De database moet nog worden opgezet. Het idee is om dit te doen met behulp van: NodeJs, MariaDB en Apache. De database zal worden opgezet op een Raspberry Pi.
|
|
|
|
De database zou eerder worden gebruik voor gegevens van de gebruiker en veel andere data. Dit is veranderd na de feedback van de sprint review, de feedback die wij kregen was om het project/product veel simpeler te houden en aan te passen op onze doelgroep. De database zal nu worden gebruikt voor opslaan van bepaalde oefeningen en de bijbehorende data.
|
|
|
|
### OOP
|
|
|
|
Object Oriented Programming is een programmeermethode dat gebruik maakt van objecten en classes. Het doel van OOP is om de code beter te structureren en te hergebruiken. Omdat wij gebruik maken van java voor het maken van de software, 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.
|
|
|
|
#### Inheritance
|
|
|
|
Inheritance is een princiepe waarbij een nieuwe class wordt gemaakt met behulp van eigenschappen van een bestaande class. De nieuwe class wordt afgeleid van de bestaande class.
|
|
|
|
Voorbeeld: Een olifant is een dier. Een olifant heeft alle eigenschappen van een dier, zoals ademhalen, eten, slapen, enz. Een olifant heeft ook enkele specifieke eigenschappen, zoals grootte, gewicht, slurf, enz.
|
|
|
|
Use case:
|
|
|
|
```java
|
|
|
|
public class MainActivity extends RobotActivity implements RobotLifecycleCallbacks {
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
// Register the RobotLifecycleCallbacks to this Activity.
|
|
QiSDK.register(this, this);
|
|
}
|
|
|
|
@Override
|
|
protected void onDestroy() {
|
|
// Unregister the RobotLifecycleCallbacks for this Activity.
|
|
QiSDK.unregister(this, this);
|
|
super.onDestroy();
|
|
}
|
|
|
|
@Override
|
|
public void onRobotFocusGained(QiContext qiContext) {
|
|
// The robot focus is gained.
|
|
}
|
|
|
|
@Override
|
|
public void onRobotFocusLost() {
|
|
// The robot focus is lost.
|
|
}
|
|
|
|
@Override
|
|
public void onRobotFocusRefused(String reason) {
|
|
// The robot focus is refused.
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
De MainActivity class erft van RobotActivity, dit zorgt ervoor dat MainActivity properties en methods kan gebruiken van RobotActivity.
|
|
|
|
#### Abstraction
|
|
|
|
Abstraction is een princiepe om de complexiteit van een object te verbergen en alleen de nodige kenmerken weer te geven.
|
|
|
|
Voorbeeld: Een auto bestaat uit verschillende onderdelen, zoals motor, versnellingsbak, wielen, enz. Maar we hoeven niet te weten hoe deze onderdelen werken om een auto te besturen. We moeten alleen weten hoe we de auto moeten besturen, zoals hoe we gas moeten geven, remmen, sturen, enz.
|
|
|
|
Use case:
|
|
|
|
```java
|
|
|
|
@Override
|
|
public void onRobotFocusGained(QiContext qiContext) {
|
|
|
|
Say say = SayBuilder.with(qiContext) // Create a new Say action.
|
|
.withText("Hello world!")
|
|
.build();
|
|
|
|
say.run(); // Execute the Say action.
|
|
}
|
|
|
|
```
|
|
|
|
In de method `onRobotFocusGained` wordt een `Say` actie gemaakt en uitgevoerd. De gebruiker hoeft niet te weten hoe de `Say` method werkt, maar kan deze gewoon gebruiken.
|
|
|
|
#### Encapsulation
|
|
|
|
Encapsulation is een princiepe om de interne gegevens van een object te verbergen en alleen toegang te geven via methods.
|
|
|
|
Voorbeeld: Een bank heeft verschillende methods om geld te storten, geld op te nemen, saldo te controleren, enz. We kunnen niet rechtstreeks toegang krijgen tot de interne gegevens van de bank, zoals de balans, de rekeningnummers, enz. We moeten de methods van de bank gebruiken om deze gegevens te krijgen.
|
|
|
|
Use case:
|
|
|
|
```java
|
|
|
|
To be added
|
|
|
|
```
|
|
|
|
In de `MainActivity` class worden de methods `onCreate`, `onDestroy`, `onRobotFocusGained`, `onRobotFocusLost` en `onRobotFocusRefused` gebruikt om pepper te kunnen besturen. De gebruiker hoeft niet te weten hoe deze methods werken, maar kan deze gewoon gebruiken.
|
|
|
|
#### Polymorphism
|
|
|
|
Polymorfism is een princiepe waarmee een class verschillende vormen kan hebben. Het kan worden bereikt door methods te hebben met dezelfde naam, maar met verschillende parameters.
|
|
|
|
Voorbeeld: Een dier kan verschillende geluiden maken, zoals een hond kan blaffen, een kat kan miauwen, enz. Maar we kunnen een algemene method maken die `makeSound` heet en deze method in de dierclass implementeren. De hondclass kan deze method overschrijven en blaffen implementeren, en de katclass kan deze method overschrijven en miauwen implementeren.
|
|
|
|
Use case:
|
|
|
|
```java
|
|
|
|
To be added
|
|
|
|
```
|
|
|
|
---
|
|
|
|
## K2: Je hebt de wensen en behoeften van gebruikers verwerkt in een goed doordacht prototype.
|
|
|
|
De wensen en behoeften van de gebruikers zijn op dit moment nog niet verwerkt in een prototype. Dit is omdat er nog niet genoeg informatie hebben over de wensen en behoeften van de gebruikers. In sprint 2 zal er een prototype worden gemaakt waarin de wensen en behoeften van de gebruikers zijn verwerkt.
|
|
|
|
De manier waarop ik de wensen en behoeften van de gebruikers wil gaan verwerken in het prototype is door middel van Test/Learning cards. Dit is een manier om de gebruikerservaring te testen en te verbeteren.
|
|
|
|
---
|
|
### ISO
|
|
|
|
Voor het testen van de gebruikerservaring wordt de ISO (International Standard Organization) definitie van kwaliteit in gebruik gebruikt.
|
|
|
|
“Qualiteit in gebruik is de mate waarin een product of systeem door specifieke gebruikers kan worden gebruikt om aan hun behoeften te voldoen om specifieke doelen te bereiken met effectiviteit, efficiëntie, vrijheid van risico en tevredenheid in specifieke gebruiksomstandigheden.”
|
|
|
|
#### Effectiviteit
|
|
|
|
Effectiviteit is de mate waarin gebruikers specifieke doelen kunnen bereiken met nauwkeurigheid en volledigheid.
|
|
|
|
##### Test Card
|
|
|
|
In de test card wordt de test beschreven die wordt uitgevoerd. De test card bestaat uit de volgende onderdelen:
|
|
|
|
Hypothese:
|
|
Test:
|
|
Meetmethode:
|
|
Criteria:
|
|
|
|
##### Resulaat
|
|
|
|
In `Resultaat` worden de resultaten van de test beschreven. De resultaten worden beschreven aan de hand van de hypothese, test, meetmethode en criteria.
|
|
|
|
##### Learning Card
|
|
|
|
In de learning card wordt beschreven wat er is geleerd van de test. De learning card bestaat uit de volgende onderdelen:
|
|
|
|
Hypothese:
|
|
Observatie:
|
|
Leerpunt en inzicht:
|
|
Advies:
|
|
|
|
---
|
|
|
|
De effectiviteit en tevredenheid worden op gelijke manieren getest. Zodra de test is uitgevoerd en de resultaten zijn geanalyseerd, wordt er een learning card gemaakt. In de learning card wordt beschreven wat er is geleerd van de test en wat er kan worden verbeterd. Na alle resultaten te hebben geanalyseerd, wordt er een prototype gemaakt waarin de wensen en behoeften van de gebruikers zijn verwerkt.
|
|
|
|
---
|
|
|
|
## K3: Je hebt een infrastructuur ontworpen en gebouwd volgens zelf-gedefinieerde vereisten.
|
|
|
|
|
|
|
|
---
|
|
|
|
## 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.
|