Hinweis: Verstehen Sie folgende Aufgaben als mögliche Bestandteile für die anstehende Klausur. Betrachten Sie die Lösungen nicht von vorne herein als richtig, sondern beantworten Sie nochmals die Fragen für sich selbst. Wie legt man eine neue Klasse an? Aufgaben zu OOP der Klasse FTI32 Entweder über den Menüpunkt Projekt => Klassenmodul erstellen oder mit Rechtsklick ins Projektfenster und dann Hinzufügen => Klassenmodul. Wie erstellt man eine neue Instanz? Eine Möglichkeit ist Private person1 as new personen bei dieser Instanz ist es nicht möglich eigene Events auszuführen. Eine andere und etwas längere Möglichkeit eine neue Klasseninstanz zu erstellen ist Private WithEvents Fahrrad1 As clsfahrrad WithEvents bedeutet das die neue Instanz eigene Events beinhalten kann. Und sie wird zugewiesen mit Private Sub Form_Load() Set Fahrrad1 = New clsfahrrad Was heißt Property? Eigenschaft Was heißt Event? Ereignis Was ist der Unterschied zwischen Property Let und Property Get? Bei Property Get wird eine Eigenschaft eingelesen und bei Property Let ausgelesen. Was ist der Unterschied zwischen einem Private Sub und einem Public Sub? Ein Private Sub ist nicht öffentlich. Es kann kein andres Sub auf dieses Sub zugreifen. Ein Public Sub ist für alle Subs frei zugänglich d.h. es ist öffentlich. Was ist eine Methode? Eine Methode bestimmt das Verhalten der Objekte. Sie beschreiben wie sich ein Objekt beim empfang von bestimmte Nachrichten zu verhalten hat. Methoden können Eigenschaften ändern. Frage1: Was bedeutet Private und was bedeutet Public auf modulebene -Private bedeutet, dass man die Variablen nur in diesen Modul verwenden kann. -Public bedeutet, dass man die Variablen in allen Vorhandenen Modulen verwenden kann
1. Beschreib den Quellcode in deinen eigenen Worten. Private Dtest As String Public Property Get Test () As String Test=Dtest Public Property Let Test (ByVal StrTest As String) Dtest = StrTest Lösung Als erstes wird "Dtest" als String deklariert und gilt nur für diese Klasse. In der schreibenden Eigenschaft wird "Dtest" der Wert von "StrTest" zugewiesen. In der lesenden Eigenschaft wird das Objekt "Test" den Wert der Variable "Dtest" übergeben. 2. Erkläre jedes Schlüsselwort der folgenden Zeile: Private Auto1 As New Auto Private = Das Objekt ist nur lokal in der Klasse gültig Auto1 = Ein neues Objekt mit dem Namen "Auto1" wird aus der Klasse "Auto" erstellt New = Speicherbereich für das Objekt wird freigegeben, so dass ein neues Objekt erstellt werden kann. Auto = Das Objekt wird in der Klasse "Auto" erstellt 3. Erkläre den Begriff "Klasse" Die Klasse ist der Bauplan eines Objektes. "Dieser Bauplan" enthält die Methoden und Eigenschaften eines Objektes. 4. Deklariere das Ereignis "GasGeben" in einer Klasse. Public Event GasGeben()
Aufgabenstellung: Ergänze die fehlenden Anweisungen um die Variablen zu speichern und abzurufen. Beim Abruf der Punktzahl soll das Event "GuteNote" ausgelöst werden, wenn die Punktzahl größer oder gleich 50 Punkten ist. (nur der Quelltext der Klasse ist zu beachten) Klassen-Quelltext von Klausur.cls: Private s_name Private s_punktzahl Public Event GuteNote() Public Property Let SchuelerName(ByVal str_sname As String) Public Property Get SchuelerName() As String Public Property Let Punktzahl(ByVal str_punktzahl As Integer) Public Property Get Punktzahl() As Integer
Private s_name Private s_punktzahl Public Event GuteNote() Public Property Let SchuelerName(ByVal str_sname As String) s_name = str_sname Public Property Get SchuelerName() As String SchuelerName = s_name Public Property Let Punktzahl(ByVal str_punktzahl As Integer) s_punktzahl = str_punktzahl Public Property Get Punktzahl() As Integer Punktzahl = s_punktzahl If s_punktzahl >= 50 Then RaiseEvent GuteNote End If
Erweitern Sie die vorgegebene Klasse um ein Event, dass bei der Eingabe des Textes "Spiegel" ausgelößt wird! Es soll eine MSGBOX mit dem Text "Mein Event" ausgegeben werden klasse.cls Private DText As String Public Property Get Text() As String Text = DText Public Property Let Text(ByVal strtext As String) DText = strtext Form.frm Private test1 As new klasse Private Sub Command1_Click().Text = Text1.Text Private Sub Command2_Click() Label1.Caption =.Text Private Sub Form_Load() klasse.cls Public Event Meinevent() Private DText As String Public Property Get Text() As String Text = DText Testen Public Property Let Text(ByVal strtext As String) DText = strtext
Private Sub Testen() If DText = "Spiegel" Then RaiseEvent Meinevent End If Form1.frn Private WithEvents test1 As Klasse Private Sub Command1_Click().Text = Text1.Text Private Sub Command2_Click() Label1.Caption =.Text Private Sub Form_Load() Set test1 = New Klasse Private Sub test1_meinevent() msgbox "Mein Event" Was geschied bei der Vererbung? Bei der Vererbung übernehmen die hierarchischen übergeordneten Code die Führung und die untergeordneten Code sind zweitrangig. Beschreibe die Kapselung beim OOP! Objekte müssen nicht mehr einzeln aufgerufen werden sondern Objekte können sich gegenseitig aufrufen bzw. aktivieren.