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.
Code
Imports System
Namespace Houses
Class House
Protected area As Integer
Protected door As Door
Public Sub New(ByVal area As Integer)
Me.area = area
door = New Door()
End Sub
Public Property Area As Integer
Get
Return area
End Get
Set(ByVal value As Integer)
area = value
End Set
End Property
Public Property Door As Door
Get
Return door
End Get
Set(ByVal value As Door)
door = value
End Set
End Property
Public Overridable Sub ShowData()
Console.WriteLine("I am a house, my area is {0} m2.", area)
End Sub
End Class
Class Door
Protected color As String
Public Sub New()
color = "Brown"
End Sub
Public Sub New(ByVal color As String)
Me.color = color
End Sub
Public Property Color As String
Get
Return color
End Get
Set(ByVal value As String)
color = value
End Set
End Property
Public Sub ShowData()
Console.WriteLine("I am a door, my color is {0}.", color)
End Sub
End Class
Class SmallApartment
Inherits House
Public Sub New()
MyBase.New(50)
End Sub
Public Overrides Sub ShowData()
Console.WriteLine("I am an apartment, my area is " & area & " m2")
End Sub
End Class
Class Person
Protected name As String
Protected house As House
Public Sub New()
name = "Juan"
house = New House(150)
End Sub
Public Sub New(ByVal name As String, ByVal house As House)
Me.name = name
Me.house = house
End Sub
Public Property Name As String
Get
Return name
End Get
Set(ByVal value As String)
name = value
End Set
End Property
Public Property House As House
Get
Return house
End Get
Set(ByVal value As House)
house = value
End Set
End Property
Public Sub ShowData()
Console.WriteLine("My name is {0}.", name)
house.ShowData()
house.Door.ShowData()
End Sub
End Class
Class TestHouse
Private Shared Sub Main()
Dim debug As Boolean = True
Dim mySmallApartament As SmallApartment = New SmallApartment()
Dim myPerson As Person = New Person()
myPerson.Name = "Juan"
myPerson.House = mySmallApartament
myPerson.ShowData()
If debug Then Console.ReadLine()
End Sub
End Class
End Namespace