I have been coding for some time (3 years I think), and have recently been wondering if my coding pattern is any good. Any kind of feedback is welcome:
EDIT: The thing that concerns me most is that I have read a lot around that getters/setters are bad for OOP. Is this true?
//Point3D.as
public class Point3D
{
private var _x:int;
private var _y:int;
private var _z:int;
public function Point3D(tx:int = 0, ty:int = 0, tz:int = 0)
{
_x = tx;
_y = ty;
_z = tz;
}
public function get x():int { return _x; }
public function set x(tv:int):void { _x = tv; }
public function get y():int { return _y; }
public function set y(tv:int):void { _y = tv; }
public function get z():int { return _z; }
public function set z(tv:int):void { _z = tv; }
}
//Geometry3D.as
public class Geometry3D
{
private var _indices:Vector.<uint>;
private var _vertices:Vector.<Number>;
public function Geometry3D(tindices:Vector.<uint>,
tvertices:Vector.<Number>)
{
_indices = tindices;
_vertices = tvertices;
}
public function get indices():Vector.<uint> { return _indices; }
public function get vertices():Vector.<Number> { return _vertices; }
}
//Primitive3D.as
public class Primitive3D
{
private var _position:Point3D;
private var _geometry:Geometry3D;
public function Primitive3D(tx:int, ty:int, tz:int, tgeometry:Geometry3D)
{
_position = new Point3D(tx, ty, tz);
_geometry = tgeometry;
}
public function get position():Point3D { return _position; }
public function get geometry():Geometry3D { return _geometry; }
public function render():void
{
//add render code here
}
}
//TrianglePrimitive.as
public class TrianglePrimitive extends Primitive3D
{
public function TrianglePrimitive(tx:int, ty:int, tz:int)
{
var indices:Vector.<uint> = Vector.<uint>([
0, 1, 2]);
var vertices:Vector.<Number> = Vector.<Number>([
]);
var geo:Geometry3D = new Geometry3D(indices, vertices);
super(tx, ty, tz, geo);
}
public function spin(tradians:Number):void
{
//add spin code here
}
}
//Main.as
...
var tri:TrianglePrimitive = new TrianglePrimitive(0, 0, 0);
tri.position.z = -4;
tri.spin(Math.PI / 2); //90 degrees
tri.render();
...
Again, thanks a bunch for any feedback!