diff --git a/doc/Classdiagramm/pm3-dcd.png b/doc/Classdiagramm/pm3-dcd.png new file mode 100644 index 0000000..a94ebe3 Binary files /dev/null and b/doc/Classdiagramm/pm3-dcd.png differ diff --git a/doc/Classdiagramm/pm3-dcd.uxf b/doc/Classdiagramm/pm3-dcd.uxf new file mode 100644 index 0000000..5d662bd --- /dev/null +++ b/doc/Classdiagramm/pm3-dcd.uxf @@ -0,0 +1,144 @@ +10UMLClass48236010030MainUMLClass1082380370100<<Interface>> +PlantDatabase +-- ++ getPlantList(zone: HardinessZone): List<Plant> ++ getPlantById(zone: HardinessZone id: long): Optional<Plant>UMLClass67271022040TaskListControllerUMLClass1132110300180<<Record>> +Plant +-- ++ id: long ++ name: String ++ description: String ++ spacing: int ++ lifecycle: List<GrowthPhase> +-- ++ calculateStartDate(harvestDate: Date): Date ++ generateTasks() +UMLClass942710210120TaskListModel +-- +- tasks: ListProperty<Task> +- taskDb: TaskDatabase +-- ++ getTask(id: long): Optional<Task> ++ saveTask(task: Task) ++ removeTask(task: Task)UMLClass322690250120GardenPlanModel +-- +- tasks: ListProperty<Crop> +- gardenPlan: GardenPlan +-- ++ plantAsCrop(planting: UserPlanting) ++ removePlanting(planting: UserPlanting)UMLClass7268018080GardenPlanControllerUMLClass1362830490240Task +-- ++ id: long ++ name: String {readOnly} ++ description: String {readOnly} ++ startDate: Date {readOnly} ++ isOptional: boolean {readOnly} +- interval: int +- endDate: Date +-- ++ Task(name: String, description: String, startDate: String, isReadOnly: boolean): Task ++ withInterval(interval: int): Task ++ withEndDate(endDate: Date): Task ++ withId(id: long): Task +-- ++ getInterval(): Optional<int> ++ getEndDate(): Optional<Date>UMLClass902930280140<<Interface>> +TaskDatabase +-- ++ getTaskList(start: Date, end: Date): List<Task> ++ saveTask(Task task) throws ??Exception ++ removeTask(Task task) throws ??ExceptionUMLClass44244017080MainWindowControllerUMLClass962131021070NotificationService +-- +- taskDb: TaskDatabase +-- ++ tick()UMLClass1412131024090<<Interface>> +WeatherProvider +-- ++ getWeatherForecast: WeatherForecastUMLClass13921150400100WeatherService +-- +- weatherPovider: WeatherProvider +- taskDb: TaskDatabase +-- ++ WeatherService(provider: WeatherProvider, taskDb: TaskDatabase) +- updateTasks()UMLClass1502110260150<<Record>> +GrowthPhase +-- ++ startDate: MonthDay ++ endDate: MonthDay ++ type: GrowthPhaseType + +Relation142218010040lt=<->>>>> +m1=* +m2=180;10;10;10Text15213019070Note: +-- +{final, readOnly} omitted on public data fields in <<Record>> Entities for clarity +style=wordwrapRelation117297021050lt=<. +m1=* +m2=1 +returns >190;20;10;20Relation1032820140130lt=<- +m1=1 external database +m2=1 internal list +accesses10;110;10;10UMLClass3221120240150Crop +-- +- cropId: Long ++ plantId: long {final, readOnly} ++ startDate: LocalDate {final, readOnly} ++ area: Double +-- ++ withId(long): Crop ++ withArea(double): Crop +-- ++ getCropId(): Optional<Long>Relation126228070120lt=<. +m1=* +m2=1 +returns10;10;10;100UMLClass1632290130100<<Enumeration>> +GrowthPhaseType +-- +SOW +PLANT +HARVESTRelation158225070120lt=<->>>> +m1=1 +m2=*50;90;10;90;10;10Relation8827208030lt=<->>>>60;10;10;10Relation4321020110120lt=<. +m1=* +m2=1 +returns / saves10;100;10;10Relation24271010030lt=<->>>>80;10;10;10UMLClass302890280140<<Interface>> +GardenPlan +-- ++ getPlantings(): List<UserPlanting> ++ addPlanting(plantId: long, startDate) ++ savePlanting(planting: UserPlanting) +Relation42280080110lt=<. +m1=1 +m2=1 +accesses10;90;10;10Relation152212403090lt=<.10;70;10;10Relation1062106080270lt=<- +m1=1 +m2=1 +accesses10;10;10;250Relation11421060270170lt=<- +m1=1 +m2=1 +adds Tasks10;10;10;140;250;140UMLClass822114020050JsonTaskDatabaseRelation912106030100lt=<<-10;10;10;80UMLClass156243020050JsonPlantDatabaseRelation144244014030lt=<<-10;10;120;10UMLClass3293020050JsonGardenPlanRelation22294010030lt=<<-80;10;10;10Relation582510220220lt=<.200;200;10;10Relation172510340190lt=<.10;170;320;10UMLClass58225016060PlantListControllerRelation5223803080lt=<.10;60;10;10Relation60230080210lt=<.60;10;10;190UMLClass73239016060PlantListModelRelation73228090130lt=<.70;110;10;10Relation88240022070lt=<- +m1=1\nexternal\ndatabase +m2=1\ninternal\nlist +accesses >200;20;10;20Relation582019050lt=- +m1=0..n +m2=0..1 +teaches to >10;20;170;20UMLClass1412530420200TaskTemplate +-- ++ name: String {readOnly} ++ description: String {readOnly} ++ relativeStartDate: int {readOnly} +- interval: Integer +- relativeEndDate: Integer +- isOptional: boolean +-- ++ Task(name: String, description: String, startDate: String): TaskTemplate ++ setRelativeEndDate(relativeEndDate: int) ++ setInterval(interval: Integer) ++ generateTask(realStartDate: LocalDate): Task +Relation1752180130490lt=<->>>>> +m1=* +m2=180;460;110;460;110;10;10;10Relation160272090130lt=<. +m1=* +m2=1 +generates10;110;10;10Relation56277040040lt=<- +delegates generating Tasks380;20;10;20 \ No newline at end of file