# Rational Rose im Umgang mit Mehrfachvererbung (Simulation)



## ven000m (30. Mai 2006)

Hallo Freunde,

ich muss in UML testen wie mein Werkzeug ein bekanntes Problem was aus Mehrfachvererbung besteht in Klassen etc umsetzt.

Dabei habe ich mich zur Simulation an diesen Sachverhalt gehalten:






Mir ist bewusst, dass Java keine richtige Mehrfachvererbung kann und dieses mit Hilfe von Interfaces ähnlich nachbilden kann bzw. versucht. In Rational Rose habe ich somit das obige Bild gezeichnet und anschließend umsetzen lassen, dass ging auch wirklich super, nur erbt meine Klasse *Amphibienfahrzeug *lediglich von *Wasserfahrzeug*. Weder wird hier noch ein Interface implementiert noch sonst wie die Brücke zum *Landfahrzeug *geschlagen.

Das kann doch nichtig sein, oder gerät da dass Werkzeug an seine Sprachgrenzen, die ja nicht zuletzt von Java gesetzt werden und es geht schlichtweg nicht?

Vielen Dank für Eure Antworten.

Hier ist der generierte Code:


```
/*
 * Created on 30.05.2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author ven000m
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 * @uml.annotations
 * derived_abstraction="platform:/resource/Mehrfachvererbung/Mehrfachvererbung.emx#_yX9p4O8AEdqdgJZipxdEcQ"
 * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
 */
public class Wasserfahrzeug {
    /**
     * Comment for <code>Tiefgang</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Tiefgang;

    /**
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	public void KmFahren() {
        // TODO Auto-generated method stub
    }
}
```




```
/**
 * @author ven000m
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 * @uml.annotations
 * derived_abstraction="platform:/resource/Mehrfachvererbung/Mehrfachvererbung.emx#_xUA5kO8AEdqdgJZipxdEcQ"
 * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
 */
public class Landfahrzeug {
    /**
     * Comment for <code>Raederzahl</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Raederzahl;

    /**
     * Comment for <code>Zuladung</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Zuladung;

    /**
     * Comment for <code>Person</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Person;

    /**
     * @param intZuladung
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
    public void Zuladung(Object intZuladung) {
        // TODO Auto-generated method stub
    }

    /**
     * @param intperson
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
    public void AddPerson(Object intperson) {
        // TODO Auto-generated method stub
    }
}
```


```
import java.util.Set;

/**
 * @author ven000m
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 * @uml.annotations
 * derived_abstraction="platform:/resource/Mehrfachvererbung/Mehrfachvererbung.emx#_zcg3IO8AEdqdgJZipxdEcQ"
 * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
 */
public class Amphibienfahrzeug extends Wasserfahrzeug {
    /**
     * Comment for <code>landfahrzeug</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Set landfahrzeug;

    /**
     * Comment for <code>Sitzplaetze</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Sitzplaetze;

    /**
     * Comment for <code>Antriebsleistung</code>
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	private Integer Antriebsleistung;

    /**
     * @generated "UML in Java (com.ibm.xtools.transform.uml2.java.internal.UML2JavaTransform)"
     */
	public void voidAnzeigen() {
        // TODO Auto-generated method stub
    }
}
```


----------



## dieta (30. Mai 2006)

Ich würde das eher mit zwei Interfaces lösen:

```
interface iwasserfahrzeug
{
    int getTiefgang();
    void setTiefgang(int neuerWert);
    // usw.usw. für alle anderen Variablen
}

interface ilandfahrzeug
{
    int getRaederzahl();
    void setRaederzahl(int neuerWert);
    // usw.usw. für alle anderen Variablen
}

class wasserfahrzeug implements iwasserfahrzeug
{
    //...
}

class landfahrzeug implements ilandfahrzeug
{
    //...
}

class amphibienfahrzeug implements iwasserfahrzeug, ilandfahrzeug
{
    //Methoden von iwasserfahrzeug und ilandfahrzeug
}
```


----------



## ven000m (30. Mai 2006)

Hi,

richtig , dass wäre die auch mir bekannte "Musterlösung", allerdings will ich das von Rational Rose erzeugt wissen.

Kann das Programm diese Umsetzung nicht leisten, weil nicht ausreichend dafür ausgelegt?

Danke für deine Antwort.

-------------
gruß


----------

