Dwelling 2 just in case

PHOTO EMBED

Wed Nov 20 2024 17:39:28 GMT+0000 (Coordinated Universal Time)

Saved by @hi

package com.example.dwelling

import android.os.Bundle

import androidx.activity.ComponentActivity

import androidx.activity.compose.setContent

import androidx.activity.enableEdgeToEdge

import androidx.compose.foundation.layout.Arrangement

import androidx.compose.foundation.layout.Column

import androidx.compose.foundation.layout.Spacer

import androidx.compose.foundation.layout.fillMaxSize

import androidx.compose.foundation.layout.height

import androidx.compose.foundation.layout.padding

import androidx.compose.material3.Scaffold

import androidx.compose.material3.Text

import androidx.compose.runtime.Composable

import androidx.compose.ui.Alignment

import androidx.compose.ui.Modifier

import androidx.compose.ui.tooling.preview.Preview

import androidx.compose.ui.unit.dp

import com.example.dwelling.ui.theme.DwellingTheme

open class Dwelling(val resident:Int){

    open val buildingMaterial:String = "Genericmateril"

    open val capacity:Int =0

    fun hasRoom():Boolean{return resident<capacity}

    open fun description():String{

        return "This is dwelling is made of $buildingMaterial and has space for $capacity"

    }

}

class roundhut(resident: Int):Dwelling(resident){

    override val buildingMaterial: String = "straw"

    override val capacity: Int = 4

    fun floorArea(radius:Double):Double{

        return Math.PI*radius*radius

    }

    override fun description(): String {

        return "This is roundhut is made of $buildingMaterial and has space for $capacity"

    }

}

class squareCabin(resident: Int):Dwelling(resident){

    override val buildingMaterial: String = "wood"

    override val capacity: Int = 6

    fun floorArea(length:Double):Double{

        return length*length

    }

    override fun description(): String {

        return "This is squareCabin is made of $buildingMaterial and has space for $capacity"

    }

}

class roundtower(resident: Int,val floors:Int):Dwelling(resident){

    override val buildingMaterial: String = "wood"

    override val capacity: Int = 4 * floors

    fun floorArea(radius:Double):Double{

        return Math.PI*radius*radius*floors

    }

    override fun description(): String {

        return "This is roundtower is made of $buildingMaterial and has space for $capacity"

    }

}

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        enableEdgeToEdge()

        setContent {

            DwellingApp()

        }

    }

}

@Composable

fun DwellingApp(){

    val hut = roundhut(3)

    val cabin = squareCabin(5)

    val tower = roundtower(4,3)

    Column(modifier = Modifier.fillMaxSize().padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) {

        Text(text=hut.description())

        Spacer(modifier = Modifier.height(8.dp))

        Text(text="FloorArea:${hut.floorArea(4.5)}")

        Spacer(modifier = Modifier.height(8.dp))

        Text(text=cabin.description())

        Spacer(modifier = Modifier.height(8.dp))

        Text(text="FloorArea:${cabin.floorArea(4.5)}")

        Spacer(modifier = Modifier.height(8.dp))

        Text(text=tower.description())

        Spacer(modifier = Modifier.height(8.dp))

        Text(text="FloorArea:${tower.floorArea(4.5)}")

        Spacer(modifier = Modifier.height(8.dp))

    }

}
content_copyCOPY