Gibt es so was wie "Behälter" in der Programmierung/Softwareentwicklung?



  • Nehmen wir einen Roboter: Es kann Gesichter erkennen, die Zimmertemperatur anzeigen und Emotionen zeigen.

    Ist es also möglich, die einzelnen Features in ein "Behälter zu packen und die Behälter miteinander zu verbinden"?
    (Leider weiß ich nicht wie ich es nennen soll)
    Meine Frage: Unterstützen Programmiersprachen so etwas? Und wie nennt man diese Vorgehensweise?

    Was ich genau meine:

    Im Behälter A sind die ganzen Gesichtserkennung Algorithmen untergebracht. In Behälter A1 (Der befindet sich im Behälter A) ist eine Datenbank mit Porträts von Leuten, die sich der Roboter merken/erkennen soll.

    Behälter B ist mit einem Temperatursensor verbunden und verarbeitet die Sensor Daten.

    In Behälter C sind die Emotionen (Traurig, Fröhlich,...)

    Behälter D ist für die Ausgabe zuständig, d.h. dort werden alle Daten gesammelt und ausgegeben: die gemessene Temperatur, das erkannte Gesicht und wie sich der Roboter gerade fühlt (Emotionen) wird sprachlich mitgeteilt.

    Wenn ich mich nicht irre, nennt man es Modul oder Komponente. Bin mir da leider nicht sicher. Ich finde das Konzept echt interessant. Mein Papa arbeitet für einen Autohersteller und dort kümmert sich einer um das Fahrwerk, der andere schnappt sich den Motor usw.
    Sowas gibt es doch bestimmt auch in der Softwareentwicklung?!

    Als Anfänger will ich es mal schaffen, das Behälter A ein "Hello" und Behälter B "World" ausgibt. ^^


  • Mod

    Man kann Programme schreiben, die (je nach Hardware scheinbar oder echt) parallel mehrere Aufgaben ausführen. Verstehe ich dich da richtig, dass es dies ist, was du suchst? Je nachdem, was genau erreicht werden soll, kann das Vorgehen jeweils sehr unterschiedlich sein, aber der technische Hintergrund ist (oft, aber nicht immer) die Aufteilung der Aufgaben auf mehrere Threads oder Prozesse. Diese entsprechen dann den "Behältern" aus deiner Beschreibung.
    Ein "Hallo Welt", wie in deinem Beitrag, ist oft auch das Einführungsbeispiel in Lehrwerken über parallele Programmierung - egal welche Technik man genau benutzt.



  • kitkat1999 schrieb:

    Im Behälter A sind die ganzen Gesichtserkennung Algorithmen untergebracht. In Behälter A1 (Der befindet sich im Behälter A) ist eine Datenbank mit Porträts von Leuten, die sich der Roboter merken/erkennen soll.

    Behälter B ist mit einem Temperatursensor verbunden und verarbeitet die Sensor Daten.

    In Behälter C sind die Emotionen (Traurig, Fröhlich,...)

    Behälter D ist für die Ausgabe zuständig, d.h. dort werden alle Daten gesammelt und ausgegeben: die gemessene Temperatur, das erkannte Gesicht und wie sich der Roboter gerade fühlt (Emotionen) wird sprachlich mitgeteilt.

    Entweder Module, Threads mit Interfaces und Co, wie es Sepp formulierte oder einfach eine Ebene drunter Klassen:

    http://de.wikipedia.org/wiki/Klasse_(Programmierung)

    Class A {
      Object image;
    
      method_a(){
      }
      method_b(){
      }
      ...
      method_n(){
      }
    }
    
    static Class B {
      static int sensor = 0;
    
      sensor_auslesen();
      ...
    }
    
    Class C {
      Object Emotion;
    
      method_set_emotion(){
      }
      method_read_emotion(){
      }
    }
    
    static Class d {
      methode_gui(){
      }
      ...
    }
    

    Wichtig ist hierbei zu wissen, dass eine Klasse Attribute und Methoden definiert.
    Und mithilfe einer Klassendefinition können dann viele Objekte vom Typ dieser Klasse gespeichert werden.
    Für deine Bilder kannst du also für jedes Bild ein Objekt erstellen und die Methoden, also Algorithemn die es dafür gibt, werden für alle Objekte bzw. Bilder geteilt.
    Dann gibt's noch statische Klassen, dass sind grob gesagt die, bei denen Zustände verwaltet.
    Also z.b. wenn du NUR EINEN Sensor brauchst, reicht dafür auch eine statische Klasse. Bei vielen Sensoren machst du besser eine normale Klasse und für jeden Sensor dann ein Objekt.
    Bei der GUI nimmt man in der Regel wieder die statische Klasse.



  • @kitkat1999
    Ich bin mir auch nicht sicher was du genau meinst. Bzw. ob dir überhaupt die Unterschiede zwischen den verschiedenen "Behälter-Arten" klar sind.

    Ein Kriterium ist z.B. ob so ein "Behälter" unabhängig von anderen "Behältern" laufen (arbeiten) können soll. Falls ja brauchst du irgend eine Art von Multitasking (Multithreading, Fibers, Prozesse, ...).

    Ein weiteres Kriterium wäre wie gut die "Behälter" gegeneinander abgeschirmt sein sollen. Einerseits gegen absichtliche Zugriffe von anderen "Behältern" aus, und andrerseits gegen unabsichtliches Fehlverhalten anderer "Behälter".


Anmelden zum Antworten