Pakete

Aus Programmieren-Wiki
🚧 Diese Seite befindet sich in Bearbeitung 🚧
🤓 Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 2 annotiert und ab Blatt 3 abgezogen wird. 🤓

Beschreibung

Wir kennen bereits den "src" Ordner, in dem erstmal alle für unser Programm notwendigen Klassen(dateien) liegen. Da das bei größeren Projekten schnell für Unordnung sorgen kann gibt es sogenannte Pakete.

Diese sind einfache Ordnerstrukturen innerhalb des "src"-Ordners, die helfen sollen, Struktur in das Programm zu bringen.

Um ein Paket zu erstellen muss nicht viel mehr gemacht werden, als einen Ordner innerhalb des "src"-Ordners zu erstellen und diesem einen Namen zu geben.

Anschließend muss innerhalb jeder Klasse, die diesem Ordner hinzugefügt wurde, angegeben werden, in welchem Paket die Klasse denn jetzt eigentlich ist. Das geschieht über das package-Keyword.

package edu.kit.kastel.graphics; ist also das Graik-Paket innerhalb unseres Standardpakets.

Um jetzt Klassen aus einem anderen paket zu verwenden, müssen wir diese zunächst Importieren. Auch dafür gibt es ein entsprechendes Keyword: import. Wir importieren beispielsweise die Square-Klasse aus dem Grafik-Paket wiefolgt:

import edu.kit.kastel.graphics.Square;.

Wichtig:

Es gibt sogenannte "Wildcard"-Imports. Diese bewirken, dass alle Klassen aus einem gegebenen Paket importiert werden. Das gilt als schlechter Stil, da wir dadurch das Programm unnötig groß machen (auch wenn wir es erst nicht sehen). Zusätzlich ist dadurch auch unklar, welche Klassen denn jetzt eigentlich genau importiert wurden. Stattdessen sollen alle verwendeten Klassen einzeln importiert werden.

Für die Verwendung von Paketen gibt es zusätzlich folgende Konventionen:

  • Das Standardpaket ist in der Regel immer die Domain, gespiegelt
  • Das Standardpaket des Übungsbetriebes ist edu.kit.kastel (Die Domain ist "kastel.kit.edu")
  • Bezeichner sind sinnvoll zu wählen und klein zu schreiben
  • Die Klassen sollten in sinnvolle Pakete gegliedert werden


Negativbeispiel

package edu.kit.kastel.mEmEs.PaTrIkStAr;

import java.util.*;

Positivbeispiel

package edu.kit.kastel.game.model;

import edu.kit.kastel.game.ai.ArtificialPlayer;
import java.util.HashMap;