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