|
|
Zugriff auf ein Objekt von Klasse B innerhalb von Klasse A |
|
Martinuk |
Forum-Century
|
|
Beiträge: 208
|
|
|
|
Anmeldedatum: 18.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2018, 16:17
Titel: Zugriff auf ein Objekt von Klasse B innerhalb von Klasse A
|
|
|
|
|
Hallo,
ich kämpfe derzeit mit folgendem Problem. Ich habe im wesentlichen zwei Klassen erstellt. Die Klasse A (= meine Masterklasse) und die Klasse B (= eine Art Hilfsklasse auf deren Eigenschaften & Methoden ich in Klasse A zugreifen möchte). Die gesamten Funktionsaufrufe sowie das Setzen und Holen von Eigenschaften wird über Klasse A erledigt. Klasse B dient nur als Lieferant bestimmter Informationen, bzw. werden Teilinformationen von Klasse A nach Klasse B ausgelagert.
Mein Ansatz wäre, dass ich die Instanzen von Klasse B als Eigenschaften von Klasse A ablege. Als Benutzer soll man dann Zugriff (Get/Holen) haben, aber diese Variablen nicht verändern können.
Ich möchte in Klasse A mehrere Instanzen von Klasse B erstellen, Daten zuweisen und später in Klasse A mit diesen Daten arbeiten.
Hier mal ein vereinfachtes Beispiel
Wie man anhand des Beispiels sehen kann, erstelle ich in Klasse A ein Objekt vom Typ Klasse B und kann auch über den Konstruktoraufruf ein Wert auf die Variable y schreiben.
Nur kann hier der Wert von aussen geändert werden mit zB.
1. Kann man den Zugriff von aussen irgendwie verhindern?
2. Wie kann ich auf 'y' von Klasse B zugreifen (innerhalb von Klasse A) ohne Vererbung (A < B))
In der Dokumentation von MATLAB habe ich bisher nicht gefunden was ich brauche. Hoffentlich kann mir jemand von euch helfen.
Danke.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2018, 17:06
Titel:
|
|
Hallo,
1. über Attribute
2.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Martinuk |
Themenstarter
Forum-Century
|
|
Beiträge: 208
|
|
|
|
Anmeldedatum: 18.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2018, 17:19
Titel:
|
|
Hallo Harald,
danke für die schnelle Antwort. In diesem Fall glaube ich funktioniert dein Vorschlag nicht.
Es ist richtig, dass ich wenn ich (SetAccess = private) verwende ich nicht mehr z.B.
setzen kann. Aber sehr wohl kann ich 'y' von Klasse B verändern (was ich ja nicht möchte)
Ich glaube ich habe gerade die Lösung zu meinem Problem gefunden. Es liegt scheinbar an den Zugriffsrechten der Properties von Klasse B. Wenn ich diese auf (SetAccess = ?A) setze scheint man von aussen keinen Zugriff mehr zu haben. Wenn ich das richtig verstehe können die Eigenschaften von Klasse B können dann lediglich innerhalb von Klasse A verändert werden, genau das was ich möchte.
Eine generelle Frage zu diesem Ansatz. Entspricht es deiner Meinung nach dem OOP-Konzept, Instanzen von Klassen innerhalb von Variablen anderer Klassen zu verwenden?
Danke, Martinuk
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2018, 19:25
Titel:
|
|
Hallo,
Zitat: |
Eine generelle Frage zu diesem Ansatz. Entspricht es deiner Meinung nach dem OOP-Konzept, Instanzen von Klassen innerhalb von Variablen anderer Klassen zu verwenden? |
Ja, wird auch als Aggregation bezeichnet.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Martinuk |
Themenstarter
Forum-Century
|
|
Beiträge: 208
|
|
|
|
Anmeldedatum: 18.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2018, 20:10
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|