close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 11 and Version 12 of TolOop


Ignore:
Timestamp:
Dec 12, 2009, 4:06:42 PM (15 years ago)
Author:
Víctor de Buen Remiro
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TolOop

    v11 v12  
    123123//Si no se quiere cambiar nada con herencia múltiple se enumeran las clases
    124124//antecesoras
    125 Class @VectorDoc: Vector, Doc;
     125Class @VectorDoc: @Vector, @Doc;
    126126
    127127//Con herencia simple no tiene mucho sentido no cambiar nada
     
    191191Class @ClHeight;
    192192
    193 //This class uses ClHeight as a method argument
     193//This class uses @ClHeight as a method argument
    194194Class @ClAge
    195195{
     
    202202};
    203203
    204 //This class uses ClAge as a method argument
     204//This class uses @ClAge as a method argument
    205205Class @ClHeight
    206206{
     
    236236
    237237=== Constructores de instancias ===
    238 La forma más recomendada de crear instancias de forma regulada es mediante construtores que son métodos estáticos que devuelven una instancia de esa clase
    239 
    240 {{{
    241 Class @Sphere
    242 {
     238La forma más recomendada de crear instancias de forma regulada es mediante construtores que son métodos estáticos que devuelven una instancia de esa clase a partir de una lista de los argumentos necesarios para la definición del objeto. Los mimebros auxiliares o derivados serán rellenados por el propio constructor.
     239
     240Evidentemente una misma clase puede tener varios constructores y unos pueden ser especializaciones de otros más generales a los que llamen después de calcular los argumentos necesarios
     241
     242{{{
     243Class @Circle
     244{
     245//Definition members
     246  Real _.center.x_;
     247  Real _.center.y_;
    243248  Real _.radius;
    244   Real equalName(ClAge arg)
    245   {
    246     _.name==arg::_.name
     249
     250//Auxiliar members
     251  Real _.perimeter;
     252  Real _.area;
     253 
     254//Basic Constructor
     255  Static @Circle New(
     256    Real x,  //First coordinate of center
     257    Real y,  //Second coordinate of center
     258    Real r)  //Radius
     259  {
     260    @Circle new =
     261    [[
     262      Real _.center.x_ = x;
     263      Real _.center.y_ = y;
     264      Real _.radius = r;
     265      //Auxiliuar members definition
     266      Real _.perimeter = 2*Pi*r;
     267      Real _.area = Pi*r^2
     268    ]]
    247269  };
    248   Static @ClHeight(Text name, Real height)
    249   {
    250     @ClHeight new =
    251     [[
    252       Text _.name;
    253       Real _.height;
    254     ]]
    255   }
    256 };
     270//Derivate constructor
     271  Static @Circle Random(
     272   Real min.x, Real max.x,
     273   Real min.y, Real max.y,
     274   Real min.r, Real max.r,)
     275  {
     276    @Circle::New(Rand(min.x,max.x),
     277                 Rand(min.y,max.y),
     278                 Rand(min.r,max.r))
     279  };
     280
     281//Returns true if the point (x,y) is inside the circle
     282Real includes(Real x, Real y)
     283{
     284  (x-_.center.x)^2+(y-_.center.y)^2<=_.radius^2
     285}
     286
     287};
     288
     289@Circle c1 = @Circle::New(0,0,1);
     290@Circle c2 = @Circle::Random(0,1,-1,0,1/2,1);
     291
    257292}}}
    258293