[VB] Classes

Pagina: 1
Acties:

  • D-RiSe
  • Registratie: September 2000
  • Laatst online: 19-03 19:37

D-RiSe

Kick the baby

Topicstarter
Is het in VB mogelijk om Classes van een andere Class af te leiden?

oftwel class A extends B

intel silver reef, celly 2.0 Ghz, 256mb ddr, G2MX


Verwijderd

Nee.

VB ondersteunt alleen encapsulation (aggregation in COM termen): dit omdat een 'class' in VB eigenlijk als een COM object wordt gezien. Je moet dus een class A maken met bepaalde functionaliteit en die als private membervar opnemen in een andere class B, die meer functionaliteit dan A in zich heeft en voor de functionaliteit van A ook A raadpleegt. B moet je alle methods van A geven en die dus doorlussen met de methods van A (dus roepen een method in A aan).

  • D-RiSe
  • Registratie: September 2000
  • Laatst online: 19-03 19:37

D-RiSe

Kick the baby

Topicstarter
Damn...

thx

intel silver reef, celly 2.0 Ghz, 256mb ddr, G2MX


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17:38

Gerco

Professional Newbie

Je kunt in VB ook Interfaces gebruiken, maar echt handig zijn ze niet.

Wat je kunt doen is een class I<iets> maken, zonder code, maar met lege Subs en Functions erin en dan in een andere class zeggen: Implements I<iets>.

Dan moet de andere class alle subs en functions van I<iets> implementeren. Het is geen code inheritance, of zelfs maar wat-dan-ook inheritance, maar het kan wel handig zijn.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • D-RiSe
  • Registratie: September 2000
  • Laatst online: 19-03 19:37

D-RiSe

Kick the baby

Topicstarter
Waar het om gaat is een app waar ik modules voor wil maken....

In java zou ik dan gewoon een class myAppModule maken en dan alle modules afleiden van die class zodat ik alle standaard functioes niet weer hoef te maken... wat zou dan de beste manier zijn om hetzelfde een beetje netjes in vb te maken?

intel silver reef, celly 2.0 Ghz, 256mb ddr, G2MX


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17:38

Gerco

Professional Newbie

Dan zul je moeten delegeren. Met interfaces of wat voor VB taalconstructie dan ook gaat dat niet lukken, want code-inheritance bestaat niet in <VB6. Als je dat wilt doen, moet je VB.NET gaan gebruiken. Dat ondersteund WEL code-inheritance.

(Of heet dat nou implementation-inheritance?)

Als je VB6 wilt gebruiken zou ik Interfaces EN delegeren gebruiken. Je maakt 1 class (CAppModule) die alle standaard functies bevat en een interface (IAppModule) voor die class (je kunt dezlefde file gebruiken, al vind ik dat niet zo mooi). Dan kun je in je prog dit soort dingen doen, omdat ze allemaal dezelfde interface hebben:
code:
1
2
3
4
5
6
7
8
  Dim s As String
  Dim m As IAppModule

  For Each m in AppModules
    s = s & " " & m.GetModuleName()
  Next m

  MsgBox "Geladen modules:" & s

Zonder interface kan het ook, maar dan heb je late-binding (kan ook handig zijn, maar in dit geval niet denk ik).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1