"We are back" « oc.at

vb.net & klassen - wie textbox inhalt einem objekt zuweisen?

LeadToDeath 30.06.2005 - 12:20 4306 15
Posts

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
öö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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
ajo jetzt weiß ich wozu GET is rofl... damit kann ich etwas auslesen/zuweisen und zurückgeben...

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
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
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9833
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 ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz