[ Date Index ][
Thread Index ]
[ <= Previous by date /
thread ]
[ Next by date /
thread => ]
On Mon, Jul 22, 2002 at 07:00:35PM +0100, kevin bailey wrote:
what do the extended parts of OO get used for - except for writing langauges? i did c++ at college but have mainly worked on database based systems since because this is what businesses want.
That's not all business want :)
A classic example is a drawing system. Let's say you have a drawing
canvas and on it you put a bunch of shapes. Let's take the basic
approach; the only one PHP will handle.
Picture = Canvas + *.Ellipse + *.Rectangle + *.Arc + Draw()
Ellipse = (X,Y) + Radius1 + Radius2 + Rotation + DrawMethod()
Rectangle = (X1,Y1) + (X2,Y2) + DrawMethod()
Arc = (X,Y) + Radius1 + Radius2 + Rotation + From + To + DrawMethod()
(all of which are fundamental data types)
Each shape has its own data and its own draw method.
In the program, we'd call:
somecanvas = Picture.Draw()
This would probably:
for each e in Ellipses {
e.DrawMethod(Canvas);
}
for each r in Rectangles {
r.DrawMethod(Canvas);
}
for each a in Arcs {
a.DrawMethod(Canvas);
}
return Canvas
##
Now, let's take a "real OO" system.
Picture = 1.Canvas + *.Shape + Draw()
Shape = [virtual]DrawMethod()
Ellipse = isa Shape + (X,Y) + Radius1 + Radius2 + Rotation
Rectangle = isa Shape + (X1,Y1) + (X2,Y2)
Arc = isa Shape + (X,Y) + Radius1 + Radius2 + Rotation + From + To
Each of these also implements a DrawMethod, as before.
The difference, with proper inheritence and virtual functions is now,
drawing is like this:
somecanvas = Picture.Draw()
This would probably:
for each s in Shapes {
s.DrawMethod(Canvas);
}
return Canvas
##
No double book keeping, not lists of each type, easy to add a new
type. One method for adding to the liust of shapes, etc. etc.
Proper OO is nice.
Steve
--
The Mailing List for the Devon & Cornwall LUG
Mail majordomo@xxxxxxxxxxxx with "unsubscribe list" in the
message body to unsubscribe.