[OOP] Frage zu Methode-Namen / Funktionsweise

maxmax

Mitglied
Hallo,

ich programmiere eine kleine Shop-Simulation mit folgende Situation:

Ein Kunde kann ein Produkt von einem bestimmen Verkäufer kaufen

Ich frage mich nun, welche der 3 Klassen (Kunde, Verkäufer, Produkt) ich eine "buy"-Methode verpassen soll. Ich denke am ehesten dem Kunden, also kunde.buy(produkt,verkäufer).

Dann stellt sich mir aber die Frage, wie die buy-Methode des Kunden aussehen soll?
Java:
class Kunde{
void buy(Produkt produkt, Verkaeufer verkaufer)
      verkaufer.sell(produkt); // finde ich irgendwie komisch, da der Kunde dem Verkäufer ja nicht befehlen kann ein Produkt zu verkaufen.
}

Hat mir jemand da ein Tipp, wie man so etwas am besten löst?
Danke.
 

maxmax

Mitglied
Kunde und Verkäufer haben beide das Attribut Guthaben.
Bei einem Kauf/Verkauf wird dem Verkäufer der Preis des Produktes gutgeschrieben und dem Kunden abgezogen.
Gleichzeitig wird dem Verläufer das Produkt aus seiner Liste gelöscht.
 

XHelp

Top Contributor
naja, du kannst ja vorher
Java:
if (verkaeufer.canSell(produkt)) {
...
Machen, wenn es dadurch besser aussieht :)
Je nach dem wie du es ins Absurde treiben willst. Aber generell ist das ja schon richtig: ich gehe zum Verkäufer und sage: Verkauf mir mal 5 Brötchen.
 

ice-breaker

Top Contributor
Ehrlich gesagt hätte ich die buy-Methode zum Verkäufer gemacht. Natürlich macht es auch Sinn, dass man sagt der Kunde kauft von einem Verkäufer (Verkäufer als Parameter).
Aber logischer fände ich persönlich, vom Verkäufer, kaufe ich eine Limonade (Verkäufer.buy(Kunde, Produkt)).
Aber ich denke mal, das kann man sehen wie man will.
 
G

gman

Gast
Also wenn schon, dann:

Verkaeufer.sell(Kunde, Produkt);

Hängt halt davon ab, von welchem Standpunkt man den Vorgang betrachtet. Da man die Software wohl eher als
Verkäufer/Geschäft/Firma erstellt, ist die Sicht das der Verkäufer etwas einem Kunden verkauft "besser".
 

Marco13

Top Contributor
Fall es flexibler sein soll, bieten sich sog. "specifications" an

Ich wußte ja, dass man, wenn man es drauf anlegt, alles mögliche als "Pattern" bezeichnen kann...

We'll now learn about the Setter-Pattern. This pattern is quite useful when an object has properties that may be modified from the outside. It is widely used in many scientifc applications, and has a widespread acceptance in computer science. See the list of references [1,3,6,17,33,45,66,93,122] for more information. The pattern consists of introducing a method that has the prefix "set", and which modifies a value:
Code:
class SomeClass
{
    int value;
    [b]void setValue(int v) { value = v; }[/b]
}
Listing 1: Classical application of the Setter-Pattern
...
Read the next sections of this Design Pattern Tutorial:
- The Getter-Pattern
- The Isser-Pattern
- The Hasser-Pattern
....


In wie vielen Bibliotheken das schon als "Predicate", "Condition" oder "UnaryBooleanFunction" drin steckt ... :reflect:


Aber zum Thema: Ich denke, das hängt davon ab, wer die aktive Rolle übernehmen soll. Wenn man einen Staubsaugerverkäufer und einen Haustürkunden modelliert, wäre es wohl seller.sell(product, customer), aber beim Einkauf in einem Warenhaus eher customer.buy(product, seller). Man könnte aber auch überlegen, das ganze irgendwie ... neutraler oder abstraker zu beschreiben, ganz spontan aus dem Bauch raus
Java:
interface Entity
{
    Transaction initiateTransaction(Product product, Entity other);
    boolean agreesTo(Transaction t);
}
class Seller implements Entity { ... }
class Buyer implements Entity { ... }

class Transaction
{
    Entity buyer;
    Entity seller;
    Product product;
 
    void execute()
    {
        if (buyer.agreesTo(this) && seller.agreesTo(this)) doit();
    }
}
oder so... :bahnhof: Gibt's bestimmt ein Pattern dafür :D
 
M

maki

Gast
Der Verkauf an sich muss ja weder im Verkäufer Objekt noch im Käufer Objekt passieren, könnte auch in einem eigenen Objekt stattfinden (SellingService zB.) ;)

