Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tyypin periminen

Armoletti [05.02.2007 19:46:48]

#

onko visual basicissa periytymistä?

Minulla on siis kaksi muuttujaa jotka hakevat tietonsa Autot Typestä
Ensimmäinen muuttuja on henkilöautot ja toinen kuorma-autot.
Kuormaautot tarvitsevat kaikki samat tiedot kuin henkilautot mutta lisäksi ne tarvitsevat painon.

Onko siis mahdollista tehdä Type joka kopioi toisen typen tiedot ja lisää pari omaa.


Tällainen se on:

Public Type Autot
    index As Integer
    nimi As String
    vari As Integer
    vuosimalli As Integer
    '-------------------        ---tarvitsee vainkuorma-autoissa
    paino As Integer
End Type

Public henkiloautot() As Autot
Public kuorma-autot() As Autot

ja tällaiseksi sen haluaisin

Public Type Autot
    index As Integer
    nimi As String
    vari As Integer
    vuosimalli As Integer

End Type

Public Type kAutot
    HAETAAN Auto TYPESTA
    paino As Integer
End Type

Public henkiloautot() As Autot
Public kuorma-autot() As kAutot

Antti Laaksonen [05.02.2007 20:04:47]

#

Samojen kenttien määritys tuolla tavalla ei onnistu, vaan joudut kirjoittamaan ne uudestaan jokaisen tyypin kuvaukseen. Käytännössä samojen kenttien kirjoitus on aika pieni vaiva, kun ohjelmassa on harvemmin kovin monta eri tyyppiä, mutta jos haluat, voit myös luoda tyypit sisäkkäin seuraavan mallin mukaisesti:

Private Type ATiedot
    index As Integer
    nimi As String
    vari As Integer
    vuosimalli As Integer
End Type

Private Type Auto
    tiedot As ATiedot
End Type

Private Type KAuto
    tiedot As ATiedot
    paino As Integer
End Type

Jos autoja ja kuorma-autoja kuitenkin käsitellään pohjimmiltaan samalla tavalla, voisi olla järkevää käyttää molemmissa samaa tyyppiä, jossa on kaikki mahdolliset kentät, mutta ylimääräisiä kenttiä käytetään ainoastaan silloin, kun kyseessä on kuorma-auto. Tällöin täytyy olla vielä yksi kenttä, joka ilmoittaa auton tyypin. Nyt jos kaikkia autoja täytyy tutkia vaikkapa silmukassa, samalla kertaa voi käsitellä sekä tavalliset että kuorma-autot.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta