Interaktion zweier Objekte

DrPils

Bekanntes Mitglied
Moin

In OOP sollte man ja im besten Falle die Wirklichkeit abbilden.
Nun ist ja in der echten Welt nicht immer folgender Fall Objekt 1 interagiert mit Objekt 2 gegeben.
Oft ist ja auch Objekt 1 interagiert mit Objekt 2 interagiert mit Objekt 1 der Fall.

Zb wenn ein Mensch 1 einem anderen Mensch 2 einen Gegenstand überreicht, hat Mensch 2 ihn ja nicht einfach , vorher muss Mensch 2 auch diesen Gegenstand annehmen.

Java:
public class Human {

    private String thing;

    public void transferToHuman(Human human) {
        human.thing = thing;
        this.thing = null;
    }

    public static void main(String[] args) {
        Human h1 = new Human();
        h1.thing = "Banana";
        Human h2 = new Human();
        h1.transferToHuman(h2);
    }

}

Der Code ist natürlich nur Unsinn, es geht mir nur darum meine Frage zu verdeutlichen.
Also normalerweise müsste ja ein Mensch auch die Fähigkeit besitzen um Sachen anzunehmen und diese Fähigkeit wird nicht ausgeführt wenn ein anderer Mensch etwas übergeben möchte.
Hoffe man kann verstehen auf was ich hinaus möchte...
 
K

kneitzel

Gast
Also bei der Denkweise musst Du etwas aufpassen:
- Du hast zwar individuelle Instanzen, aber es gibt da kein individuelles Verhalten. Es gibt also nur die Klasse Mensch und die weiss, wie der Transfer abläuft. Du hast somit also nicht eine individuelle Intelligenz sondern eine Intelligenz der Spezies wenn Du so willst.
- Du kannst das mit dem Annehmen natürlich auch praktizieren. Dazu hast Du dann halt sowas wie ein Setter und der kann dann etwas prüfen und reagieren. Somit kann transferToHuman intern den Setter aufrufen und der kann dann durchaus eine Exception werfen - also sozusagen ablehnen.

Aber das ganz wichtige ist in meinen Augen, dass Du als Entwickler sozusagen Gott bist. Und wenn Du den Menschen erschaffen hast, dann hast Du die Regel aufgestellt. Menschen können etwas übergeben und da kann man sich nicht wehren! Das ist also sowas wie ein Naturgesetz...
 

DrPils

Bekanntes Mitglied
Danke
Dein hilft mir sehr
Und wenn Du den Menschen erschaffen hast, dann hast Du die Regel aufgestellt. Menschen können etwas übergeben und da kann man sich nicht wehren! Das ist also sowas wie ein Naturgesetz...
Danke
Der Vergleich hat mir sehr geholfen, ich nahm "die reale Welt abbilden" ein bisschen zu genau. Aber so macht es Sinn.

Sowas könnte man mit dem Visitor Pattern abbilden
Danke
Es ging mir eher darum ob es nötig ist, für gutes Klassendesign, nicht darum wie man es umsetzt.
 

White_Fox

Top Contributor
Danke
Der Vergleich hat mir sehr geholfen, ich nahm "die reale Welt abbilden" ein bisschen zu genau. Aber so macht es Sinn.
Nein...ich glaube, kneitzel meinte das geringfügig anders. Die reale Welt kann man schon abbilden, allerdings stehst du vor dem Problem, wie exakt du sie nachbilden willst.
Natürlich kannst du, wenn du einem Objekt etwas übergeben willst, die Annahme verweigern. Das ist der Hauptgrund, warum man Settermethoden überhaupt verwendet: Um die Übernahme eines Parameters evt. zu korrigieren oder zu verwerfen (oder, falls man das JETZT noch nicht haben will, hat man mit einer Settermethode die Möglichkeit, so etwas nachträglich noch einzubauen).

Java:
public class Mensch{
    
    public void uebergibPaket(Paket paket){
        if(willHaben){
            nehmen(paket);
        }
        //wenn nicht...eben nicht, dann passiert mit 'paket' hier nichts mehr
    }
}

