# Bibliotheksklasse

Der Startpunkt einer JAR-Bibliothek ist eine Klasse, die die `Library`-Klasse erweitert. Die Hauptaufgabe ist es, die Werkzeuge aufzulisten, die durch die Bibliothek zur Verfügung gestellt werden. Meistens wird es sich um Werkzeuge handeln, die verschiedene Bauelemente zu einer Schaltung hinzufügen, d.h. Instanzen der `AddTool`-Klasse, die mit verschiedenen Komponentenfabriken zusammenarbeiten.

## Components

    package com.cburch.gray;

    import java.util.Arrays;
    import java.util.List;

    import com.cburch.logisim.tools.AddTool;
    import com.cburch.logisim.tools.Library;

    /** Die Bauteilebibliothek, die für den Anwender zugänglich ist. */
    public class Components extends Library {
        /** Die Liste aller Werkzeuge in der Bibliothek. Technisch
         * enthalten Bibliotheken Werkzeuge, was ein etwas allgemeinerer Begriff als
         * Bauelemente ist. In der Praxis werden Sie aber wohl am häufigsten
         * AddTools zum Einfügen neuer Bauelemente in die Schaltung erstellen wollen.
         */
        private List<AddTool> tools;

        /** Erstellt eine Instanz dieser Bibliothek. Über diesen Konstruktor
         * greift Logisim zuerst zu, wenn eine JAR-Datei geladen wird: Es sucht nach
         * einer Konstruktormethode ohne Argumente für die vom Benutzer angegebene Klasse.
         */
        public Components() {
            tools = Arrays.asList(new AddTool[] {
                    new AddTool(new GrayIncrementer()),
                    new AddTool(new SimpleGrayCounter()),
                    new AddTool(new GrayCounter()),
            });
        }

        /** Gibt den Namen der Bibliothek zurück, der dem Benutzer angezeigt wird. */
        public String getDisplayName() {
            return "Gray Tools";
        }

        /** Gibt eine Liste aller Werkzeuge der Bibliothek zurück. */
        public List<AddTool> getTools() {
            return tools;
        }
    }

Weiter: Einfacher Gray-Kode-Zähler.