Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(Curso 2019-2020)
Créditos
1 Constructores
Java
Ruby
Cuestiones generales
Constructores
Clases-plantilla / Clases-objeto
Clases-plantilla
I En muchos casos tienen el mismo nombre de la clase
I Son invocados automáticamente utilizando la palabra reservada
new
Clases-objeto
I Pueden tener un nombre arbitrario
I Suelen ser métodos de clase
Java
Tienen el mismo nombre que la clase y no devuelven nada
(tampoco void)
Ejemplos
Ejemplos
Java: Clase con varios constructores y código común
1 class R e s t r i c t e d P o i n t 3 D {
2 p r i v a t e s t a t i c i n t LIMITMAX = 100; / / A t r i b u t o s de c l a s e
3 p r i v a t e s t a t i c i n t LIMITMIN = 0 ;
4 private int x ; / / A t r i b u t o s de i n s t a n c i a
5 private int y ;
6 private int z ;
7
8 p r i v a t e i n t r e s t r i c T o R a n g e ( i n t a ) { / / Mé todo de i n s t a n c i a
9 i n t r e s u l t = Math . max ( LIMITMIN , a ) ;
10 r e s u l t = Math . min ( r e s u l t , LIMITMAX ) ;
11 return r e s u l t ;
12 }
13
14 RestrictedPoint3D ( int x , int y , int z ) { / / Constructor
15 this . x = restricToRange ( x ) ;
16 this . y = restricToRange ( y ) ;
17 this . z = restricToRange ( z ) ;
18 / / Debido a l a i g u a l d a d de nombres ,
19 / / es n e c e s a r i o usar " t h i s " para r e f e r i r s e a l o s a t r i b u t o s
20 }
21
22 RestrictedPoint3D ( int x , int y ) { / / Constructor
23 this ( x , y , 0) ; / / Se l l a m a a l o t r o c o n s t r u c t o r
24 }
25 }
Ejemplos
Ruby
El equivalente al constructor es un método especial llamado
initialize
Ejemplos
Ejemplos
¡Mal ejemplo!
Ejemplos
Ejemplos
Ejemplos
C++: Destructor
1 class A { C++: Pila y Heap
2 };
3 1 void unaFuncion ( ) {
4 class B { 2 A a; / / En l a p i l a
5 private : 3 B ∗b = new B ( ) ; / / En e l heap
6 A ∗atributo ; 4
7 5 // . . .
8 public : 6
9 B() { 7 delete ( b ) ; / / se l i b e r a d e l heap
10 a t r i b u t o = new A ( ) ; 8 / / a l s a l i r se l i b e r a l a p i l a
11 } 9 }
12 10
13 ~B ( ) { 11 i n t main ( ) {
14 / / destructor 12 unaFuncion ( ) ;
15 delete ( a t r i b u t o ) ; 13 }
16 }
17 };
(Curso 2019-2020)