From c4caaf3982f00cc0caeaf5496064f48a40dcdb06 Mon Sep 17 00:00:00 2001 From: ljka Date: Wed, 14 Jun 2023 11:47:27 +0200 Subject: [PATCH 1/3] add solid solution --- .../solid/d/good/DotMatrixPrinterPrinter.kt | 16 ++++++++++++++++ .../exercisesolid/solid/d/good/Printer.kt | 5 +++++ .../exercisesolid/solid/d/good/PrinterDesk.kt | 19 +++++++++++++++++++ .../solid/i/good/AndroidComponent.kt | 17 +++++++++++++++++ .../solid/i/good/DesktopComponent.kt | 13 +++++++++++++ .../solid/i/good/Mouseoberable.kt | 5 +++++ .../exercisesolid/solid/i/good/Swipable.kt | 5 +++++ .../exercisesolid/solid/i/good/Touchable.kt | 5 +++++ .../exercisesolid/solid/i/good/Validator.kt | 5 +++++ .../exercisesolid/solid/l/good/Rectangle.kt | 7 +++++++ .../anna/exercisesolid/solid/l/good/Shape.kt | 5 +++++ .../anna/exercisesolid/solid/l/good/Square.kt | 8 ++++++++ .../anna/exercisesolid/solid/o/good/Car.kt | 5 +++++ .../exercisesolid/solid/o/good/Electronics.kt | 5 +++++ .../anna/exercisesolid/solid/o/good/Food.kt | 5 +++++ .../exercisesolid/solid/o/good/Product.kt | 5 +++++ .../solid/o/good/ShoppingCartService.kt | 13 +++++++++++++ .../anna/exercisesolid/solid/s/good/Author.kt | 7 +++++++ .../anna/exercisesolid/solid/s/good/Book.kt | 13 +++++++++++++ .../exercisesolid/solid/s/good/Introduce.kt | 5 +++++ .../exercisesolid/solid/s/good/Printer.kt | 5 +++++ 21 files changed, 173 insertions(+) create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/DotMatrixPrinterPrinter.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/Printer.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/PrinterDesk.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/AndroidComponent.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/DesktopComponent.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Mouseoberable.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Swipable.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Touchable.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Validator.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Rectangle.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Shape.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Square.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Car.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Electronics.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Food.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Product.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/ShoppingCartService.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Author.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Book.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Introduce.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Printer.kt diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/DotMatrixPrinterPrinter.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/DotMatrixPrinterPrinter.kt new file mode 100644 index 0000000..06ec373 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/DotMatrixPrinterPrinter.kt @@ -0,0 +1,16 @@ +package com.lyjak.anna.exercisesolid.solid.d.good + +class DotMatrixPrinterPrinter : Printer { + + override fun print(sth: String) { + println(". . $sth . .") + } + +} + +class ConsolePrinter : Printer { + + override fun print(sth: String) { + println(sth) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/Printer.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/Printer.kt new file mode 100644 index 0000000..c27cc31 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/Printer.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.d.good + +interface Printer { + fun print(sth: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/PrinterDesk.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/PrinterDesk.kt new file mode 100644 index 0000000..896f259 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/d/good/PrinterDesk.kt @@ -0,0 +1,19 @@ +package com.lyjak.anna.exercisesolid.solid.d.good + +class PrinterDesk(private val printer: Printer) { + + fun printFile() { + printer.print("File Content") + } + +} + + +fun test() { + val dotPrinter = DotMatrixPrinterPrinter() + val consolePrinter = ConsolePrinter() + + val printerDesk = PrinterDesk(consolePrinter) + + printerDesk.printFile() +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/AndroidComponent.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/AndroidComponent.kt new file mode 100644 index 0000000..c491319 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/AndroidComponent.kt @@ -0,0 +1,17 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +class AndroidComponent : Touchable, Swipable, Validator { + + override fun touch(event: String) { + println("Touch Event Fired") + } + + override fun swipe(event: String) { + println("Swipe Event Fired") + } + + override fun validate() { + println("All UI is valid") + } + +} diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/DesktopComponent.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/DesktopComponent.kt new file mode 100644 index 0000000..4a7c08b --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/DesktopComponent.kt @@ -0,0 +1,13 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +class DesktopComponent : Touchable, Validator { + + override fun touch(event: String) { + throw UnsupportedOperationException("touch not supported") + } + + override fun validate() { + println("All UI is valid") + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Mouseoberable.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Mouseoberable.kt new file mode 100644 index 0000000..40d4faf --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Mouseoberable.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +interface Mouseoberable { + fun mouseover(event: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Swipable.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Swipable.kt new file mode 100644 index 0000000..aa4a3dd --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Swipable.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +interface Swipable { + fun swipe(event: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Touchable.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Touchable.kt new file mode 100644 index 0000000..1daf274 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Touchable.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +interface Touchable { + fun touch(event: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Validator.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Validator.kt new file mode 100644 index 0000000..5c9c146 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/i/good/Validator.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.i.good + +interface Validator { + fun validate() +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Rectangle.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Rectangle.kt new file mode 100644 index 0000000..3ba1697 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Rectangle.kt @@ -0,0 +1,7 @@ +package com.lyjak.anna.exercisesolid.solid.l.good + +open class Rectangle(var width: Double = 0.0, var height: Double = 0.0): Shape { + + override fun calculateArea() = width * height + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Shape.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Shape.kt new file mode 100644 index 0000000..c38cf3c --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Shape.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.l.good + +interface Shape { + fun calculateArea(): Double +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Square.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Square.kt new file mode 100644 index 0000000..4f9e14e --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/l/good/Square.kt @@ -0,0 +1,8 @@ +package com.lyjak.anna.exercisesolid.solid.l.good + +class Square(side: Double) : Rectangle(side, side) + +fun test() { + val square = Square(1.0) + square.calculateArea() +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Car.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Car.kt new file mode 100644 index 0000000..3b2c804 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Car.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.o.good + +class Car(name: String?, price: Double) : Product(name, price){ + override fun getTotal(): Double = price * 1.60 * 1.18 +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Electronics.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Electronics.kt new file mode 100644 index 0000000..d5fd850 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Electronics.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.o.good + +class Electronics(name: String?, price: Double) : Product(name, price) { + override fun getTotal(): Double = price * 1.18 +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Food.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Food.kt new file mode 100644 index 0000000..f3b56d4 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Food.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.o.good + +class Food(name: String?, price: Double) : Product(name, price){ + override fun getTotal(): Double = price + price * 0.08 +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Product.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Product.kt new file mode 100644 index 0000000..6fa3029 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/Product.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.o.good + +abstract class Product(val name: String? = null, var price: Double = 0.0) { + abstract fun getTotal(): Double +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/ShoppingCartService.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/ShoppingCartService.kt new file mode 100644 index 0000000..db8faf5 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/o/good/ShoppingCartService.kt @@ -0,0 +1,13 @@ +package com.lyjak.anna.exercisesolid.solid.o.good + +class ShoppingCartService { + + fun calculateTotalOrder(products: List): Double { + var orderTotal = 0.0 + products.forEach { product -> + orderTotal += product.getTotal() + } + return orderTotal + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Author.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Author.kt new file mode 100644 index 0000000..36f66bd --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Author.kt @@ -0,0 +1,7 @@ +package com.lyjak.anna.exercisesolid.solid.s.good + +data class Author(val name: String, val surname: String) : Introduce { + + override fun introduce() = "$name $surname" + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Book.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Book.kt new file mode 100644 index 0000000..a7275ff --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Book.kt @@ -0,0 +1,13 @@ +package com.lyjak.anna.exercisesolid.solid.s.good + +data class Book( + val author: Author, + val bookName: String? = null, + val text: String? = null +) : Introduce, Printer { + + override fun introduce(): String = "This is $bookName book written by ${author.introduce()}" + + override fun print() = println(text) + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Introduce.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Introduce.kt new file mode 100644 index 0000000..5e87be2 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Introduce.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.s.good + +interface Introduce { + fun introduce(): String +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Printer.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Printer.kt new file mode 100644 index 0000000..30513ec --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/solid/s/good/Printer.kt @@ -0,0 +1,5 @@ +package com.lyjak.anna.exercisesolid.solid.s.good + +interface Printer { + fun print() +} \ No newline at end of file From 245e2286aff6b18e7ef46bae630ad91a02acbb78 Mon Sep 17 00:00:00 2001 From: ljka Date: Wed, 14 Jun 2023 12:04:16 +0200 Subject: [PATCH 2/3] add dry solution --- .../dry/fixConsts/good/DateUtils.kt | 14 ++++++++++++++ .../dry/fixPolymorphism/good/Actor.kt | 3 +++ .../dry/fixPolymorphism/good/Article.kt | 7 +++++++ .../dry/fixPolymorphism/good/Book.kt | 7 +++++++ .../dry/fixPolymorphism/good/Film.kt | 6 ++++++ .../dry/fixPolymorphism/good/Literature.kt | 16 ++++++++++++++++ .../dry/fixPolymorphism/good/Music.kt | 6 ++++++ .../dry/fixPolymorphism/good/Publication.kt | 9 +++++++++ 8 files changed, 68 insertions(+) create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixConsts/good/DateUtils.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Actor.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Article.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Book.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Film.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Literature.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Music.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Publication.kt diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixConsts/good/DateUtils.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixConsts/good/DateUtils.kt new file mode 100644 index 0000000..531836e --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixConsts/good/DateUtils.kt @@ -0,0 +1,14 @@ +package com.lyjak.anna.exercisesolid.dry.fixConsts.good + +class DateUtils { + + val CONS = 1000 * 60 * 60 * 24 + + fun getDaysInMiliseconds(miliseconds: Long): Long { + return miliseconds / CONS + } + + fun getMilisecondsInDays(days: Long): Long { + return days * CONS + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Actor.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Actor.kt new file mode 100644 index 0000000..3f7958c --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Actor.kt @@ -0,0 +1,3 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +class Actor(val name: String) \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Article.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Article.kt new file mode 100644 index 0000000..bb182a5 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Article.kt @@ -0,0 +1,7 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +class Article( + index: Long, title: String, description: String, year: Int, + author: String, + val pages: Int +) : Literature(index, title, description, year, author) \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Book.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Book.kt new file mode 100644 index 0000000..714e03f --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Book.kt @@ -0,0 +1,7 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +class Book( + index: Long, title: String, description: String, year: Int, + author: String, + val topics: List +) : Literature(index, title, description, year, author) \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Film.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Film.kt new file mode 100644 index 0000000..93daa7e --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Film.kt @@ -0,0 +1,6 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +class Film( + index: Long, title: String, description: String, year: Int, + val director: String, val actors: List, val duration: Int +) : Publication(index, title, description, year) \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Literature.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Literature.kt new file mode 100644 index 0000000..890b66f --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Literature.kt @@ -0,0 +1,16 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +open class Literature( + index: Long, title: String, description: String, year: Int, + val author: String +) : Publication(index, title, description, year) { + + fun print() { + //get Literature position from database by index and print to file + } + + override fun getSummary(): String { // this override wasn't necessary + return "$title by $author ($year) \n $description" + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Music.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Music.kt new file mode 100644 index 0000000..0d28167 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Music.kt @@ -0,0 +1,6 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +class Music( + index: Long, title: String, description: String, year: Int, + val band: String, val duration: Int +) : Publication(index, title, description, year) \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Publication.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Publication.kt new file mode 100644 index 0000000..c0aac97 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/dry/fixPolymorphism/good/Publication.kt @@ -0,0 +1,9 @@ +package com.lyjak.anna.exercisesolid.dry.fixPolymorphism.good + +open class Publication(val index: Long, val title: String, val description: String, val year: Int) { + + open fun getSummary(): String { + return "$title ($year) \n $description" + } + +} \ No newline at end of file From 7d271a1148ed33c67cadd0f5c3dc60661602168d Mon Sep 17 00:00:00 2001 From: ljka Date: Wed, 14 Jun 2023 12:23:37 +0200 Subject: [PATCH 3/3] add kiss solution --- .../anna/exercisesolid/kiss/good/DateUtils.kt | 16 ++++++++++++++++ .../exercisesolid/kiss/good/NumberManager.kt | 12 ++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/DateUtils.kt create mode 100644 app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/NumberManager.kt diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/DateUtils.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/DateUtils.kt new file mode 100644 index 0000000..d4baa32 --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/DateUtils.kt @@ -0,0 +1,16 @@ +package com.lyjak.anna.exercisesolid.kiss.good + +import java.util.Date + +object DateUtils { + + private const val MILLISECONDS_IN_HOUR: Long = 1000 * 60 * 60 + + fun isPast(timestamp: Long): Boolean = timestamp < System.currentTimeMillis() + + fun isPast(date: Date): Boolean = date.time < System.currentTimeMillis() + + fun getFullDays(timestamp: Long): Long = timestamp / MILLISECONDS_IN_HOUR + + fun getFullDays(date: Date): Long = date.time / MILLISECONDS_IN_HOUR +} \ No newline at end of file diff --git a/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/NumberManager.kt b/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/NumberManager.kt new file mode 100644 index 0000000..b1b520a --- /dev/null +++ b/app/src/main/java/com/lyjak/anna/exercisesolid/kiss/good/NumberManager.kt @@ -0,0 +1,12 @@ +package com.lyjak.anna.exercisesolid.kiss.good + +class NumberManager(private var number: Int) { + + companion object { + const val ONE_HUNDRED = 100 + } + + fun multiplyNumber(value : Int) { + number *= value + } +} \ No newline at end of file