Re: How to use objectiented programming.
This all works. I am trying to show that I understand how to do dynamic
binding but not so well how to use it and how it can make my programs
better. I know about the shape example but often times, I don't find
this kind of programming useful for what I do.
Well, in OOP (object-oriented-programming) polymorphism is one of the
most important things.
Polymorphism means that you call a method like "move" or "attack" on
an object and different things happen.
class Actor {
private :
m_life_points;
public:
virtual void attack( Actor &foo ) = 0;
virtual void move() = 0;
virtual void reduce_life_points() {m_life_points--;};
}
class Hero : public Actor {
virtual void attack( Actor &foo ) {
swing_sword();
foo.reduce_life_points();
}
virtual void move() {
run_forward();
}
}
class Monster : public Actor {
virtual void attack( Actor &foo) {
use_claws();
foo.reduce_life_points();
}
virtual void move() {
run_forward();
}
}
In this case the main loop might do something like this (pseudo-code):
for each actor in actors do
actor.move()
without caring whether actor is a hero or a monster or any other kind
of actor that might be added to the game in the future. Unlike using
an switch statement there is no need to change the loop to add more
kinds of actors.
To sum it up. If you want to execute different behavior at _RUN-TIME_
(in opposite to Compile-time) there is a good chance that OOP is
beneficial for you.
For me it was helpful to learn about design pattern to fully
understand OO. However since design pattern are not easy to understand
without knowledge of OOP you should try an easy lecture like "Head
First Design Pattern". It's fun to read and quick helpful to gasp OO.
Regards,
Thomas Kowalski