Komponenten, Module, Begrifferklärung

Hallo zusammen,

ich habe ein paar allgemeine Fragen zu den Begriffen "Komponente" und "Module".

Soweit ich weiß, zeichnet eine Komponente aus, dass sie eine bestimmte Aufgabe erfüllt, über starke innere Kohäsion verfügt und über Schnittstelle(n) verfügbar ist.
Mehre Komponenten können dann in Modulen zusammengefasst werden. Stimmt das soweit?

Also wäre dies jetzt eine Komponente?

Java:
public interface Calculate {
    
    public Double calculate(double number1, double number2, String operation);

}

Code:
class StandardCalculus implements Calculate {

    private double result;
    

    @Override
    public Double calculate(double number1, double number2, String operation) {
        switch (operation) {
        case "+": {
            result = add(number1, number2);
            break;
        }
        case "-": {
            result = substract(number1, number2);
            break;
        }

        case "*": {
            result = multiply(number1, number2);
            break;
        }

        case "/": {
            result = divide(number1, number2);
            break;
        }
        }
        return result;
    }

    private double add(double n1, double n2) {
        return n1 + n2;
    }

    private double substract(double n1, double n2) {
        return n1 - n2;
    }

    private double multiply(double n1, double n2) {
        return n1 * n2;
    }

    private double divide(double n1, double n2) {
        return n1 / n2;
    }

}

Auf diese Komponente(?) könnte man dann wie folgt zugreifen:
Code:
    public static void main(String[] args) {
        Calculate simpleOperation = new StandardCalculus();
        
        System.out.println(simpleOperation.calculate(4, 5, "+"));
        
    }


Nun habe ich noch eine weitere Komponente (?), die Flächen berechnet:
Code:
public class CalculateAreas implements Calculate {

    private double result;
    
    @Override
    public Double calculate(double number1, double number2, String operation) {
        switch (operation) {
        case "rectangle":
            result = calculateRectangleArea(number1, number2);
            break;
        case "circle":
            result = calculateCircleArea(number1);
            break;
        }
        return result;

    }
    
    private double calculateRectangleArea(double n1, double n2) {
        return n1 * n2;
    }
    
    private double calculateCircleArea(double radius) {
        return 3.14 * (radius*radius);
    }

    
}

Fasste man nun die beiden Komponenten in einem Projekt zusammen, ergäbe sich daraus ein Modul welches die Aufgabe erfüllt die 4 Grundrechenarten und Flächen berechnen zu können. Dieses Modul könnte man dann z.B. in einem Taschenrechner-Programm über die Schnittstelle "Calculate" implementieren.

Möchte man nun einen simpleren Taschenrechner entwerfen, dann könnte man die Komponente "StandardCalculus" in diesen implementieren. Diese wäre in diesem Fall dann ebenfalls als Modul anzusehen da laut Wiki: "Modul=funktional geschlossene Einheit die einen bestimmten Dienst bereitstellt".

Ist das so richtig gedacht? Also Sinn & Zweck mal außen vor gelassen, mir gehts allein um die Begriffe und deren Verwendung im Code.

Würde mich über Antworten freuen!
 

httpdigest

Top Contributor
Es gibt keine klare Definition, was genau ein Modul und eine Komponente ist und was nun größer oder kleiner (oder ob ein Modul nun viele Komponenten oder eine Komponente mehrere Module beinhaltet) als das andere ist oder ob und wieviele Schnittstellen das eine oder das andere haben und was genau hier unter einer Schnittstelle verstanden werden kann. Das ist von Bereich zu Bereich und sogar Programmiersprache zu Programmiersprache unterschiedlich.
Auch gibt es keine Definition, ob ein Modul oder eine Komponente nun eine (oder mehrere) Aufgaben erfüllen soll.
Kohäsion ist auch keine inhärente Eigenschaft mit der Ausprägung "hoch" eines Moduls oder einer Komponente. Kohäsion ist lediglich die Eigenschaft, wie stark nun Teile eines "Moduls" (was auch immer im jeweiligen Kontext unter einem "Modul" verstanden wird) zusammenhängen.
Das kann wenig oder stark sein.

