C# Exercise: 142 House

In this exercise, you need to create a class called "House" with an attribute called "area". The class should have a constructor to set the value of this attribute, as well as a method called "ShowData", which will display the message "I am a house, my area is 200 m2" (instead of 200, the actual area will be shown). Additionally, you should include getters and setters for accessing and modifying the house area.

The House class will also contain a door. Each door will have an attribute "color" (a string) and a method "ShowData", which will display the message "I am a door, my color is brown" (or whatever the actual color is). Like with the area, getters and setters should also be created for the door color. Moreover, you need to create a GetDoor method in the "House" class that will return the door.

The exercise also involves a subclass called "SmallApartment", which is a subclass of "House" with a preset area of 50 m2.

Additionally, you need to create a Person class, with a name (string) and a "House" property to store the person's house. The ShowData method for the "Person" class will display the person's name, the house data, and the door data of the house.

Finally, you need to write a Main method that creates a "SmallApartment", a person to live in it, and displays all the data about the person and their house.

 Exercise

House

 Objetive

Create a class "House", with an attribute "area", a constructor that sets its value and a method "ShowData" to display "I am a house, my area is 200 m2" (instead of 200, it will show the real surface). Include getters an setters for the area, too.

The "House" will contain a door. Each door will have an attribute "color" (a string), and a method "ShowData" wich will display "I am a door, my color is brown" (or whatever color it really is). Include a getter and a setter. Also, create a "GetDoor" in the house.

A "SmallApartment" is a subclass of House, with a preset area of 50 m2.

Also create a class Person, with a name (string). Each person will have a house. The method "ShowData" for a person will display his/her name, show the data of his/her house and the data of the door of that house.

Write a Main to create a SmallApartment, a person to live in it, and to show the data of the person.

 Example Code

// Import the System namespace for basic functionality
using System;

public class HouseAndPersonDemo
{
    // Define the Door class
    public class Door
    {
        // Private attribute to store the color of the door
        private string color;

        // Constructor to initialize the door's color
        public Door(string doorColor)
        {
            color = doorColor;
        }

        // Getter method to retrieve the color of the door
        public string GetColor()
        {
            return color;
        }

        // Setter method to set the color of the door
        public void SetColor(string doorColor)
        {
            color = doorColor;
        }

        // Method to show data about the door
        public void ShowData()
        {
            // Display the color of the door
            Console.WriteLine($"I am a door, my color is {color}");
        }
    }

    // Define the House class
    public class House
    {
        // Private attribute to store the area of the house
        private int area;

        // Private attribute to store the door of the house
        private Door door;

        // Constructor to initialize the house's area and create a door for the house
        public House(int houseArea, string doorColor)
        {
            area = houseArea;
            door = new Door(doorColor);  // Create a door with the given color
        }

        // Getter method to retrieve the area of the house
        public int GetArea()
        {
            return area;
        }

        // Setter method to set the area of the house
        public void SetArea(int houseArea)
        {
            area = houseArea;
        }

        // Method to show data about the house
        public void ShowData()
        {
            // Display the area of the house
            Console.WriteLine($"I am a house, my area is {area} m2");
        }

        // Method to get the door of the house
        public Door GetDoor()
        {
            return door;
        }
    }

    // Define the SmallApartment class, which is a subclass of House
    public class SmallApartment : House
    {
        // Constructor for SmallApartment, which automatically sets the area to 50 m2
        public SmallApartment(string doorColor) : base(50, doorColor) { }
    }

    // Define the Person class
    public class Person
    {
        // Private attribute to store the name of the person
        private string name;

        // Private attribute to store the house of the person
        private House house;

        // Constructor to initialize the person's name and house
        public Person(string personName, House personHouse)
        {
            name = personName;
            house = personHouse;
        }

        // Method to show data about the person and their house
        public void ShowData()
        {
            // Display the person's name
            Console.WriteLine($"My name is {name}");
            // Show data about the house
            house.ShowData();
            // Show data about the door of the house
            house.GetDoor().ShowData();
        }
    }

    // Define the Main method to test the program
    public static void Main()
    {
        // Create a SmallApartment with a door color of "brown"
        SmallApartment apartment = new SmallApartment("brown");

        // Create a person named "John" and assign them the small apartment
        Person person = new Person("John", apartment);

        // Show the data of the person, their house, and the door
        person.ShowData();
    }
}

More C# Exercises of OOP More On Classes

 Array of objects: table
Create a class named "Table". It must have a constructor, indicating the width and height of the board. It will have a method "ShowData" which will wr...
 Table + coffetable + array
Create a project named "Tables2", based on the "Tables" project. In it, create a class "CoffeeTable" that inherits from "Table". Its method "ShowDa...
 Encrypter & Decrypter
Create a class "Encrypter" to encrypt and decrypt text. It will have a "Encrypt" method, which will receive a string and return another string. It ...
 Complex numbers
A complex number has two parts: the real part and the imaginary part. In a number such as a+bi (2-3i, for example) the real part would be "a" (2) and ...
 Table + coffetable + leg
Extend the example of the tables and the coffee tables, to add a class "Leg" with a method "ShowData", which will write "I am a leg" and then it will ...
 Catalog
Create the classes diagram and then, using Visual Studio, a project and the corresponding classes for a catalog utility: It will be able to store i...
 Random number
Create a class RandomNumber, with three static methods: - GetFloat will return a number between 0 and 1 using the following algorithm: seed = (s...
 Text to HTML
Create a class "TextToHTML", which must be able to convert several texts entered by the user into a HTML sequence, like this one: Hola Soy yo Ya ...
 Class ScreenText
Create a class ScreenText, to display a certain text in specified screen coordinates. It must have a constructor which will receive X, Y and the strin...
 Enhanced ComplexNumber class
Improve the "ComplexNumber" class, so that it overloads the operators + and - to add and subtract numbers....
 3D point
Create a class "Point3D", to represent a point in 3-D space, with coordinates X, Y and Z. It must contain the following methods: MoveTo, which will...
 Catalog + Menu
Improve the Catalog program, so that "Main" displays a menu to allow entering new data of any kind, as well as displaying all the data stored....