Emre KARTAL
b531aede56
|
2 years ago | |
---|---|---|
doc | 2 years ago | |
src | 2 years ago | |
README.md | 2 years ago |
README.md
Thermostat (via JavaFX)
ℹ️ Réalisation d'une application qui permet de visualiser (et contrôler) des capteurs de température.
Plus précisément, on retrouve :
La fenêtre principale : affiche la liste de tous les capteurs et lorsqu'on clique sur un capteur en particulier, ces informations s'affichent.
Une fenêtre avec un thermostat : un spinner qui affiche et permet de changer la température du capteur.
Une fenêtre avec une image : représentant la température du capteur (pour les valeurs < 0°c on a une image de neige/glace, entre 0°c et 25°c une image de nuageux, etc.).
De plus, si la fenêtre principale se ferme, toutes les autres fenêtres se ferment.
-
Comment lancer le projet ?
ℹ️ Si vous ne disposez pas d'Intellij IDEA, allé sur le site jetbrains pour pouvoir le télécharger !!!
Comme nous allons devoir utiliser la bibliothèque JavaFX, il va falloir l'installer, pour cela rendez-vous sur le site Download JavaFX et installer sur le système d'exploitation que vous souhaitez (Windows, Linux, etc.), cependant veuillez à choisir l'architecture "x64" et le type "SDK" !
Lorsque que tout est installé, cloner le dépôt et configurer l'idea (mais aussi n'oubliez de configurer le lancement de l'application via le "launcher.main").
ℹ️ Pour vous aider à la configurer, vous pouvez utiliser le site Doc JavaFX !
Lorsque tout est bon, vous pouvez lancer et profiter de l'application. 👍
Fonctionnement
@startuml
skinparam defaultFontName Tahoma
skinparam classAttributeIconSize 0
skinparam monochrome true
skinparam shadowing false
skinparam linetype ortho
skinparam class {
BackgroundColor transparent
}
skinparam package {
BackgroundColor transparent
}
hide circle
class Stage {}
class Thread {}
package view {
class FXMLWindow {
+FXMLWindow(title : String, pathFxmlRessource : String)
}
class CaptorMonitorWindow {
+CaptorMonitorWindow(title : String, pathFxmlRessource : String, captor : Captor)
+getCaptor()
+setCaptor(captor : Captor)
}
class ImageWindow {
-{static}Images : NavigableMap<Double,Image>
+imageWindow(captor : Captor)
+update()
}
class ThermostatWindow {
-spinner : Spinner
+ThermostaWindow(captor : Captor)
+update()
}
class CaptorWindow {
+openWindow(type : CaptorMonitorWindow)
}
}
package model {
class VisitorCaptor {
+visit(captor : CaptorArea) : TreeItem<Captor>
+visit(captor : CaptorBasic) : TreeItem<Captor>
+details(captor : CaptorArea) : HBox
+details(captor : CaptorBasic) : HBox
}
class CaptorStationStub {
+getCaptors()
}
class Captor {
-id : UUID
-name : string
-value : double
-time : double
+Captor(name : String)
+getId() : UUID
+getTime() : double
+getName() : String
+getStrategy() : GenerationStrategy
+setStrategy(strategy : GenerationStrategy)
+addCaptor(captor : Captor)
+getTemperature() : double
+accept(visitorCaptor : VisitorCaptor) : TreeItem<Captor>
+details(visitorCaptor VisitorCaptor) : HBox
}
interface GenerationStrategy {
+generate()
}
class GenBoundedRandom {
+genRandom()
+GenBoundedRandom(min : double, max : double)
}
class GenFloatingBound {}
class GenCPU {}
interface Observable {
+attach(observer : Observer<T>)
+detach(observer : Observer<T>)
+notify()
}
interface Observer {
+update()
}
class CaptorBasic {
+CaptorBasic(name : String, genStrategy : GenerationStrategy)
+addCaptor(captor : Captor) <<exception>>
}
class CaptorArea {
+Captor(name : String, captors : Map<Captor,Double>)
+getTemperature() : double
+addCaptor(captor : Captor)
}
class Double{}
CaptorWindow --> "-captors" CaptorStationStub
CaptorWindow ..> "Use" CaptorMonitorWindow
FXMLWindow --|> "Extends" Stage
CaptorMonitorWindow --|> FXMLWindow
CaptorMonitorWindow --> "-captor" Captor
CaptorMonitorWindow ..|> Observer
CaptorArea ..|> Observer
ImageWindow --|> CaptorMonitorWindow
ThermostatWindow --|> CaptorMonitorWindow
CaptorStationStub --> "*-captors" Captor
GenBoundedRandom ..|> GenerationStrategy
GenFloatingBound ..|> GenerationStrategy
GenCPU ..|> GenerationStrategy
Captor --|> Observable
Captor --> "-generationStrategy" GenerationStrategy
CaptorBasic --|> Thread
CaptorBasic --|> Captor
CaptorArea --|> Captor
CaptorArea --> "dictionnary<Captor,poids>" Double
Observable --> "-observers" Observer
}
@enduml
Répartition du Gitlab
La racine de mon gitlab est composée de deux dossiers essentiels au projet :
src : Toute la partie codage de l'application
doc : Documentation de l'application
Environnement de Travail
L'environnement de travail se base sur plusieurs outils :
© Groupe 4