
DAG ist eine Struktur aus Knoten und Verbindungen, bei der jede Verbindung eine feste Richtung hat und keine geschlossenen Schleifen vorkommen.
In diesem Beispiel wird dieser Graph als Baum dargestellt, weil es genau einen Ausgangspunkt gibt und sich die Struktur strikt nach unten in immer feinere Einheiten verzweigt.
Wie läßt sich das in Java darstellen?
Hier die MammutbaumTaxonomie.java:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
package de.wenzlaff.taxonomie; /** * MammutbaumTaxonomie * * @author Thomas Wenzlaff * */ public class MammutbaumTaxonomie { public static void main(String[] args) { // ===== Wurzel ===== Taxon pflanzenreich = new Taxon("Pflanzen (Plantae)", TaxonRank.REICH); Taxon gefaesspflanzen = new Taxon("Gefäßpflanzen (Tracheophyta)", TaxonRank.ABTEILUNG); Taxon nadelbaeume = new Taxon("Nadelbäume (Pinopsida)", TaxonRank.KLASSE); Taxon ordnung = new Taxon("Kiefernartige (Pinales)", TaxonRank.ORDNUNG); Taxon familie = new Taxon("Zypressengewächse (Cupressaceae)", TaxonRank.FAMILIE); Taxon unterfamilie = new Taxon("Sequoioideae (Mammutbaum-Unterfamilie)", TaxonRank.UNTERFAMILIE); pflanzenreich.addKind(gefaesspflanzen); gefaesspflanzen.addKind(nadelbaeume); nadelbaeume.addKind(ordnung); ordnung.addKind(familie); familie.addKind(unterfamilie); // ===== Gattung 1 ===== Taxon gattungSequoia = new Taxon("Küstenmammutbaum-Gattung (Sequoia)", TaxonRank.GATTUNG); Taxon kuestenmammutbaum = new Taxon("Küstenmammutbaum (Sequoia sempervirens)", TaxonRank.ART); gattungSequoia.addKind(kuestenmammutbaum); // ===== Gattung 2 ===== Taxon gattungSequoiadendron = new Taxon("Riesenmammutbaum-Gattung (Sequoiadendron)", TaxonRank.GATTUNG); Taxon riesenmammutbaum = new Taxon("Riesenmammutbaum (Sequoiadendron giganteum)", TaxonRank.ART); gattungSequoiadendron.addKind(riesenmammutbaum); // ===== Gattung 3 ===== Taxon gattungMetasequoia = new Taxon("Urweltmammutbaum-Gattung (Metasequoia)", TaxonRank.GATTUNG); Taxon urweltmammutbaum = new Taxon("Urweltmammutbaum (Metasequoia glyptostroboides)", TaxonRank.ART); gattungMetasequoia.addKind(urweltmammutbaum); // ===== Einhängen in Unterfamilie ===== unterfamilie.addKind(gattungSequoia); unterfamilie.addKind(gattungSequoiadendron); unterfamilie.addKind(gattungMetasequoia); // ===== Ausgabe ===== print(pflanzenreich, 0); } private static void print(Taxon taxon, int level) { System.out.println(" ".repeat(level) + taxon); for (Taxon kind : taxon.getKinder()) { print(kind, level + 1); } } } |
Und die dazu gehörige TaxonRank und Taxon Klasse:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
package de.wenzlaff.taxonomie; import java.util.ArrayList; import java.util.List; enum TaxonRank { REICH, // Kingdom ABTEILUNG, // Division (bei Pflanzen üblich statt Stamm) KLASSE, // Class ORDNUNG, // Order FAMILIE, // Family UNTERFAMILIE, // Subfamily TRIBUS, // Tribe (optional, feinere Untergliederung) GATTUNG, // Genus ART // Species } /** * MammutbaumTaxonomie * * @author Thomas Wenzlaff * */ class Taxon { private final String name; private final TaxonRank rank; private final List<Taxon> kinder = new ArrayList<>(); public Taxon(String name, TaxonRank rank) { this.name = name; this.rank = rank; } public void addKind(Taxon taxon) { kinder.add(taxon); } public String getName() { return name; } public TaxonRank getRank() { return rank; } public List<Taxon> getKinder() { return kinder; } @Override public String toString() { return rank + ": " + name; } } |
Liefert dann dieses Ergebnis:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
REICH: Pflanzen (Plantae) ABTEILUNG: Gefäßpflanzen (Tracheophyta) KLASSE: Nadelbäume (Pinopsida) ORDNUNG: Kiefernartige (Pinales) FAMILIE: Zypressengewächse (Cupressaceae) UNTERFAMILIE: Sequoioideae (Mammutbaum-Unterfamilie) GATTUNG: Küstenmammutbaum-Gattung (Sequoia) ART: Küstenmammutbaum (Sequoia sempervirens) GATTUNG: Riesenmammutbaum-Gattung (Sequoiadendron) ART: Riesenmammutbaum (Sequoiadendron giganteum) GATTUNG: Urweltmammutbaum-Gattung (Metasequoia) ART: Urweltmammutbaum (Metasequoia glyptostroboides) |
Bilder von Mammutbäumen in Hannover und Langenhagen habe ich hier abgelegt. Das ganze Projekt auf Gitlab.
Download taxo-mamutbaum.pdf
