Domino 9 und frühere Versionen > ND6: Entwicklung

eigene Klasse zeigt private Variablen

(1/2) > >>

bikerboy:
Hallo bin gerade ein bisschen verwirrt.

Habe ich doch in der Schule gelernt, dass ich auf Private Deklarierte Variablen keinen Zugriff habe.

Nun habe ich mal meine erste eigene Klasse geschrieben ( Versuche mal richtig zu programmieren und nicht immer nur Klassen zu benutzen), Habe einen Satz Öffentliche Variablen geschrieben und einen Private.


--- Code: ---' Functions which are public

' Variables which are Public and read only
Declare Public Property Get Comment As String
Declare Public Property Get Error As Boolean
Declare Public Property Get ErrorCode As String
Declare Public Property Get ErrorMessage As String
Declare Public Property Get Number As Integer
Declare Public Property Get RequestType As String
Declare Public Property Get State As String
Declare Public Property Get Status As String
Declare Public Property Get isReady As Boolean

' Variables which are only used by the object himself
Private docRequest As NotesDocument
Private docENDRARequest As NotesDocument

Private strComment As String ' comment
Private strErrorCode As String ' errorCode
Private strErrorMessage As String ' errorMessage
Private strRequestType As String ' type oh the request
Private strRequestState As String ' the state for tester, like 1 for waiting , 2 for active, 3 for ready
Private strRequestStatus As String ' the status of the request, like 50 waiting for adminP

Private intRequestNumber As Integer

Private bolError As Boolean
Private bolIsReady As Boolean

--- Ende Code ---

So , warum sehe ich nun im Debugger, die Privaten Variablen und nicht die Öffentlichen ? ???


Ahso habe auch diesen Block geschrieben


--- Code: --- ' this block sets the public information 4 the object
Public Property Get isReady  As Boolean
isReady = bolIsReady
End Property

Public Property Get Comment As String
Comment = strComment
End Property

Public Property Get ErrorCode As String
ErrorCode = strErrorCode
End Property

Public Property Get ErrorMessage As String
ErrorMessage = strErrorMessage
End Property

Public Property Get Number As Integer
Number = intRequestNumber
End Property

Public Property Get RequestType As String
RequestType = strRequestType
End Property

Public Property Get State As String
State = strRequestState
End Property

Public Property Get Status As String
Status = strRequestStatus
End Property

--- Ende Code ---

DerAndre:
Aus der Hilfe

Public and Private class members 

When you define a class, you can make members Public (so members can be referred to by statements outside the class definition) or Private (so members can be referred to only by properties and methods defined in that class). Member variables are Private by default; and properties, subs, and functions are Public by default.
It is good programming practice to keep class member variables Private, and to use Public properties and methods to manipulate the private data stored in member variables. Keeping member variables Private is often called data hiding or encapsulation because private data is hidden from subs and functions defined outside the class. Keeping properties and methods Public provides public access to the users of the class.

Desweiteren schau Dir mal die Property Get und Set Methoden an.
Nur mit Get kommst Du nicht weit... weil da steht noch nichts drin, die Variabelen müsse erst mir der Property Set Mehode gefüllt werden

Axel:

--- Zitat von: bikerboy am 01.08.08 - 12:03:10 ---Habe ich doch in der Schule gelernt, dass ich auf Private Deklarierte Variablen keinen Zugriff habe.

--- Ende Zitat ---

Warum solltest du auf private Variablen keinen Zugriff haben? Was genau hat man denn dir in der Schule gelernt?   ???

Private Variablen bedeutet, dass sie außerhalb des Moduls, Klasse usw. in der sie deklariert wurden nicht sichtbar sind. innerhalb aber schon.

Axel

bikerboy:

--- Zitat von: Axel am 01.08.08 - 12:27:02 ---
--- Zitat von: bikerboy am 01.08.08 - 12:03:10 ---Habe ich doch in der Schule gelernt, dass ich auf Private Deklarierte Variablen keinen Zugriff habe.

--- Ende Zitat ---

Private Variablen bedeutet, dass sie außerhalb des Moduls, Klasse usw. in der sie deklariert wurden nicht sichtbar sind. innerhalb aber schon.

Axel

--- Ende Zitat ---

Genau, ich habe sie Private Deklariert, heisst sie sollten nur auftauchen wenn ich mit dem Debugger innerhalb der Klasse unterwegs bin.

Wenn ich aber ausserhalb der Klasse bin, sollte das Object mir nicht die Privaten Variablen anzeigen.

koehlerbv:
Der Debugger zeigt an, was im Speicher ist. Aus diesem Grunde tickt er manchmal etwas anders als das, was dann tatsächlich zur Laufzeit passiert.
Dass der Debugger die Privates anzeigt, ist also vollkommen in Ordnung.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln