Interaktion zweier Objekte

D

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...
 
kneitzel

kneitzel

Top Contributor
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...
 
D

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.
 
W

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

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
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
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
I Objekte Hilfe Java Basics - Anfänger-Themen 8
G Klassen und Objekte Java Basics - Anfänger-Themen 2
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
C Objekte und Konstruktoren Java Basics - Anfänger-Themen 2
O ObjectOutputStream Anzahl Objekte festhalten Java Basics - Anfänger-Themen 17
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
J Best Practice Dateiinhalte validieren und auf Objekte mappen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben