Ich arbeite an einigen OOP in MATLAB. Ich bin gerade dabei eine Klasse wie folgt:Matlab - OOP Methoden
classdef uavclass
properties
%all properties of the uav
position = [0,0,0]
charge = 100;
destination = [0,0,0];
maxVertClimb = 2;
maxHorizSpeed = 5;
sensorRange = 25;
unloadingTime = 60;
safeDistance = 5;
chargingTime = 300;
minCruiseAlt = 20;
maxCruiseAlt = 70;
end
methods(Static)
function uav = uavclass(x,y,z)
uav.position = [x,y,z]
end
end
end
ich uav
bei einer position
durch den Aufruf erstellen:
uav1 = uavclass(20,20,0);
uav2 = uavclass(40,40,0);
uav3 = uavclass(50,50,0);
uav4 = uavclass(80,80,0);
uav5 = uavclass(90,90,0);
Jedes Mal, wenn ich versuche, auf den uav
Objekte jede Art von Verfahren zu verwenden ich eine bekommen Error. Ein Beispiel versucht, einfach die sensorRange
von uav
function changesense(b)
uav.sensorRange = b
end
haben auch uavclass.sensorRange
versucht, einige ändern. Ich versuche, dies mit uav1.changesense(5)
aufzurufen, aber es ändert den Wert nicht. Ich habe auch mit und ohne (Static)
für Methoden und changesense(uav1,b)
usw. versucht.
Was mache ich falsch?
Sie sollten eine Antwort erhalten und akzeptieren. Es scheint, dass Sie nur Fragen stellen, aber nie etwas zurückgeben (indem Sie auf Ihre Profilseite schauen). Also, wenn meine Antwort Ihnen geholfen hat, machen Sie bitte die entsprechenden Dinge. – tim
Ihre Methode hat den gleichen Namen wie der Klassenname. Das bedeutet, dass diese Methode ein Konstruktor ist. Ich glaube nicht, dass Konstrukteure innerhalb der 'Static'-Sektion sein können, sondern eher im' Method'-Bereich des Public Access. Konstruktoren müssen einen Verweis auf ein Objekt zurückgeben, dessen Instanz erstellt wird. in deinem Fall ist es 'uav'. Wenn Sie einer Eigenschaft einen Wert zuweisen, werden diese Eigenschaften und der Status Ihres Objekts geändert. – Celdor