Meine Bemerkung bez. specifications war auf XHelps Post mit dem "canSell" Beispiel gemünzt, war leider nicht klar dargestellt von mir.
Ob specifications als Pattern durchgehen?
k.A. ehrlich gesagt, aber es gibt ja sowas wie Regeln dafür wann etwas als Pattern bezeichnet wird oder nicht.
Jedenfalls sind sie sehr nützlich wenn Validierungen von mehreren Objekten abhängig sind.
Im Endeffekt laufen die meisten Pattern auf Polymorphy hinaus, aber wäre ja langweilig dann nur noch durchzunummerieren :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H WEKA - Frage zu Methode in Evaluation Softwareentwicklung 2
C SOLID Single Responsibility Priciple Frage Softwareentwicklung 2
K Frage OOP Softwareentwicklung 8
dgtKotlin Frage zu Kotlin source code Softwareentwicklung 5
A Frage zu testdriven developement Softwareentwicklung 1
H Regex Frage Softwareentwicklung 2
D Frage Schichtenarchitektur Softwareentwicklung 3
T Frage bezüglich MVC Softwareentwicklung 1
Shams Frage wegen guava-Eventbus. Softwareentwicklung 0
B Frage zu Schnittstellen (lose Kopplung) Softwareentwicklung 5
H Frage zur Stanford NLP-API Softwareentwicklung 2
E Frage zu Dekorator-Pattern Softwareentwicklung 2
O Frage zu Regulärer Ausdruck Softwareentwicklung 3
S Frage zu Zusicherungen: Softwareentwicklung 12
D Frage zu String Algorithmen / String Metric Softwareentwicklung 7
Airwolf89 Theoretische Frage - In Java Java-Programme schreiben Softwareentwicklung 5
D Frage zur Objektorientierung mit Interfaces Softwareentwicklung 9
B Theoretische Informatik Frage zu Formalismus RegExp Softwareentwicklung 12
Wepster LGPL, MPL Frage Softwareentwicklung 3
D Frage zur Benutzeroberflächenprogrammierung Softwareentwicklung 8
D Frage zu Klassendiagramm und Konstruktor (UML) Softwareentwicklung 3
P Frage zu Processing Softwareentwicklung 9
S Regex Frage Softwareentwicklung 4
D Frage zu meiner Vorgehensweise in einem Projekt Softwareentwicklung 5
A Frage zu GPL Softwareentwicklung 3
K Frage zu UML Aktivitätsdiagramm Softwareentwicklung 3
J Frage zu Lizenzrechten Softwareentwicklung 5
B bash frage Softwareentwicklung 6
F allgemeine exe frage Softwareentwicklung 10
G Frage zur LGPL? Softwareentwicklung 5
0x7F800000 "Wozu ist denn CSS / CSS2 gut" Dumme Frage? Softwareentwicklung 9
G Frage zur UML Softwareentwicklung 2
B Ajax Frage Softwareentwicklung 2
J Frage zu Relation Softwareentwicklung 2
W Frage zu a)Innere Klassen und b)OO Design Softwareentwicklung 13
G MVC Frage Softwareentwicklung 4
P Frage zu Prolog! Softwareentwicklung 7
E Frage zu Excel und Filtern Softwareentwicklung 4
Y OpenGL/C Frage - externe Funktionen Softwareentwicklung 5
G C# Frage Softwareentwicklung 12
T SQL, Feld mehrmals abfragen, IN Frage Softwareentwicklung 3
C Grundsätzliche Frage zur OOP bzw. zum MVC Softwareentwicklung 5
RaoulDuke Frage zu Datenmodel / Zugriff Softwareentwicklung 5
J Frage zu C Softwareentwicklung 2
H Frage ueber Prototype Pattern? Softwareentwicklung 2
L Noch 'ne Perl-Frage. Kehre dann auch reumütig zu Java zurück Softwareentwicklung 10
S Design-Frage: Wie viele Fassaden? Softwareentwicklung 4
J Frage zu MVC, Swing, Gui Softwareentwicklung 3
L Frage zu Beziehungen zwischen Klassen und UML Softwareentwicklung 10
T Frage zu Mysql Softwareentwicklung 3
C Mysql-Frage(Problem mit nicht durchgeführten Zugriff) Softwareentwicklung 5
I Methode testen Softwareentwicklung 30
T Was passiert generell in der onClick Methode? Softwareentwicklung 2
R static methode innerhalb einer klasse ! Softwareentwicklung 5
S Aufrufen einer Methode einer abgeleiteten Klasse von Oberkla Softwareentwicklung 4
D Variablendeklaration in einer iterativen Methode = Böse? Softwareentwicklung 10
R Ein Thread für eine Methode Softwareentwicklung 2
R Datenstruktur für einen rätselhaften Namen Softwareentwicklung 10
Landei Warum Angst vor Abstraktionen mit komischen Namen? Softwareentwicklung 43
S [RegEx] Dateigerecht geschriebene Namen parsen Softwareentwicklung 2

Ähnliche Java Themen


Oben