Was du gezeigt hast, sind erstmal eine Java Schnittstelle/Interface und zwei Java-Klassen. Ob man das nun Modul oder Komponente nennen will, hängt vom Anwendungsfall oder einfach nur vom Geschmack/Gefühl ab.
 
Das machts natürlich als Anfänger nicht einfacher sich in dem Begriffsdschungel zurechtzufinden. Aber ist denn die Verwendung der Begriffe tatsächlich so willkürlich?

Schließlich werden sie ja doch an allen Ecken und Enden verwendet? Zum Beispiel Komponenten-Diagramme, Modularisierung..

Ich meine: Auf irgendwas muss man sich doch in der Fachwelt geeinigt haben wenn man von Komponenten oder Modulen spricht, um nicht aneinander vorbeizureden? Sonst könnte man ja auch einfach weiter von Klassen/Objekten sprechen?

Oder andersrum:
Was du gezeigt hast, sind erstmal eine Java Schnittstelle/Interface und zwei Java-Klassen. Ob man das nun Modul oder Komponente nennen will, hängt vom Anwendungsfall oder einfach nur vom Geschmack/Gefühl ab.
Habe ich die Begriffe denn so richtig verwendet für den beschriebenen Anwendungsfall eines Taschenrechners?

Ich würds halt gerne genauer verstehen, denn vorbeikommen tut man an den Begriffen ja nicht, wenn man Softwareentwicklung lernen möchte.
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Natürlich werden diese Begriffe überall verwendet. Aber, das ist genauso wie mit dem Begriff "Architektur": Das heißt alles und auch nichts.
Beispiele:
  • Es gibt die Klasse "Component" im Java Abstract Widget Toolkit (AWT)
  • Gleichermaßen gibt es die Klasse "JComponent" in Swing
  • Als "Modul" wird z.B. in Java eine Zusammenfassung von Klassen und Ressourcen (paketierbar als .jar Datei mit einer Modul-Descriptor-Datei) im Kontext des Java Platform Module Systems (JPMS) bezeichnet
Desweiteren gibt es dann auch noch andere verwandte Begriffe (wie etwa "Bundle" im Kontext von OSGi).

Begriffe wie "Modul" oder "Komponente" oder "Bundle" bekommen ihre jeweilige konkrete Bedeutung eben im konkreten Anwendungsbereich, um auszudrücken, dass hier etwas "gekapseltes" oder "wiederverwendbares" oder "komponierbares" (untereinander zusammensteckbares) existiert, für das man keinen besseren Begriff findet.
Es gibt da zwar grobe Konzepte, die man unter diesen Begriffen versteht, aber konkrete Bedeutung erlangen diese im Konkreten Fall.

