interface Activity { val startTime: LocalDate val endTime: LocalDate val quantity: Int } data class FullActivity( override val startTime: LocalDate, override val endTime: LocalDate, val directTime: Int, val indirectTime: Int, override val quantity: Int ) : Activity data class SpecificActivity( val executionTime: LocalDate, val duration: Int, override val quantity: Int ) : Activity{ override val startTime: LocalDate get() = executionTime override val endTime: LocalDate get() = executionTime.addMinutes(duration) }