MarcelDeLuX Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 Hallo... Über die Suche habe ich leider nichts zu diesem Thema gefunden, deshalb hier mein Anliegen: Wir haben in der Schule die Aufgabe bekommen einen Taschenrechner mit Klassen in VB6 zu erstellen. Ich kann mir darunter aber absolut nicht vorstellen, wie ich einen Taschenrechner mit Klassen, Instanzen, etc. erstellen soll... Kann mir da vielleicht jemand ne kurze Hilfestellung zu geben, was für Klassen da erstellt werden müssten und was die Instanzen, deren Attribute und Methoden tun sollen?... Danke Gruß Marcel Zitieren
bigredeyes Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 class taschenrechner { private int summe = 0; public int addieren(int zahl){ summer = summer+zahl; return summe; } ... public void R(){ summe = 0; } } mal ein kleiner anfang! bigredeyes Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 class taschenrechner { private int summe = 0; public int addieren(int zahl){ summer = summer+zahl; return summe; } ... public void R(){ summe = 0; } } [/PHP] ok, und jetzt nochmal für Beginners Zitieren
speedi Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 class taschenrechner { private int summe = 0; public int addieren(int zahl){ summer = summer+zahl; return summe; } ... public void R(){ summe = 0; } } bigredeyes Ähm kann es sein das du gerade etwas durcheinander bringst bigredeyes? Das was du gepostet hast sieht mir verdammt nach JAVA aus und hat mit VB6 recht wenig zu tun. Nun zum eigentlichen Problem: Du sollst einen Objektorientierten Taschenrechner basteln??? Mit VB6??? Bringt mich gerade voll raus denn ich hab auch mal ne Zeit lang VB6 programmiert und von Objektorientierung in dem Sinn was man darunter versteht ist mir nichts aufgefallen. Oder meint dein Lehrer vielleicht du sollst was mit graphischer Benutzeroberfläche machen? Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 Hier der genaue Wortlaut der Projektaufgabe: Objektorienter Taschenrechner Klasse CRechner Methoden -------- - Addieren - Subtrahieren - Multiplizieren - Dividieren Eigenschaften ------------- - Gehäusefarbe - Displayfarbe - Überschrift Ereignis -------- - Fehler (wenn ein Rechenfehler auftritt, z. B. Überlauf oder Division durch 0) Zitieren
bigredeyes Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 code ist als pseudocode zu verstehen. was ich mein: wenn mann OO macht, dann hat man klassen. diese klassen haben variablen und methoden mit bestimmter sichtbarkeit. die typdeklaration wird er in vb hoffentlich wissen. aber bei google kommt bei klassen und vb6 auch nichts gescheites raus. macht ihr vielleicht vb.net? bigredeyes Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 macht ihr vielleicht vb.net Definitv NEIN! Es ist VB6... ich verstehe nur nicht, was an einem Taschenrechner mit Klassen gemacht werden soll und wie diese Aussehn könnten Zitieren
bigredeyes Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 na is dock klar. eine klasse stellt verschiedene methoden (addieren, subtrahieren, dividieren, multiplizieren) und hat verschiedene eigenschaften (displayfarbe, rechnerfarbe, überschrift). wenn du den calculator in windows dir anschaust (nicht auf wissenschaftlich stellen ), dann kann man ja erahnen, dass auf knopfdruck immer verschieden methoden aufgerufen werden. für den +-button die add(), usw. und die add-methode kriegt als paramerter die zahl aus dem textfeld. rückgabewert ist die neue summe. anhaltspunkt genug? bigredeyes Zitieren
Wolle Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 So könnte z.B. eine Klasse aussehen. Die Klasse hat in dem Beispiel nur die Methode addieren und ist natürlich beliebig erweiterbar. Option Explicit Private mvarZahl1 As Double Private mvarZahl2 As Double Private mvarErgebnis As Double Public Sub addieren() mvarErgebnis = mvarZahl1 + mvarZahl2 End Sub Public Property Let Ergebnis(ByVal vData As Double) mvarErgebnis = vData End Property Public Property Get Ergebnis() As Double Ergebnis = mvarErgebnis End Property Public Property Let Zahl2(ByVal vData As Double) mvarZahl2 = vData End Property Public Property Get Zahl2() As Double Zahl2 = mvarZahl2 End Property Public Property Let Zahl1(ByVal vData As Double) mvarZahl1 = vData End Property Public Property Get Zahl1() As Double Zahl1 = mvarZahl1 End Property [/PHP] Ich hoffe das hilft dir als kleiner Ansatz. Das Grundgerüst läßt sich recht leicht im Klassengenerator zusammen klicken Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 Das Grundgerüst läßt sich recht leicht im Klassengenerator zusammen klicken Wusste garned dass es sowas gibt :bimei Hab die Klasse jetzt soweit fertig... Zu den Instanzen: Was muss ich denn da jetzt angeben um eine Instanz mit entsprechender Rechnungsart zu erzeugen? Private Sub bt_division_Click() Dim iDivision As New CRechner ... End Sub Zitieren
Wolle Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 Kommt darauf an, wie du die Klasse aufgebaut hast. Bei meinem Beispiel oben wäre es z.B.: Private Sub bt_division_Click() Dim iDivision As New CRechner iDivision.Zahl1=txtZahl1.Text iDivision.Zahl2=txtZahl2.Text iDivision.addieren txtErgebnis.Text=iDivision.Ergebnis End Sub [/php] Das ganze solltest du dann noch Ergänzen um Falscheingaben abzufangen usw... Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 iDivision.Zahl1=txtZahl1.Text iDivision.Zahl2=txtZahl2.Text[/PHP] was ist denn bei dir txtZahl1.Text bzw. txtZahl2.Text? Ich habe ein Textfeld wo ich die zu berechnenden Zahlen eingebe, muss ich also statt txtZahl1.Text dann: [PHP]iDivision.Zahl1=Text1.Text eingeben? Zitieren
Wolle Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 was ist denn bei dir txtZahl1.Text bzw. txtZahl2.Text? Ich habe ein Textfeld wo ich die zu berechnenden Zahlen eingebe, muss ich also statt txtZahl1.Text dann: iDivision.Zahl1=Text1.Text eingeben? Ja, genau. Das sind bei mir auch einfach Textfelder. Ich habe die nur so benannt, damit man weiß, was was ist. Das "txt" stelle ich persönlich immer bei Textfeldern im Namen vorne dran, damit ich im Quelltext gleich sehe das das Textfelder und keine Variablen sind. Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 Dann brauche ich 3 Textfelder? Also txtZahl1, txtZahl2 und txtErgebniss??? Zitieren
Wolle Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 Im Prinzip kannst du auch alles in einem machen, war ja nur ein Beispiel. Du könntest z.B. eine globale Variable "Operation" deklarieren. In der Speicherst du was gerechnet werden soll. Beim Klick auf einen "+" Button Schreibst du den Inhalt des Textfeldes in iDivision.Zahl1 und setzt die globale Variable z.B. auf 1. Beim Klick auf einen "="-Button Schreibst du den Wert des Textfeldes in iDivision.Zahl2. If Operation=1 then iDivision.Addieren if Operation=2 then iDivision.Multiplizieren [...] [/php] So kannst du dann die jeweilige Rechenoperation ausführen und dannach iDivision.Ergebnis wieder in das Textfeld schreiben. Mit nur einem Textfeld ist es halt etwas aufwändiger Falscheingaben abzufangen Zitieren
MarcelDeLuX Geschrieben 8. Juni 2005 Autor Geschrieben 8. Juni 2005 Ich habs jetzt mit ner Select Case anweisung gemacht, d.h. wenn man auf einen button klickt, wird Rechnungsart (z.B. bei division) auf 4 gesetzt. und dann passiert folgendes wenn man auf "=" klickt: Private Sub bt_ergebniss_Click() iRechnung.Zahl2 = Me.Text1.Text Select Case Rechnungsart Case 1 iRechnung.Addieren Case 2 iRechnung.subtrahieren Case 3 iRechnung.multiplizieren Case 4 iRechnung.dividieren End Select Me.Text1.Text = iRechnung.Ergebnis Rechnungsart = 0 End Sub[/PHP] Vielen Danke für die Super hilfe!!! Zitieren
MarcelDeLuX Geschrieben 13. Juni 2005 Autor Geschrieben 13. Juni 2005 next Problem: Habe jetzt ein extra Form hinzugefügt worüber ich die Eigenschaften des 1. Forms steuern möchte (also Displayfarbe, Gehäusefarbe und Caption). Dies soll auch über die Klasse, bzw. der erstellten Instanz gemacht werden. Da ich die Instanz aber im 1. Form erstelle kann ich über das 2. Form nicht darauf zugreifen. Jetzt war meine Idee, die Instanz in einem zusätzlichen Modul zu erstellen um von da aus global auf die Eigenschaften und Methoden zuzugreifen. Wie stell ich das an? Wenn ich in diesem Modul die Instanz erstelle, zeigt er mir keinerlei Eigenschaften/Methoden in den Forms.... Zitieren
Wolle Geschrieben 15. Juni 2005 Geschrieben 15. Juni 2005 Wie stell ich das an? Wenn ich in diesem Modul die Instanz erstelle, zeigt er mir keinerlei Eigenschaften/Methoden in den Forms.... Uhh... Da ich normalerweise mit Datenbanken arbeite, speichere ich solche Sachen entweder da, oder in Ausnahmefällen in der Registry. Ich hab aber gerade das gefunden: Möchten Sie globale Variable auf diese Weise verwenden, können Sie sich sogar die Dimensionierung, die Instanzierung und sogar die Verwendung des Klassennamens bei Setzen und Abfragen der Eigenschaften ersparen. Hierfür legen Sie ein ActiveX DLL-Projekt an, geben dem standardmäßig zur Verfügung gestellten Klassenmodul einen entsprechenden Namen (etwa "clsGlobaleVariable") und setzen ihre Eigenschaft Instancing im Eigenschaftenfenster auf "6 - GlobalMultiUse". http://www.microsoft.com/germany/msdn/library/visualtools/vb6/VariableInVB60VerwendenDerenNamenAlsZeichenkettenBekanntSind.mspx Ich habs nicht selber getestet, aber vielleicht hilft dir das weiter. PS: Sorry, hatte deinen Post nicht gesehen. Ins VB-Forum schau ich nicht ganz so oft Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.