Application Java permettant de visualiser (et contrôler) des thermostats.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Emre KARTAL b531aede56
Update README.md
2 years ago
doc New functionalities (addition, Thermostat view, change the strategy and temp ...), improved views and README 2 years ago
src New functionalities (addition, Thermostat view, change the strategy and temp ...), improved views and README 2 years ago
README.md Update 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 :


  Java


Emre KARTAL
© Groupe 4