---
# System prepended metadata

title: 2020-04-08 | Kotlin | Classes et héritages
tags: [android, kotlin, gobelins]

---

# 2020-04-08 | Kotlin | Classes et héritages

###### tags: `kotlin` `android` `gobelins`

## Exercice

###  Enoncé

Créer un programme permettant de calculer la surface et le périmètre des figures géométriques suivantes :
- Sphère
- Cercle
- Quadrilatère
- Triangle

### Code

```kotlin
import kotlin.math.pow

abstract open class Form

abstract open class Form2D : Form() {
    abstract fun getSurface()
    abstract fun getPerimetre()
}

abstract open class Form3D : Form() {
    abstract fun getSurface()
    abstract fun getVolume()
}

abstract open class Polygon : Form2D()

class Sphere(var rayon:Double) : Form3D() {
    override fun getSurface() {
        println(4 * Math.PI * rayon.pow(2))
    }

    override fun getVolume() {
        println((4 * Math.PI * rayon.pow(3)) / 3)
    }
}
class Cercle(var rayon:Double) : Form2D() {
    override fun getPerimetre() {
        println(2 * Math.PI * rayon)
    }

    override fun getSurface() {
        println(Math.PI * rayon.pow(2))
    }
}
class Quadrilatere(var longueur:Double, var largeur:Double) : Polygon() {
    override fun getPerimetre() {
        println(2 * (longueur + largeur))
    }

    override fun getSurface() {
        println(longueur * largeur)
    }
}
class Triangle(var cote1:Double, var cote2:Double, var cote3:Double) : Polygon() {
    override fun getPerimetre() {
        println(cote1 + cote2 + cote3)
    }

    override fun getSurface() {
        var p = (cote1 + cote2 + cote3) / 2
        var calcul = p * (p - cote1) * (p - cote2) * (p - cote3)
        var surface = Math.sqrt(calcul)
        println(surface)
    }
}

var sphere = Sphere(4.0)
sphere.getSurface()
sphere.getVolume()

var cercle = Cercle(4.0)
cercle.getPerimetre()
cercle.getSurface()

var quadrilatere = Quadrilatere(4.0, 6.0)
quadrilatere.getPerimetre()
quadrilatere.getSurface()

var triangle = Triangle(3.0,4.0,5.0)
triangle.getPerimetre()
triangle.getSurface()
```