WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.12.2002, 08:12   #1
tabi
Veteran
 
Registriert seit: 19.01.2002
Beiträge: 250


Standard Klassen und Objekte

Kann mir bitte jemand anhand eines logischen beispiels den Unterschied zwischen klassen und objekten erklären. es irritiert mich volle. verstehe den sinn nicht, warum man objekte erzeugen muss. danke im voraus.

cu.
tabi ist offline   Mit Zitat antworten
Alt 03.12.2002, 10:25   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

zb datentransfer

besteht zumindest aus einem head, dateninformation, crc und tail

du teilst ein deine zu übertragende daten in pakete (indem fall deine objekt)

willst du für jedes einzelne teilpaket dauernd was neues definieren? i glaub ned


so sagst einfach neues_paket=new paket_klasse();
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 03.12.2002, 10:36   #3
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

eine klasse ist der bauplan für ein objekt

sprich du definierst in der klasse, welche eigenschaften notwendig sind, jedes objekt dieser klasse besitzt genau diese, wie ein bauplan eben.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 03.12.2002, 11:44   #4
tabi
Veteran
 
Registriert seit: 19.01.2002
Beiträge: 250


Standard

also wenn die klasse wie ein bauplan sein sollte, dann ist das objekt ein produkt von der klasse, der durch die anweisungen und den feldern der klasse produktiv ist. oder bin ich da falsch? aber die klasse kann ja auch ausgeführt werden, ohne ein objekt zu erzeugen oder? schon ziehmlich kompliziert!!! ;-((
tabi ist offline   Mit Zitat antworten
Alt 03.12.2002, 12:00   #5
wizo
Inventar
 
Registriert seit: 13.12.1999
Alter: 43
Beiträge: 2.929


wizo eine Nachricht über ICQ schicken
Standard

wie führst du eine klasse aus ??
du hast entweder einen konstruktor der dir ein objekt erzeugt oder
statische methoden in der klasse die du auch ohne objekt erzeugung aufrufen kannst
____________________________________
//---< wizo >---\\\\
wizo ist offline   Mit Zitat antworten
Alt 03.12.2002, 12:09   #6
tabi
Veteran
 
Registriert seit: 19.01.2002
Beiträge: 250


Standard

hab mit klassen ausführen die statischen methoden gemeint!!!! wenn wir schon bei den konstruktoren sind, kann mir jemand auch dieses erklären bitte! programmieren lernen ist doch nicht so einfach, wie ich es mir vorgestellt habe!!!
tabi ist offline   Mit Zitat antworten
Alt 03.12.2002, 13:14   #7
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Nehmen wir als einfaches Beispiel eine Klasse die Punkt in einem rechtwinkeligen Koordinatensystem beschreiben kann. Um einen solchen Punkt eindeutig festzulegen benötigt man einen Wert für die Achse X für und einen Wert für die Achse Y. Unsere Klasse sollte also zwei Members enthalten die ich jetzt einfach mal mAX und mAY nenne und als Integer definiere. Unter VB könnte man jetzt also ein Klassenmodul Punkt erstellen und in den Deklarationen folgendes schreiben:

public mAX as integer
public mAY as integer

Ich habe damit also so eine Art Bauplan für Punkte die über zwei Werte festgelegt werden erstellt. Dieser Bauplan beschreibt wie so ein Punkt aussehen kann, gibt mir aber keinen bestimmten an. Um einen Punkt zu bestimmen müssen wir also ein Objekt nach diesem Bauplan erstellen.

dim P as Punkt
set P = new Punkt

Ich habe jetzt also ein Objekt das einen Punkt eindeutig bestimmen könnte aber das tut es noch nicht weil mAX und mAY noch keine Werte enthalten. Da wird diese beiden Members Public definiert haben, können wir sie von aussen ändern. Zum Beispiel könnten wir also sagen:

P.mAX = 2
P.mAY = 5

Eigentlich wäre es aber doch schön wenn ein Punkt schon beim Erzeugen Werte besitzen würde. Er könnte dann zum Beispiel am Ursprung liegen, also am Punkt 0, 0. Dazu haben Klassen unter VB ein Initialize-Ereignis das beim Erzeugen eines neuen Objekts (=New) auftritt.

Private Sub Class_Initialize()
mAX = 0
mAY = 0
End Sub

Eigentlich schon ganz ordentlich. Es könnte jetzt aber sein, dass wir nur Punkte im ersten Quadranten und damit nur postive Werte für mAX und mAY zulassen wollen. Wie können wir jetzt den Benutzer davon abhalten die Werte negativ zu setzen? Dafür deklarieren wir mAX und mAY Private statt Public. Dadurch können sie dann nur mehr von innerhalb der Klasse geändert werden. Von ausserhalb der Klasse sind sie nicht einmal mehr sichtbar womit also zum Beispiel A = P.mAX nicht mehr funktionieren würde.
Um die Werte jetzt noch sehen oder ändern zu können brauchen wir jetzt Properties (Eigenschaften). Zum Beispiel könnte das so aussehen.

Property Get AX
AX = mAX
End Property

Property Set AX
if AX >= 0 then
mAX = AX
else
mAX = 0
end if
End Property

Property Get AY
AY = mAY
End Property

Property Set AY
if AY >= 0 then
mAY = AY
else
mAY = 0
end if
End Property

Damit würde jetzt A = P.AX wieder einen Sinn ergeben.
Um unseren Punkt jetzt noch zu perfektionieren könnten wir ihm zum Beispiel beibringen sich mit einem Kommando in X- und Y- Richtung verschieben zu lassen. Dazu verwenden wir ein Sub das zum Beispiel so aussehen könnte:

Public Sub Move(X, Y)
AX = AX + X
if AX < 0 then
AX = 0
end if
AY = AY + Y
if AY < 0 then
AY = 0
end if
End Sub

Das wäre auch schon ganz annehmbar aber jetzt wissen wir nach einem Aufruf von Move nicht, ob wir zu kleine Werte erzeugt hätten oder ob der Punkt korrekt verschoben wurde. Dazu machen wir aus unserem Sub eine Function:

Public Function Move(X, Y) as Boolean
Move = True
AX = AX + X
if AX < 0 then
AX = 0
Move = False
end if
AY = AY + Y
if AY < 0 then
AY = 0
Move = False
end if
End Sub


Ich hoffe damit kannst was anfangen.


Wenn du dich genauer einlesen willst wirst du z.B. unter http://msdn.microsoft.com fündig.

Tip:
http://msdn.microsoft.com/library/de...ownclasses.asp
Seidl ist offline   Mit Zitat antworten
Alt 03.12.2002, 13:32   #8
tabi
Veteran
 
Registriert seit: 19.01.2002
Beiträge: 250


Standard

danke seidl für die ausführliche erklärung!! trotzdem hab ich es nicht vollständig nachvollziehen können, da ich versuche c# zu lernen! trotzdem thx.
tabi ist offline   Mit Zitat antworten
Alt 03.12.2002, 14:57   #9
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Na in dem Fall:

MSDN-Library

und im linken Frame folgendes wählen:

.NET Development / Visual Studio .NET / C# Seminars

Das dürfte doch recht informativ sein.

Im Prinzip ging es mir bei meinem Beispiel aber ohnehin nur ums Prinzip. Die Syntax mag sich zwar von Sprache zu Sprache ändern aber das Konzept bleibt immer das selbe genauso wie ein Punkt immer ein Punkt bleibt.
Seidl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:18 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag