summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2011-03-16 15:22:22 +0000
committerJakob Odersky <jodersky@gmail.com>2011-03-16 15:22:22 +0000
commitcd21ed5dd14012a61f83c696ab765995a4fad624 (patch)
tree209fa68eefa165c6952a9f5af323194ca6644b91
parentdaa40206871fde7e4bb0ce248aeee64872f5ae21 (diff)
downloadvhc-cd21ed5dd14012a61f83c696ab765995a4fad624.tar.gz
vhc-cd21ed5dd14012a61f83c696ab765995a4fad624.tar.bz2
vhc-cd21ed5dd14012a61f83c696ab765995a4fad624.zip
ajout de printable
-rw-r--r--src/main/Makefile2
-rw-r--r--src/main/Particle.cc4
-rw-r--r--src/main/Particle.h70
-rw-r--r--src/main/Printable.cc20
-rw-r--r--src/main/Printable.h28
-rw-r--r--src/main/Vector3D.cc5
-rw-r--r--src/main/Vector3D.h5
-rw-r--r--src/test/Makefile2
-rw-r--r--src/test/ParticleTest.cc20
-rw-r--r--src/test/Vector3DTest.cc1
10 files changed, 122 insertions, 35 deletions
diff --git a/src/main/Makefile b/src/main/Makefile
index c6dc1e1..8b68115 100644
--- a/src/main/Makefile
+++ b/src/main/Makefile
@@ -13,7 +13,7 @@ LOCALDIR = main
# ==> Ajouter ici les objets a compiler
# Si un objet necessite une compilation non-standard (i.e. pas de regle du style Foo.o : Foo.cc Foo.h), rajouter
# cette regle.
-LOCALOBJS = Vector3D.o Particle.o
+LOCALOBJS = Vector3D.o Particle.o Printable.o
OBJS=$(addprefix $(BINDIR)/$(LOCALDIR)/,$(LOCALOBJS))
.PHONY = lib
diff --git a/src/main/Particle.cc b/src/main/Particle.cc
index 2917449..34e4682 100644
--- a/src/main/Particle.cc
+++ b/src/main/Particle.cc
@@ -10,8 +10,4 @@
namespace vhc {
-Particle::~Particle() {
- // TODO Auto-generated destructor stub
-}
-
}
diff --git a/src/main/Particle.h b/src/main/Particle.h
index cc15c93..c59d198 100644
--- a/src/main/Particle.h
+++ b/src/main/Particle.h
@@ -8,51 +8,81 @@
#ifndef PARTICLE_H_
#define PARTICLE_H_
+#include <sstream>
#include "Vector3D.h"
+#include "Printable.h"
namespace vhc {
-class Particle {
+/** Classe representant une particule.
+ * TODO ajouter facteur gamma, energie, constructeur etc...*/
+class Particle: public Printable {
private:
+
+ /** Position de cette particule. */
Vector3D position;
+
+ /** Vitesse de cette particule. */
+ Vector3D velocity;
+
+ /** Force resultante sur cette particule. */
Vector3D force;
+
+ /** Masse de cette particlue. */
double mass;
+
+ /** Charge de cette particule. */
double charge;
public:
- void applyForce(const Vector3D& f) {force = force + f;}
+ Particle(const Vector3D& position0, double mass, double charge):
+ position(position0),
+ velocity(0, 0, 0),
+ force(0, 0, 0),
+ mass(mass),
+ charge(charge)
+ {};
+
+
+ /** Retourne la position de cette particule. */
Vector3D getPosition() const {return position;}
+ /** Affecte la position de cette particule. */
void setPosition(const Vector3D& pos) {position = pos;}
+ /** Retourne la force resultante sur cette particule. */
Vector3D getForce() const {return force;}
- double getMass() const {return mass;}
-
- double getCharge() const {return charge;}
-
-
- /*
- Vector3D getPosition() {return position;}
+ /** Affecte la force resultante sur cette particule. */
+ void setForce(const Vector3D& f) {force = f;}
- Vector3D getVelocity();
+ /** Applique une force sur cette particule. */
+ void applyForce(const Vector3D& f) {force = force + f;}
- Vector3D getEnergy();
+ /** Retourne la masse de cette particule. */
+ double getMass() const {return mass;}
- Vector3D getGamma();
+ /** Retourne la charge de cette particule. */
+ double getCharge() const {return charge;}
- Vector3D getMomentum();
-*/
- Particle(const Vector3D& position0, double mass, double charge):
- position(position0),
- force(0, 0, 0),
- mass(mass),
- charge(charge) {};
+ /** Retourne la vitesse de cette particule. */
+ Vector3D getVelocity() const {return velocity;}
+
+ /** Retourne une representation en chaine de ce vecteur. */
+ std::string toString() const {
+ std::stringstream s;
+ s << "Particle:" << "\n";
+ s << "\tPosition: " << position << "\n";
+ s << "\tVelocity: " << velocity << "\n";
+ s << "\tMass: " << mass << "\n";
+ s << "\tCharge: " << charge << "\n";
+ s << "\tForce: " << force << "\n";
+ return s.str();
+ }
- virtual ~Particle();
};
}
diff --git a/src/main/Printable.cc b/src/main/Printable.cc
new file mode 100644
index 0000000..5139ad1
--- /dev/null
+++ b/src/main/Printable.cc
@@ -0,0 +1,20 @@
+/*
+ * Printable.cc
+ *
+ * Created on: Mar 16, 2011
+ * Author: jakob
+ */
+
+#include "Printable.h"
+#include <iostream>
+
+using namespace std;
+
+namespace vhc {
+
+std::ostream& operator<< (ostream& output, const Printable& p) {
+ output << p.toString();
+ return output;
+}
+
+}
diff --git a/src/main/Printable.h b/src/main/Printable.h
new file mode 100644
index 0000000..f7d3f9b
--- /dev/null
+++ b/src/main/Printable.h
@@ -0,0 +1,28 @@
+/*
+ * Printable.h
+ *
+ * Created on: Mar 16, 2011
+ * Author: jakob
+ */
+
+#ifndef PRINTABLE_H_
+#define PRINTABLE_H_
+
+#include <string>
+
+namespace vhc {
+
+class Printable {
+
+public:
+
+ /** Retourne une representation en chaine de cet objet imprimable. */
+ virtual std::string toString() const = 0;
+
+};
+
+std::ostream& operator<< (std::ostream& output, const Printable& p);
+
+}
+
+#endif /* PRINTABLE_H_ */
diff --git a/src/main/Vector3D.cc b/src/main/Vector3D.cc
index 8acaa86..9cca834 100644
--- a/src/main/Vector3D.cc
+++ b/src/main/Vector3D.cc
@@ -17,11 +17,6 @@ Vector3D const Vector3D::i = Vector3D(1.0, 0.0, 0.0);
Vector3D const Vector3D::j = Vector3D(0.0, 1.0, 0.0);
Vector3D const Vector3D::k = Vector3D(0.0, 0.0, 1.0);
-std::ostream& operator<< (ostream& output, const Vector3D& v) {
- output << v.toString();
- return output;
-}
-
Vector3D operator* (double n, const Vector3D& v) {
return v * n;
}
diff --git a/src/main/Vector3D.h b/src/main/Vector3D.h
index 31094da..4e2acb4 100644
--- a/src/main/Vector3D.h
+++ b/src/main/Vector3D.h
@@ -12,6 +12,7 @@
#include <sstream>
#include <math.h>
#include <stdexcept>
+#include "Printable.h"
namespace vhc {
@@ -24,7 +25,7 @@ namespace vhc {
* performance perdue ainsi est minimale pour une classe ne contenant que trois
* champs.
*/
-class Vector3D {
+class Vector3D: public Printable {
private:
/** Composante x. */
@@ -116,8 +117,6 @@ public:
};
-std::ostream& operator<< (std::ostream& output, const Vector3D& v);
-
Vector3D operator* (double n, const Vector3D& v);
} // namespace
diff --git a/src/test/Makefile b/src/test/Makefile
index 26eeacd..c784099 100644
--- a/src/test/Makefile
+++ b/src/test/Makefile
@@ -18,7 +18,7 @@ LOCALDIR = test
# ==> Rajouter ici les tests a compiler, i.e. les noms des fichiers tests _sans_ extension
# Si un objet X necessite une compilation non-standard (i.e. pas de regle du style X: X.cc X.h), rajouter cet objet
# en fin de BINS ne suffit pas. Il faut de plus creer une nouvelle regle.
-LOCALBINS = Vector3DTest
+LOCALBINS = Vector3DTest ParticleTest
BINS=$(addprefix $(BINDIR)/$(LOCALDIR)/,$(LOCALBINS))
# Inclure les headers de main (source principale)
diff --git a/src/test/ParticleTest.cc b/src/test/ParticleTest.cc
new file mode 100644
index 0000000..484c484
--- /dev/null
+++ b/src/test/ParticleTest.cc
@@ -0,0 +1,20 @@
+/*
+ * ParticleTest.cc
+ *
+ * Created on: Mar 16, 2011
+ * Author: jakob
+ */
+
+#include "Particle.h"
+#include <iostream>
+#include <string>
+#include "Vector3D.h"
+
+using namespace vhc;
+using namespace std;
+
+int main() {
+ Particle p(Vector3D::Null, 0, 0);
+ cout << p << endl;
+ return 0;
+}
diff --git a/src/test/Vector3DTest.cc b/src/test/Vector3DTest.cc
index e96f09b..1cc9063 100644
--- a/src/test/Vector3DTest.cc
+++ b/src/test/Vector3DTest.cc
@@ -5,7 +5,6 @@
* Author: Jakob Odersky
*/
-
#include <iostream>
#include <assert.h>
#include <iomanip>