Lösung zur Übungsaufgabe „Get the BASICs, Visual Basic für Einsteiger und Umsteiger“, Teil 4

Aufgabe

Programmieren Sie eine Klasse "Rechteck"

  • welche die Höhe und Breite eines Rechtecks (als Integer) verwaltet.
  • Implementieren Sie mehrere Konstruktoren.
    • "Leeres" Rechteck initialisieren
    • "Quadrat" initialisieren
    • "Rechteck" mit Breite und Höhe initialisieren
  • Schreiben Sie Properties für Breite und Höhe.
  • Schreiben Sie eine Methode "Zeichnen" welche das Rechteck mit Console.WriteLine() darstellt.

Lösung

Option Strict On

Option Explicit On

Module Module1

    Sub Main()

     Dim meinRechteck As New Rechteck

        meinRechteck.Hoehe = 5

        meinRechteck.Breite = 3

        ' Rechteck zeichnen

        meinRechteck.Zeichnen()

        ' Leerzeichen als Trenner ausgeben

        Console.WriteLine()

        Console.WriteLine()

        Dim meinZweitesRechteck As New Rechteck(9, 4)

        ' Rechteck zeichnen

        meinZweitesRechteck.Zeichnen()

        ' Leerzeichen als Trenner ausgeben

        Console.WriteLine()

        Console.WriteLine()

        Dim meinQuadrat As New Rechteck(5)

        ' Quadrat zeichnen

        meinQuadrat.Zeichnen()

        ' Leerzeichen als Trenner ausgeben

        Console.WriteLine()

        Console.WriteLine()

    End Sub

    Public Class Rechteck

#Region "Private Variablen"

        Private _breite As Integer

        Private _hoehe As Integer

#End Region

#Region "Konstruktoren"

        Public Sub New()

            _breite = 0

            _hoehe = 0

        End Sub

        Public Sub New(ByVal Breite As Integer, ByVal Hoehe As Integer)

            _breite = Breite

            _hoehe = Hoehe

        End Sub

        Public Sub New(ByVal Seitenlaenge As Integer)

            _breite = Seitenlaenge

            _hoehe = Seitenlaenge

        End Sub

#End Region

#Region "Properties"

        Public Property Breite() As Integer

            Get

                Return _breite

            End Get

            Set(ByVal value As Integer)

                If value >= 0 Then

                    ' es düften keine negativen Werte für

                    ' die Breite eingegeben werden

                    _breite = value

                End If

            End Set

        End Property

        Public Property Hoehe() As Integer

            Get

                Return _hoehe

            End Get

            Set(ByVal value As Integer)

                If value >= 0 Then

                    ' es düften keine negativen Werte für

                    ' die Höhe eingegeben werden

                    _hoehe = value

                End If

            End Set

        End Property

#End Region

#Region "Methoden"

        ''' <summary>

        ''' Zeichnet das Rechteck.

        ''' </summary>

        ''' <remarks></remarks>

        Public Sub Zeichnen()

            ' Warnung ausgeben, wenn die Kantenlänge 0 ist

            If _hoehe = 0 OrElse _breite = 0 Then

                Console.WriteLine("Ein Rechteck mit einer Kantenlänge von 0 kann nicht gezeichnet werden.")

                ' Rechteck kann nicht gezeichnet werden

                ' --> die Methode Zeichnen beenden

                Return

            End If

            ' Schleife für die Höhe des Rechtecks

            ' _hoehe - 1 --> da die Schleife von 0 zu zählen beginnt

            For j As Integer = 0 To _hoehe - 1

                ' Schleife für die Breite des Rechtecks

                ' _breite - 1 --> da die Schleife von 0 zu zählen beginnt

                For i As Integer = 0 To _breite - 1

                    If j = 0 OrElse j = _hoehe - 1 OrElse i = 0 OrElse i = _breite - 1 Then

                        ' hier werden die Rände des Rechtecks gezeichnet

                        Console.Write("*")

                    Else

                        ' hier das Innere des Rechtecks

                        Console.Write(" ")

                    End If

                Next ' Ende von i

                ' eine neue Zeile für die nächste

                ' Zeile des Quadrats ausgeben

                Console.WriteLine()

            Next    ' Ende von j

        End Sub

#End Region

    End Class

End Module