Wenn du deine Taschenrechner Interfaces und Klassen als Modul oder Komponente bezeichnen möchtest, dann kannst du das natürlich tun.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
C Einbinden von Komponenten mit Maven Java Basics - Anfänger-Themen 3
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
T Optionale Komponenten Java Basics - Anfänger-Themen 8
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
P JavaFX - Komponenten skalieren Java Basics - Anfänger-Themen 16
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
N JTable - Zellfarben ändern, GUI-Komponenten in Zellen einfügen Java Basics - Anfänger-Themen 5
M Komponenten irgendwo versteckt? Java Basics - Anfänger-Themen 7
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
MU5T4NG Komponenten in Schleife ansprechen Java Basics - Anfänger-Themen 13
B Tabelle, Größe der Komponenten Java Basics - Anfänger-Themen 2
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
P Scrollpane mit dynamisch erzeugten Komponenten Java Basics - Anfänger-Themen 3
M Fixe Position von GUI Komponenten ? Java Basics - Anfänger-Themen 9
Weiti Anzeige von komponenten erst bei Mouse-Over Java Basics - Anfänger-Themen 3
N Anordnug der Komponenten mit NetBeans Java Basics - Anfänger-Themen 9
M Obsolete Komponenten feststellen? Java Basics - Anfänger-Themen 3
X GridBagLayout Komponenten Anordnungsproblem Java Basics - Anfänger-Themen 4
L Komponenten in Layoutmanagern zentrieren Java Basics - Anfänger-Themen 5
J Probleme mit Visual Editor Komponenten auf Panel legen Java Basics - Anfänger-Themen 4
J Komponenten andordnen Java Basics - Anfänger-Themen 2
K Koordinaten von Swing Komponenten Java Basics - Anfänger-Themen 2
G Komponenten Java Basics - Anfänger-Themen 2
A Komponenten nur sporadisch sichtbar beim starten Java Basics - Anfänger-Themen 2
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
N GridBagLayout: gleichmäßige verteilung von Komponenten Java Basics - Anfänger-Themen 23
S Auf JButtonBar komponenten ausrichten, größe festlegen? Java Basics - Anfänger-Themen 5
S Wie komponenten positionieren? Java Basics - Anfänger-Themen 6
B Komponenten im LayoutManager zentrieren Java Basics - Anfänger-Themen 5
G Seit Java6 wird der Text von komponenten komisch dargestellt Java Basics - Anfänger-Themen 11
Q Beste Komponenten für 3-Schichten-Architektur gesucht Java Basics - Anfänger-Themen 7
T Anderes Fenster öffnen, darin enthaltene Komponenten ändern Java Basics - Anfänger-Themen 2
E Komponenten auf Panel positionieren Java Basics - Anfänger-Themen 3
S Komponenten löschen und ersetzen Java Basics - Anfänger-Themen 2
S Kommunikation zwischen Komponenten in einem JFrame Java Basics - Anfänger-Themen 10
P Abstand vom Rahmen zu Komponenten bestimmen? Java Basics - Anfänger-Themen 3
J Dynamische Größenveränderung der Komponenten verhindern Java Basics - Anfänger-Themen 8
S Alle Komponenten die ich auf die IDE ziehe sind align all Java Basics - Anfänger-Themen 7
B Komponenten einer Zeile, Spalte des GridLayouts hinzufügen Java Basics - Anfänger-Themen 3
M value von Komponenten erhalten Java Basics - Anfänger-Themen 3
G GUI Komponenten Java Basics - Anfänger-Themen 14
M Problem beim ändern von Komponenten während Visible(true) Java Basics - Anfänger-Themen 4
M Bei Swing Komponenten die Farbe ändern? Java Basics - Anfänger-Themen 12
S Benennung von Komponenten bei Swing? Java Basics - Anfänger-Themen 8
J von Methode auf GUI-Komponenten zugreifen? Java Basics - Anfänger-Themen 5
J Problem mit Swing-Komponenten Java Basics - Anfänger-Themen 13
G Visuellen Komponenten Hints zuordnen Java Basics - Anfänger-Themen 5
G Komponenten dynamisch auf contentPane einbinden Java Basics - Anfänger-Themen 5
M wie kombiniere ich grafik und swing-komponenten Java Basics - Anfänger-Themen 16
X Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 8
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
sambalmueslie Probleme mit Container und Komponenten. Java Basics - Anfänger-Themen 3
A Komponenten im Panel ausrichten Java Basics - Anfänger-Themen 5
M GridBagLayout und enthaltende komponenten Java Basics - Anfänger-Themen 5
G alle Komponenten vom Typ JPanel removen Java Basics - Anfänger-Themen 4
K Sichtbarkeit von Komponenten prüfen Java Basics - Anfänger-Themen 5
J Module richtig einbinden Java Basics - Anfänger-Themen 2
P module-info findet zweites Paket nicht Java Basics - Anfänger-Themen 1
W generische Module Java Basics - Anfänger-Themen 2
P MVC Programm Module Architektur Java Basics - Anfänger-Themen 2
T Eclipse & Java EE Module Dependencies Java Basics - Anfänger-Themen 2
I Module und Testumgebung noch nicht verstanden... Java Basics - Anfänger-Themen 6
-horn- Wie "Module" für wiederkehrende Aufgaben machen? Java Basics - Anfänger-Themen 7
M Mehrere Klassen verbinden - Module Java Basics - Anfänger-Themen 3
H HILFE! MODULE! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben