House Learn programming Visual Basic (VB.net)

Lesson:

OOP More On Classes


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

Juan A. Ripoll - Systems Tutorials and Programming Courses ©  All rights reserved.  Legal Conditions.