Du wirst die vollständige Realität meistens nicht abbilden, sondern nur der Teil der für dich wichtig ist. Du kannst ein Paket einfach übergeben...und fertig. Wenn nötig, kannst du aber auch differenzieren zwischen "Paket in die Hand drücken", "Paket vor die Tür stellen", "Paket beim Nachbarn abstellen", "Paket an Packstation abgeben", ...
In der Realität wird das Paket sicher eine Farbe haben, aber willst du in deinem Programm zwischen roten und braunen Paketen unterscheiden? Ein Paket hat eine Masse, ist die Masse in deinem Programm interessant? Ist es einfach nur ein Paket, oder ist es noch wichtig welches Verpackungsmaterial verwendet wurde, geschnürt, geklebt, verschweißt?

Du stellst die Regeln auf...welche du wie aufstellst, ist dir überlassen. Die Realität kannst du theoretisch beliebig genau darstellen, und wenn du ein Paket ab Teilchenebene modellieren willst kannst du das gerne machen. Dir wird wahrscheinlich die Rechenleistung der Hardware oder dein eigenes Wissen irgendwann Grenzen setzen...aber theoretisch geht das.
 

mihe7

Top Contributor
In OOP sollte man ja im besten Falle die Wirklichkeit abbilden.
Von der Sichtweise würde ich mich gleich verabschieden. Es geht darum, ein Problem mit Hilfe von Software zu lösen und ein objektorientiertes Modell ist, wie Quellcode, eben ein Modell dieser Software (bzw. des Problems). Ein Modell vereinfacht Dinge und stellt diese ggf. falsch dar, was aber völlig egal ist, so lange es dem Zweck dient.

Mein Lieblingsbeispiel dafür sind Landkarten. Wenn Du z. B. Google Maps oder OpenStreetMap öffnest und Dir die Welt anschaust, wirst Du feststellen, dass Grönland fast so groß wie Afrika angezeigt wird. Die Karte ist also falsch. Das ist aber völlig in Ordnung, denn die Karte dient einem Zweck: Navigation. Bei der Abbildung von 3D auf 2D geht eine Information zwangsweise verloren. Sie kann entweder flächen- oder winkeltreu sein. Navigationskarten sind winkeltreu, weil man dort durch Verbinden zweier Punkte mit einer Linie den Winkel rauslesen kann. Kurz: die Karte ist "falsch", aber optimal für Navigation geeignet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CT9288 Interaktion mit laufendem Programm -Fachbegriffe Java Basics - Anfänger-Themen 2
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
M Drag & Drop - Interaktion zwischen Java und dem OS Java Basics - Anfänger-Themen 1
H Interaktion von GUI-Klassen - wie? Java Basics - Anfänger-Themen 8
F Probleme bei Interaktion mit Prozeß Java Basics - Anfänger-Themen 9
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
C Proportionale Abnahme zweier Werte Java Basics - Anfänger-Themen 4
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
C Inhalte zweier Vektoren vergleichen Java Basics - Anfänger-Themen 3
T Programm, das die Differenz zweier Daten ausgibt Java Basics - Anfänger-Themen 4
S Ermittlung des GGTs zweier Werte Java Basics - Anfänger-Themen 5
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
A Durchschnitt zweier Mengen berechnen Java Basics - Anfänger-Themen 3
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
K Schnitt zweier Ebenen ergibt Gerade Java Basics - Anfänger-Themen 10
L vergleich zweier texte Java Basics - Anfänger-Themen 18
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
J Addition zweier Zahlen Java Basics - Anfänger-Themen 9
J Dimensionen zweier Arrays vergleichen Java Basics - Anfänger-Themen 4
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
turmaline Gleicheit zweier Listen Java Basics - Anfänger-Themen 12
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
C Dateiinhalt zweier Dateien auf Gleichheit prüfen Java Basics - Anfänger-Themen 3
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
W Unterschiede zweier Dateien herauslesen Java Basics - Anfänger-Themen 7
P Unterschiede zweier System.in Varianten Java Basics - Anfänger-Themen 3
I Abhängigkeiten zweier Klassen Java Basics - Anfänger-Themen 25
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
D Eine Nachkommazahl zweier Double vergleichen Java Basics - Anfänger-Themen 4
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
S Addieren zweier Arrays Java Basics - Anfänger-Themen 10
T ermittlung des minimus zweier eingegebener werte Java Basics - Anfänger-Themen 7
G größere zweier zahlen ermitteln und ausgeben Java Basics - Anfänger-Themen 6
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
A Schnitt zweier Rechtecke ermitteln Java Basics - Anfänger-Themen 2
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
T Inhalte zweier Variablen tauschen Java Basics - Anfänger-Themen 18
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
N Den Inhalt zweier Strings (Zahlen) addieren Java Basics - Anfänger-Themen 5
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben