Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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?

Geschrieben

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)

Geschrieben

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

Geschrieben

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

Geschrieben

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 ;)

Geschrieben
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

Geschrieben

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...

Geschrieben

     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?

Geschrieben

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.

Geschrieben

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 ;)

Geschrieben

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!!!

Geschrieben

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....

Geschrieben

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 ;)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...