LTD
frecher fratz
|
morgähn!
also ich hab gerade angefangen mir programmieren mit klassen und objekten zu lernen ... schlagt mich nicht aber ich versuchs im vb.net.
jetzt hab ich das problem, dass ich zwar in ner klasse einem objekt einen wert zuweisen kann zb. "hallo", jedoch kann ich dem objekt nicht den inhalt einer textbox übergeben. zudem stellt sich mir die frage, wieso eine direkte zuweisung an ein objekt von einer zuweisung an ein objekt innerhalb einer klasse übergangen wird sprich - wenn ich in einer klasse einem objekt sage es soll "hallo" sein, und ausserhalb sage es soll "mukuh" sein, kommt stets halle. gebe ich jedoch die zuweisung ausserhalb der klasse ganz weg, so bekomme ich eine fehlermeldung dass das objekt nicht vorhanden ist... ich hoffe das versteht jetzt wer!
achja - wie kann ich in einer klasse auf ein objekt zugreifen um zb. eine funktion damit durchzuführen? - ich kann zwar eine eigene funktion ausführen, jedoch nicht an das objekt übergeben usw. - tut mir leid wenn ich da jetzt viel frage, aber ich finde partout keine antworten darauf!
hoffe es kann mir wer helfen. falls wer eine einführung in das thema programmieren mit klassen hat, wäre ich auch sehr verbunden!
thx a lot
|
ica
hmm
|
ööhm, bitte um beispielcode so versteh ich nur bahnhof.
du hast in einer klasse ein objekt - sprich eine membervariable mit typ x. dann kannst du einfach mit objektname.methodenname() darauf zugreifen. und du willst ne funktion an das objekt übergeben? bist du dir da auch wirklich sicher?
|
LTD
frecher fratz
|
ahm ok ... ich kann inzwischen "zuweisen" - allerdings weiß ich nicht, ob ich das richtig mach.
das steht in meiner klasse:
Public Class News
Private m_News As String
Public Property News() As String
Get
Return m_News
End Get
Set(ByVal value As String)
m_News = value
End Set
End Property
Function calc(ByVal txtinput As String, ByVal txt2input As String, ByVal txt As String) As String
txt = "haha es geht!"
calc = txtinput & txt2input & txt
Return calc
End Function
End Class
das in der form klasse:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim txtInput As String Dim txt2Input As String Dim txt As String Dim objNews As News
txtInput = txt1.Text txt2Input = txt2.Text
objNews = New News
objNews.News = objNews.calc(txtInput, txt2Input, txt)
MsgBox(objNews.News)
objNews = Nothing
End Sub
-------------------------------------------------------------------
nun würde ich gerne calc(txtinput) ausgeben - wie mach ich das? sobald ich txt oder txt2input lösche, gehts nichtmehr. und noch was - wieso muss ich objnews.news überhaupt ewas zuweisen - sprich wieso kann cih die zeile nicht weggeben und bei msgbox(objnews.calc(ixtinput)) schreiben? und warum kann ich nicht in der set anweisung m_news nicht gleich calc als wert übergeben? ... soviel fragen, sowenig wissen *g*
|
ica
hmm
|
also du hast die methode calc nunmal mit 3 paramtern definiert, daher musst du natürlich auch 3 paramter übergeben. wenn du calc nur 1nen parameter übergeben willst müsstest du das umschreiben, was aber sinnlos wäre, denn dann übergibst du der methode einen parameter nur damit diese dir den dann wieder zurückliefert... wenn du nur txtinput ausgeben willst sollte ein MsgBox(txtInput) reichen. hast du den sinn von set und get verstanden? glaube nicht  also ich hab jetzt keinen link...aber ich glaub du solltest wirklich mal die grundlagen der objektorientierten programmierung ansehen, so wird das nix
|
LTD
frecher fratz
|
also get is dazu dass er überhaupt was erstellt oda und set gibt dem dann einen wert rein ich habs mir durchgelesen aber ehrlich, ich kapiers nit wirklich  was genau macht denn set und get?
|
LTD
frecher fratz
|
ajo jetzt weiß ich wozu GET is rofl... damit kann ich etwas auslesen/zuweisen und zurückgeben...
|
ica
hmm
|
schau, du hast eine klasse. in dieser klasse hast du die möglichkeit variablen zu erstellen die natürlich von jedem x beliebigen typ sein können. variablen die in einer klasse definiert sind nennt man membervariablen. da man auf diese membervariablen von außen normalerweise keinen zugriff haben sollte (stichwort public, private, protected usw. -> kapselung) schreibt man getters und setters. mit get liest du also den wert aus, und mit set setzt du ihn. diese set und get methoden musst du natürlich (vorausgesetzt es besteht der bedarf) für jede membervariable neu schreiben.
|
LTD
frecher fratz
|
rofl danke, ich bin grad draufgekommen, dass ich nen denkfehler hatte anstatt IN der klasse variablen aufzurufen um damit zu arbeiten, muss ich einer klasse PER aufruf gleich variablen übergeben um einen return wert zu bekommen  jetzt hauts endlich hin rofl, muss ma mal draufkommen!
|
ica
hmm
|
einer klasse kann man keine variablen übergeben. eine klasse ist nichts weiter als eine beschreibung wie dein objekt später aussehen soll.
du kannst aus dieser klasse dann ein objekt erstellen. aber auch einem objekt übergibt man keine variablen, sondern einer methode (funktion, wird aber bei klassen eigentlich als methode bezeichnet) kannst du variablen übergeben. eine methode kann einen return wert haben, nicht eine klasse und nicht ein objekt.
|
LTD
frecher fratz
|
jo also dann halt einer funktion übergeben - die rechnet mir was aus und gibt ein objekt zurück ... stimmt das so?
btw. was muss i jetzt tun wenn ich zb. ein textfile ausgeben will. eine neue klasse erstellen, oder direkt in diese klasse einbetten?
|
ica
hmm
|
wie bzw. wo willst du es ausgeben? in ner msg box? wo kriegst du es her etc..
du machst so ziemlich das schlimmste was man überhaupt machen kann -> du fängst gleich mit buttons, textfeldern usw. an hast aber noch keinen tau von den grundlagen.
vergiss das ganze windows gui zeugs und schreib mal ein paar klassen um das objektorientierte konzept zu verstehen. vererbung, kapselung, polymorphismus usw...
dazu reichen simple consolenprogramme aus, glaub mir du hast mehr davon...
|
LTD
frecher fratz
|
wenn ich es lernen wollte, würde ich consolen anwendungen schreiben glaub mir. ich schreib das programm nicht für mich sondern für ne person die keinen plan von ner console hat - darum auch visual basic und nicht c++.
wie kann ich nen string oder char zb. 5x oder so ausgeben?
|
ica
hmm
|
wo ausgeben? in nem textfeld, in ner message box, in nem listenfeld...
und willst du 5x ausgeben oder den string 5 mal ausgeben? bei 5 mal müsstest ne schleife machen, falls du das meinst.
|
LTD
frecher fratz
|
ahm es reicht wenn ich nen string mache, in dem zb. 5x a (aaaaa) vorkommt
das ging ja irgendwie mit string("a", 5) oder so?
ich muss nämlich einen file komplett löschen und das geht nicht wenn der neue file kürzer als der alte is
Bearbeitet von LTD am 30.06.2005, 18:10
|
ica
hmm
|
keine ahnung, das ist vb spezifisch, und ich kann kein vb aber du könntest immer noch ne schleife machen in der du einfach einen buchstaben an einen bestehenden string anhängst bsp: string meinstring = ""; for(iterator = 0; iterator < 5; iterator++) meinstring += "a"; so in der art, oder meinstring.add("a") oder wie man es auch immer in vb macht...glaub in deinen vorigen code hast ein & verwendet. edit: sag mal konkret was dein programm machen soll bitte
|