Exercicis de POO

(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat

Sumari

  1. Board
  2. BicycleShop
    1. Output
  3. ThreeRectangles
  4. Colors
    1. Output (sense colors)
  5. MechanicalArmApp
    1. Output
  6. Testos (extra)

Board

Converteix el següent codi creant una classe Board que conté una llista de rectangles

class Rectangle(val height:Double, val width:Double){
    val area get() = height * width
}

fun getTotalArea(rectangles: List<Rectangle>): Double {
    var area = 0.0
    for (rectangle in rectangles) {
        area += rectangle.area
    }
    return area
}

fun countRectangles(rectangles: List<Rectangle>): Int {
    return rectangles.size
}

fun main() {
    val rectangles = listOf(Rectangle(2.2, 4.5), Rectangle(3.4, 1.5))
    println(countRectangles(rectangles))
    println(getTotalArea(rectangles))
}

BicycleShop

Crea un subpackage nou uf4.exercices.shop

Una empresa de venda de bicicletes vol fer una aplicació per tenir constància del seu estoc. De cada model de bicicleta en vol guardar el nom, marxes i marca.
De cada marca en vol guardar el nom i el país (el nom del país).

Crea les classes necessàries per guardar aquesta informació.

Fes un petit programa que crei 2 bicicletes d'una única marca i les imprimeixi per pantalla (no s'ha de llegir res de l'entrada).

Output

BicycleModel{name='Jett 24', gears=5, brand=BycicleBrand{name='Specialized', country='USA'}}

BicycleModel{name='Hotwalk', gears=7, brand=BycicleBrand{name='Specialized', country='USA'}}

ThreeRectangles

Crea un package nou uf4.exercices.figures

Volem fer un programa que dibuixi rectangles de colors a la consola.

Volem que dibuixi els següents 3 rectanlges.

color: RED, llargada: 4, amplada: 5
color: YELLOW, llargada: 2, amplada: 2
color: GREEN, llargada: 3, amplada: 5

Crea la classe RectangleFigure

classDiagram class RectangleFigure RectangleFigure : +String color RectangleFigure : +int width RectangleFigure : +int height RectangleFigure : +paint ()

Colors

Per pintar amb colors a la consola, primer copia el següent fitxer que conté la definició de colors i anomena'l SystemColors.kt

// --- Colors for system out ---
// Reset
const val RESET = "\u001b[0m" // Text Reset

// Regular Colors
const val BLACK = "\u001b[0;30m" // BLACK
const val RED = "\u001b[0;31m" // RED
const val GREEN = "\u001b[0;32m" // GREEN
const val YELLOW = "\u001b[0;33m" // YELLOW
const val BLUE = "\u001b[0;34m" // BLUE
const val PURPLE = "\u001b[0;35m" // PURPLE
const val CYAN = "\u001b[0;36m" // CYAN
const val WHITE = "\u001b[0;37m" // WHITE

Per imprimir amb un color has d'usar:

println("${RED}RED COLORED${RESET} NORMAL");

Output (sense colors)

XXXXX
XXXXX
XXXXX
XXXXX

XX
XX

XXXXX
XXXXX
XXXXX

MechanicalArmApp

Crea un subpackage nou uf4.exercices.arm

Volem fer un petit programa que simuli un braç mecànic.
El braç mecànic

Volem que el braç pugui

Per defecte un braç està apagat, amb obertura 0 i alçada 0.

Notes:

Fes un programa que apliqui al braç les següents instruccions:

Després de cada instrucció printa per pantalla l'estat del robot

Output

MechanicalArm{openAngle=0.0, altitude=0.0, turnedOn=true}
MechanicalArm{openAngle=0.0, altitude=3.0, turnedOn=true}
MechanicalArm{openAngle=180.0, altitude=3.0, turnedOn=true}
MechanicalArm{openAngle=180.0, altitude=0.0, turnedOn=true}
MechanicalArm{openAngle=0.0, altitude=0.0, turnedOn=true}
MechanicalArm{openAngle=0.0, altitude=3.0, turnedOn=true}
MechanicalArm{openAngle=0.0, altitude=3.0, turnedOn=false}

Testos (extra)

Quan acabis, fes un test per a comprovar cada una de les condicions exposades.