[VB6]: iets van Class naar Class

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi

Ik heb 2 classes in Visual Basic. In de ene class ('Startwaarden') staan alle startwaarden voor een berekening die in een andere class ('Berekenen') worden uitgevoerd.

Probleem: Hoe kan ik vanuit de ene Class 'Berekenen' toegang krijgen tot de andere Class 'Startwaarden'?

Ik heb geprobeerd de class te dim'en in de hoofdform, en in de class zelf, maar bij beide manieren geeft hij aan dat het niet goed is.

Alvast bedankt voor een oplossing

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 17:16
Welke foutmelding krijg je? "Object or with block not set" ? Je moet een class altijd instantieren (Dim Var as Foo:Set Var=new Foo) want vb kent geen statiche classes.

Anders, declareer de klasse die waardes wil weten als friend in de class met waardes.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb 2 classes in Visual Basic. In de ene class ('Startwaarden') staan alle startwaarden voor een berekening die in een andere class ('Berekenen') worden uitgevoerd.

Ehhmm... Don't do this! Dit hoort in één class. (Dit is een goed voorbeeld van een brak ontwerp :))

Acties:
  • 0 Henk 'm!

Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 20 oktober 2000 12:14 schreef Arien het volgende:
Ik heb 2 classes in Visual Basic. In de ene class ('Startwaarden') staan alle startwaarden voor een berekening die in een andere class ('Berekenen') worden uitgevoerd.

Ehhmm... Don't do this! Dit hoort in één class. (Dit is een goed voorbeeld van een brak ontwerp :))[/quote]*LOL*
Ik stond op het punt dat te zeggen maar ik dacht: "Ik heb mijn quota ongezouten kritiek al gehad voor vandaag, laat ik me maar inhouden."

Acties:
  • 0 Henk 'm!

Verwijderd

Ik stond op het punt dat te zeggen maar ik dacht: "Ik heb mijn quota ongezouten kritiek al gehad voor vandaag, laat ik me maar inhouden."

Ging niet alleen daarom, maar waarom uitleggen hoe je een slecht ontwerp recht moet gaan zitten breien? Heeft niet zoveel zin.

$quota++; >:)

Acties:
  • 0 Henk 'm!

Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 20 oktober 2000 12:26 schreef MrX het volgende:
*LOL*
Ik stond op het punt dat te zeggen maar ik dacht: "Ik heb mijn quota ongezouten kritiek al gehad voor vandaag, laat ik me maar inhouden."[/quote]Dingen opkroppen lijd tot zinloos geweld is mijn idee altijd, heb je krietiek gooi 't er uit! (moet 't wel terrecht zijn natuurlijk)

--Ray

Acties:
  • 0 Henk 'm!

Verwijderd

maak van die startwaarden const definities in een module. zet die module in het project van de class waar de berekeningen moeten worden uitgevoerd. klaar.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 17:16
OOP programmeren dicteert dat je data en bijbehorende functies bij elkaar houdt. Dit is niet het geval als je deze in een andere module zet. Wel als je de startwaarden in de class module zet waar je ze gebruikt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat falane al de juiste oplossing heeft gegeven eigenlijk, hoewel ik inderdaad zou aanraden om de waarden en bijbehorende berekening in dezelfde class te zetten, da's niet echt OO, waar classes eigenlijk voor bedoeld zijn.

Een door mij geschreven beschijving van OO kan je vinden op gathering.tweakers.net/showtopic/51275.

Enjoy :)

Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 09-09 17:23
Wat zijn statische classes precies (misschien weet ik het wel, maar niet precies). Houd dat in dat je een classe kan gebruiken zonder eerst een instance daarvan te creeeren?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 17:16
Jij weet het precies wel.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 09-09 17:23
ok :)

Acties:
  • 0 Henk 'm!

Verwijderd

VB is niet OO, en OO zelf is een fuzzy term (verschillende definities). Constants in een module definieren is de manier hoe je dat doet in VB. Als je dat niet zint omdat het niet OO is, moet je niet VB gaan gebruiken maar Java of smalltalk. Gebruik VB zoals VB bedoeld is en niet anders. Constants in een module definieren kan heel handig zijn mbt reuse of code, handiger dan ze in een class te zetten en daar voor elke constante een read method voor maken.

Constants in een module definieren is in feite hetzelfde als constants in een .h definieren in C++. Het zijn nl. constantes en geen data elementen. het zijn re-defines van getallen en wellicht strings. Vandaar dat je die constante definities gewoon in een module file kunt plakken en die module bij je class kunt zetten zonder je schuldig te voelen of je toevallig iemands OOP definitietje overtreedt.

ALs je werkelijk OO bezig bent gebruik je een modelleringstechniek voor je classes (NIAM oid) en bouw je daarmee je classdefinities. geen HOND die dan nog dit soort discussies nodig heeft om er achter te komen hoe en wat.

Acties:
  • 0 Henk 'm!

Verwijderd

VB is niet OO, en OO zelf is een fuzzy term (verschillende definities).
Ook weer niet zo wazig dat basis idee als class, object, methods en fields van heel verschillende definities worden voorzien.

Constants in een module definieren is de manier hoe je dat doet in VB. Als je dat niet zint omdat het niet OO is, moet je niet VB gaan gebruiken maar Java of smalltalk.
Wie zegt dat startwaarden constant zijn? Dan ga je dus een programma schrijven om één ding één keer uit te rekenen? :?

Gebruik VB zoals VB bedoeld is en niet anders.
[off-topic]
Hoe is VB dan bedoeld vanuit een programmeer-oogpunt?
[/off-topic]

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 17:16
Otis, stel ik defineer in een class module het volgende:

Private Const nStartVal as Integer=100

Dan heb ik:

- Een startwaarde waar ik van buiten de class niet bij kan.
- Een startwaarde die niet in een 'normale' module staat.

Dit is dus ook een manier om het te doen. Ik met opzet een manier, want er is geen de manier. (btw Er is bijna nooit een _de_ manier.)

Waar ik het wel mee eens ben is dat de mogelijkheden van vb op oo gebied erg beperkt zijn. Als je perse oo wilt proggen kun je beter een andere taal nemen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Martin Sturm
  • Registratie: December 1999
  • Laatst online: 09-09 17:23
Nee, je moet gewoon wachten op VB.net. Daarin is de objectgeorienteerdheid van VB veel groter dan nu. Je krijgt dan (bija) alle mogelijkheden met objecten die ook in andere objecten mogelijk zijn. Inheritance, overloading en constructors zijn dan ook mogelijk. Dus het wordt ooit nog wel wat met VB.
Bovendien wordt de error afvhandeling beter/makkelijker.

Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:55

Crazy D

I think we should take a look.

je kan ook gewoon properties aan je class hangen waarin de startwaarden gezet worden. Is het toch nog een beetje OO ;) (hoewel VB OO-er is dan de meesten denken...)

Exact expert nodig?

Pagina: 1