|
|
Variablen von Superklasse in Unterklasse benutzen |
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.01.2013, 12:46
Titel:
|
|
Hallo,
Zitat: |
Dann muss ich aber die Daten vom initialisierten Objekt A verändern, und jedes der 10 initiierten Objekte von B soll jetzt mit diesen veränderten Daten weiterarbeiten. |
In dem Fall solltest du A als Handle-Klasse definieren. Dann wird mit einer Veränderung von A die Veränderung überall automatisch aktualisiert. Ansonsten kann es in der Tat dazu kommen, dass du temporär den doppelten Speicher brauchst.
Grüße,
Harald
|
|
|
|
|
MarekJosef |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 36
|
|
|
|
Anmeldedatum: 10.10.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.01.2013, 14:22
Titel:
|
|
Das mit dem handle dachte ich auch, also irgendwie eine Referenz. Doch ich habe jetzt folgendes ausprobiert:
Ich habe Dein Beispiel etwas geändert. Ich finde das so übersichtlicher, es behält auch das ursprüngliche Klassensystem. Nur weiß ich nicht, ob das auch auf diese Weise funktioniert.
Auf jeden Fall: Wenn ich jetzt
mache, bleibt das ObjektB davon unberührt. Es behält 1:10. Ich wüsste auch nicht, wie Matlab das jetzt wissen sollte, dass es ObjektB automatisch aktualisieren müsste. Aber, ich denke, auch dafür gibt es eine Lösung.
PS: Ich habe das grad mit Deinem ehemaligen Beispiel probiert, da klappt es. Aber, ich finde da ist die Klassenstruktur nicht so schön gegeben. Geht das auch so, wie ich es hier geschrieben habe? Und, wieso ist bei Dir nicht mehr B als Subklasse von A definiert?
Vielen Dank!!!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.01.2013, 20:12
Titel:
|
|
Hallo,
Zitat: |
Ich wüsste auch nicht, wie Matlab das jetzt wissen sollte, dass es ObjektB automatisch aktualisieren müsste. |
Ich auch nicht. Du übernimmst ja nur eine Eigenschaft, nicht das gesamte Objekt.
Zitat: |
Aber, ich denke, auch dafür gibt es eine Lösung. |
Mir ist keine bekannt.
Zitat: |
Aber, ich finde da ist die Klassenstruktur nicht so schön gegeben. |
Ansichtssache. Man hat die eine zusätzliche Schicht, wenn man von B aus auf A zugreifen möchte, aber damit sollte man leben können.
Zitat: |
Geht das auch so, wie ich es hier geschrieben habe? |
Ich wüsste nicht wie.
Zitat: |
Und, wieso ist bei Dir nicht mehr B als Subklasse von A definiert? |
Weil ich nicht mit Vererbung arbeite, sondern mit Aggregation. Das scheint mir für deine Zwecke besser geeignet.
Grüße,
Harald
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 15.01.2013, 11:16
Titel:
|
|
Zitat: |
mache, bleibt das ObjektB davon unberührt. Es behält 1:10. Ich wüsste auch nicht, wie Matlab das jetzt wissen sollte, dass es ObjektB automatisch aktualisieren müsste. Aber, ich denke, auch dafür gibt es eine Lösung.
|
Hallo,
Es fehlen dir die Grundsätze der Vererbung, empfehle dir dringend Literatur aufzuschlagen.
Man kann sich auch ein banales Beispiel aus dem Leben vorstellen. z.B
Ein Vater hat 2 Töchter, Zwillinge, die Kinder haben seine Haarfarbe geerbt z.b. sind beide Blond. Jetzt färbt ein Kind seine Haare in Braun um, welchen Einfluss hat das auf die andere Schwester, ändert sich ihre Haarfarbe deswegen automatisch um, weil sie ein Zwilling ist?
|
|
|
jurtsche |
Forum-Century
|
|
Beiträge: 123
|
|
|
|
Anmeldedatum: 26.03.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.03.2013, 08:10
Titel:
|
|
So wie ich das verstanden habe, willst du quasi eigentlich nur eine Art von globale Variable setzen.
Für deine Zwecke würde ich das dann auch so machen.
die variable global setzen
und dann in den B instanzen verwenden
jetzt kannst sie von überall aus verändern, ob in A oder auch in B oder manuell und er rechnet beim nächsten getappdata klarerweise damit weiter...
ob dir das hilft?
|
|
|
Andy386 |
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 31.03.2013, 03:19
Titel:
|
|
[edit]
Oh, hier gabs ne zweite Seite! ich sollte ins Bett...
[/edit]
Ich kenn mich mit OO in Matlab überhaupt nicht aus ("wie? das geht?") Aber in den nicht so hohen Programmiersprachen würde ich mit einer Liste von Objekten der Klasse B arbeiten, da kann die Liste auch direkt in A drin sein (oder andersrum eine Liste von AObjekten im BObjekt).
Im Programmcode kann man dann zum erzeugten "großen" viele "kleine" via der Liste anlegen. Old School wäre ein Array, was dem ganzen Klassenkonzept den Stinkefinger zeigt, aber es gibt bestimmt auch eine schöne Lösung in Matlab.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
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.
|
|