2017-08-04 2 views
-1

ein Objekt aus einer anderen Klasse machen, wenn ich diese KlasseHat innerhalb einer Methode betrachtet Zusammensetzung

import java.util.Scanner; 

public class SimpleCalc { 

    private int x; 
    private int y; 
    private Scanner scan; 

    public SimpleCalc() { 
     scan = new Scanner(System.in); 

     System.out.print("Please Enter The First Number: "); 
     this.x = scan.nextInt(); 
     System.out.print("Please Enter The Second Number: "); 
     this.y = scan.nextInt(); 
    } 

} 

Diese Klasse verwendet Zusammensetzung Konzept, weil es „Scan“ Objekt aus einer anderen Klasse „Scanner“ hat.

Aber was, wenn ich erklärte die „Scan“ Objekt innerhalb einer Methode wie folgt aus:

public SimpleCalc() { 
    Scanner scan = new Scanner(System.in); 

    System.out.print("Please Enter The First Number: "); 
    this.x = scan.nextInt(); 
    System.out.print("Please Enter The Second Number: "); 
    this.y = scan.nextInt(); 
} 

Heißt das als Zusammensetzung Konzept?

In anderer Weise: Gilt das Kompositionskonzept nur für Klassen oder auch für Methoden?

+0

Es gilt für Klassen als eine Alternative zur Vererbung. – shmosel

+0

beide Fälle gelten nicht als Komposition, nur eine Referenz auf einen anderen Typ ist keine Komposition. Wenn Ihre Klasse ein "SpecialSanner" wäre und eine "nextInt" -Methode bereitstellt, die mit einer benutzerdefinierten Logik an den "Scanner" delegiert würde, würden Sie von einer Komposition sprechen. 'public class Person {Stringname; ...} 'ist kein Kompositionskandidat, es ist nur eine reguläre Klasse. – luk2302

Antwort

1

Wenn Ihre Frage im Zusammenhang mit Entwurfsmuster und speziell mit Composite Design Patter verwandt ist, dann ist die kurze Antwort NEIN.

Wie GOF beschrieben:

„Compose Objekte in Baumstruktur Teil-Ganzes hierarchies.Composite können Client behandeln einzelne Objekte und Zusammensetzungen von Objekten einheitlich darstellen“.

Das gilt also nicht für Methoden.

+0

könnten Sie dies bestätigen: Wenn ich ein Objekt aus einer anderen Klasse innerhalb einer Methode mache, die keine Komposition berücksichtigt –

+0

Indem Sie ein Objekt erstellen, instanziieren Sie eine Klasse innerhalb der Methode. Dies ist nur eine lokale Referenz auf dieses Objekt in Ihrer Methode. Es ist nicht auf Klassenebene. Dies ist meiner Meinung nach kein zusammengesetztes Design. – Armaiti

Verwandte Themen