Browse Source

README-es.md edited online with Bitbucket

Jose R Ortiz Ubarri 8 years ago
parent
commit
9b1a03d10a
1 changed files with 50 additions and 49 deletions
  1. 50
    49
      README-es.md

+ 50
- 49
README-es.md View File

38
 ---
38
 ---
39
 
39
 
40
 
40
 
41
-##Clases y objetos en C++
41
+## Clases y objetos en C++
42
 
42
 
43
 Un *objeto* es un ente que contiene datos y procedimientos para manipularlos. Al igual que cada variable tiene un *tipo* de dato asociada a ella, cada objeto tiene una *clase* asociada que describe las propiedades de los objetos:
43
 Un *objeto* es un ente que contiene datos y procedimientos para manipularlos. Al igual que cada variable tiene un *tipo* de dato asociada a ella, cada objeto tiene una *clase* asociada que describe las propiedades de los objetos:
44
 sus datos (*atributos*), y los procedimientos con los que se pueden manipular los datos (*métodos*).
44
 sus datos (*atributos*), y los procedimientos con los que se pueden manipular los datos (*métodos*).
45
 
45
 
46
-Para definir y utilizar un objeto  no hay que saber todos los detalles de los métodos del objeto pero hay que saber cómo crearlo, y cómo interactuar con él. La  información necesaria está disponible en la documentación de la clase. Antes de crear objetos de cualquier clase debemos familiarizarnos con su documentación. La documentación nos indica, entre otras cosas, que ente se está tratando de representar con la clase, y cuáles son los interfaces  o métodos disponibles para manipular los objetos de la clase.
46
+Para definir y utilizar un objeto no hay que saber todos los detalles de los métodos del objeto pero hay que saber cómo crearlo, y cómo interactuar con él. La  información necesaria está disponible en la documentación de la clase. Antes de crear objetos de cualquier clase debemos familiarizarnos con su documentación. La documentación nos indica, entre otras cosas, que ente se está tratando de representar con la clase, y cuáles son los interfaces o métodos disponibles para manipular los objetos de la clase.
47
 
47
 
48
-Una vez hayas bajado los archivos de este proyecto a tu computadora, dale un vistazo a la documentación de la clase `Bird` que se encuentra dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`).
48
+Dale un vistazo a la documentación de la clase `Bird` que se encuentra en [este enlace] (http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html). 
49
 
49
 
50
-###Clases
50
+### Clases
51
 
51
 
52
-Una clase es una plantilla para la creación de objetos que establece sus atributos y su comportamiento. Si no se especifica lo contrario, los atributos y métodos definidos en una clase serán "privados". Esto quiere decir que esas variables solo se pueden acceder y cambiar por los métodos de la clase (*constructores*, *"setters"* y *"getters"*, entre otros).
52
+Una clase es una descripción de los datos y procesos de un objeto. La declaración de una clase establece los atributos que tendrá cada objeto de esa clase y los métodos que pueden invocar.
53
+
54
+
55
+Si no se especifica lo contrario, los atributos y métodos definidos en una clase serán privados. Esto quiere decir que esas variables solo se pueden acceder y cambiar por los métodos de la clase (*constructores*, *"setters"* y *"getters"*, entre otros). 
53
 
56
 
54
 Lo siguiente es el esqueleto de la declaración de una clase:
57
 Lo siguiente es el esqueleto de la declaración de una clase:
55
 
58
 
56
 ---
59
 ---
57
 
60
 
58
-```cpp
61
+```
59
   class NombreClase
62
   class NombreClase
60
    {
63
    {
61
     // Declaraciones
64
     // Declaraciones
62
 
65
 
63
     private:
66
     private:
64
-      // Declaraciones de variables o atributos y
65
-      // prototipos de métodos
67
+      // Declaraciones de variables o atributos y 
68
+      // prototipos de métodos 
66
       // que sean privados para esta clase
69
       // que sean privados para esta clase
67
 
70
 
68
       tipo varPrivada;
71
       tipo varPrivada;
69
       tipo nombreMetodoPrivado(tipo de los parámetros);
72
       tipo nombreMetodoPrivado(tipo de los parámetros);
70
 
73
 
71
     public:
74
     public:
72
-      // Declaraciones de atributos y
73
-      // prototipos de métodos
75
+      // Declaraciones de atributos y 
76
+      // prototipos de métodos 
74
       // que sean públicos para todo el programa
77
       // que sean públicos para todo el programa
75
 
78
 
76
       tipo varPública;
79
       tipo varPública;
79
 ```
82
 ```
80
 ---
83
 ---
81
 
84
 
82
-Puedes ver la declaración de la clase `Bird` en el archivo `bird.h` incluido en el programado de esta experiencia de laboratorio.
85
+Puedes ver la declaración de la clase `Bird` en el archivo `bird.h` incluido en el programa de esta experiencia de laboratorio.
83
 
86
 
84
-###Objetos
87
+### Objetos
85
 
88
 
86
-Un objeto es un ente que contiene datos (al igual que una variable), llamados sus `atributos`, y también contiene procedimientos, llamados `métodos`, que se usan para manipularlos. Los objetos son "instancias" de una clase que se crean de manera similar a como se definen las variables, con la excepción de que en ocasiones hay que añadir valores para los parámetros:
89
+Un objeto es un ente que contiene datos (al igual que una variable), llamados sus `atributos`, y también contiene procedimientos, llamados `métodos`, que se usan para manipularlos. Los objetos son *instancias* de una clase que se crean de manera similar a como se definen las variables:
87
 
90
 
88
-`NombreClase nombreObjeto(argumentos);`
91
+`NombreClase nombreObjeto;`
89
 
92
 
90
-La creación de los objetos la hacen unas funciones llamadas `constructores` que explicaremos más adelante. Una vez creamos un objeto, podemos interaccionar con él usando los métodos de la clase a la que pertenece.
93
+Una vez creamos un objeto, podemos interactuar con él usando los métodos de la clase a la que pertenece.
91
 
94
 
92
 ###Métodos de una clase
95
 ###Métodos de una clase
93
 
96
 
94
-Los métodos de una clase determinan qué acciones podemos tomar sobre los objetos de esa clase.  Los métodos son parecidos a las funciones en el sentido de que pueden recibir parámetros y regresar un resultado.  Una forma elemental de conocer los métodos de una clase es leyendo la declaración de la clase. Por ejemplo, lo siguiente es parte de la declaración de la clase `Bird` en el archivo `bird.h`.
97
+Los métodos de una clase determinan qué acciones podemos tomar sobre los objetos de esa clase.  Los métodos son parecidos a las funciones en el sentido de que pueden recibir parámetros y regresar un resultado.  Una forma elemental de conocer los métodos de una clase es leyendo la declaración de la clase. Por ejemplo, el siguiente código es parte de la declaración de la clase `Bird` en el archivo `bird.h`. 
95
 
98
 
96
 ---
99
 ---
97
 
100
 
98
 
101
 
99
-```cpp
100
-
102
+```
101
 class Bird : public QWidget
103
 class Bird : public QWidget
102
 {
104
 {
103
-
104
-//...
105
-
105
+.
106
+.
107
+.
106
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
108
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
107
-
109
+    
108
     int getSize() const;
110
     int getSize() const;
109
     EyeBrowType getEyebrow() const ;
111
     EyeBrowType getEyebrow() const ;
110
     QString  getFaceColor() const;
112
     QString  getFaceColor() const;
115
     void setEyebrow(EyeBrowType) ;
117
     void setEyebrow(EyeBrowType) ;
116
     void setFaceColor(QString) ;
118
     void setFaceColor(QString) ;
117
     void setEyeColor(QString) ;
119
     void setEyeColor(QString) ;
118
-
119
-//...
120
-
120
+.
121
+.
122
+.
121
 };
123
 };
122
 ```
124
 ```
123
 ---
125
 ---
124
 
126
 
125
-Una vez creado un objeto, sus métodos proveen la única forma de cambiar sus atributos u obtener información o cómputos de los mismos. Es por esto que comúnmente se llama *interface* al conjunto de métodos de una clase. Los métodos son el interface entre el usuario de un objeto y su contenido.
127
+Una vez creado un objeto, sus métodos proveen la única forma de cambiar sus atributos, obtener información o hacer cómputos en los mismos. Es por esto que comúnmente se llama *interfaz* al conjunto de métodos de una clase. Los métodos son la interfaz entre el usuario de un objeto y su contenido.
126
 
128
 
127
 
129
 
128
 En general, en cada clase se definen los prototipos de los métodos para construir los objetos, y para buscar, manipular y guardar los datos. Lo siguiente es el formato general del prototipo de un método:
130
 En general, en cada clase se definen los prototipos de los métodos para construir los objetos, y para buscar, manipular y guardar los datos. Lo siguiente es el formato general del prototipo de un método:
129
 
131
 
130
 `tipoDevolver nombreMetodo(tipo de los parámetros);`
132
 `tipoDevolver nombreMetodo(tipo de los parámetros);`
131
 
133
 
132
-Luego, en el código del proyecto se escribe  la función correspondiente al método, comenzando con un encabezado que incluye el nombre de la clase a la cuál pertenece la función:
134
+Luego, en el código del proyecto se escribe la función correspondiente al método, comenzando con un encabezado que incluye el nombre de la clase a la cuál pertenece la función:
133
 
135
 
134
 `TipoDevolver NombreClase::NombreMetodo(parámetros)`
136
 `TipoDevolver NombreClase::NombreMetodo(parámetros)`
135
 
137
 
136
-Para que los objetos que sean instancia de una clase puedan tener acceso a las variables privadas de la clase se declaran métodos que sean públicos y que den acceso a estas clases (ver abajo "setters" y "getters"). Es preferible utilizar variables privadas y accederlas mediante los "setters" y "getters", a declararlas públicas ya que de esta manera el objeto que está asociado a estas variables tiene el control de los cambios que se hacen.
138
+Para que los objetos que sean una instancia de una clase puedan tener acceso a las variables privadas de la clase se declaran métodos que sean públicos y que den acceso a estas clases (ver abajo "setters" y "getters"). Es preferible utilizar variables privadas y accederlas mediante los "setters" y "getters", a declararlas públicas ya que de esta manera el objeto que está asociado a estas variables tiene el control de los cambios que se hacen.
137
 
139
 
138
 Para invocar un método escribimos el nombre del objeto, seguido de un punto y luego el nombre del método:
140
 Para invocar un método escribimos el nombre del objeto, seguido de un punto y luego el nombre del método:
139
 
141
 
141
 
143
 
142
 
144
 
143
 
145
 
144
-####Constructores
146
+#### Constructores
145
 
147
 
146
-Los primeros métodos de una clase que debemos entender son los *constructores*. Una clase puede tener múltiples constructores. Uno de los constructores será invocado automáticamente cada vez que se crea un objeto de esa clase. En la mayoría de los casos, los constructores se utilizan para inicializar los valores de los atributos del objeto. Para poder crear objetos de una clase, debemos conocer cuáles son sus constructores.
148
+Los primeros métodos de una clase que debemos entender son los *constructores*. Una clase puede tener múltiples constructores. Uno de los constructores será invocado automáticamente cada vez que se crea un objeto de esa clase. En la mayoría de los casos, los constructores se utilizan para inicializar los valores de los atributos del objeto. Para poder crear objetos de una clase, debemos conocer cuáles son sus constructores. 
147
 
149
 
148
 En C++, los  constructores tienen el mismo nombre que la clase. No se declara el tipo que devuelven porque estas funciones no devuelven ningún valor. Su declaración (incluida en la definición de la clase) es algo así:
150
 En C++, los  constructores tienen el mismo nombre que la clase. No se declara el tipo que devuelven porque estas funciones no devuelven ningún valor. Su declaración (incluida en la definición de la clase) es algo así:
149
 
151
 
159
 
161
 
160
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
162
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
161
 
163
 
162
-Puedes ver las declaraciones de los prototipos de estos métodos en la declaración de la clase `Bird` en el archivo `bird.h` del proyecto. La documentación de la clase se encuentra dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`). El primer constructor, `Bird (QWidget *parent=0)`, es un método  que se puede invocar con uno o ningún argumento. Si al invocarlo no se usa argumento, el parámetro de la función toma el valor 0.
164
+Puedes ver las declaraciones de los prototipos de estos métodos en la declaración de la clase `Bird` en el archivo `bird.h` del proyecto. La documentación se encuentra en [este enlace] (http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html). El primer constructor, `Bird (QWidget *parent=0)`, es un método que se puede invocar con uno o ningún argumento. Si al invocarlo no se usa argumento, el parámetro de la función toma el valor 0. 
163
 
165
 
164
-El constructor de una clase que se puede invocar sin usar argumentos es el *constructor* "*default*" de la clase; esto es, el constructor que se invoca cuando creamos un objeto usando una instrucción como:
166
+El constructor de una clase que se puede invocar sin usar argumentos es el *constructor por defecto ("default")* de la clase; esto es, el constructor que se invoca cuando creamos un objeto usando una instrucción como:
165
 
167
 
166
 `Bird pitirre;`
168
 `Bird pitirre;`
167
 
169
 
168
 Puedes ver las implementaciones de los métodos de la clase Bird en el archivo `bird.cpp`. Nota que el primer constructor, `Bird (QWidget *parent=0)`, asignará valores aleatorios ("random") a cada uno de los atributos del objeto. Más adelante hay una breve explicación de la función `randInt`.
170
 Puedes ver las implementaciones de los métodos de la clase Bird en el archivo `bird.cpp`. Nota que el primer constructor, `Bird (QWidget *parent=0)`, asignará valores aleatorios ("random") a cada uno de los atributos del objeto. Más adelante hay una breve explicación de la función `randInt`.
169
 
171
 
170
-Dale un vistazo a la documentación del segundo constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. Esta función requiere cuatro argumentos y tiene un quinto argumento que es opcional porque tiene un valor por defecto. Una manera para usar este constructor es creando un objeto como el siguiente:
172
+Dale un vistazo a la documentación del segundo constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. Esta función requiere cuatro argumentos y tiene un quinto argumento que es opcional porque tiene un valor predeterminado. Una manera para usar este constructor es creando un objeto como el siguiente:
171
 
173
 
172
 `Bird guaraguao(200, Bird::UPSET, "blue", "red");`
174
 `Bird guaraguao(200, Bird::UPSET, "blue", "red");`
173
 
175
 
174
 
176
 
175
-####"Setters" ("mutators")
177
+#### "Setters" ("mutators")
176
 
178
 
177
 Las clases proveen métodos para modificar los valores de los atributos de un objeto que se ha creado. Estos métodos se llaman "*setters*" o "*mutators*". Usualmente se declara un "setter" por cada atributo que tiene la clase. La clase `Bird` tiene los siguientes "setters":
179
 Las clases proveen métodos para modificar los valores de los atributos de un objeto que se ha creado. Estos métodos se llaman "*setters*" o "*mutators*". Usualmente se declara un "setter" por cada atributo que tiene la clase. La clase `Bird` tiene los siguientes "setters":
178
 
180
 
179
-* `void setSize (int)`
180
-* `void setEyebrow (EyeBrowType)`
181
-* `void setFaceColor (QString)`
182
-* `void setEyeColor (QString)`
181
+* `void setSize (int)` 
182
+* `void setEyebrow (EyeBrowType)` 
183
+* `void setFaceColor (QString)` 
184
+* `void setEyeColor (QString)` 
183
 
185
 
184
 
186
 
185
-Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en  `bird.h`, y la implementación de algunos de los métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `bobo` de la clase `Bird` y luego cambia su tamaño a 333.
187
+Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y la implementación de algunos de los métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `bobo` de la clase `Bird` y luego cambia su tamaño a 333.
186
 
188
 
187
 ```
189
 ```
188
 Bird bobo;
190
 Bird bobo;
190
 ```
192
 ```
191
 
193
 
192
 
194
 
193
-####"Getters" ("accessors")
195
+#### "Getters" ("accessors")
194
 
196
 
195
-Las clases también proveen métodos para acceder  ("get") el valor del atributo de un objeto. Estos métodos se llaman "*getters*" o "*accessors*". Usualmente se declara un "getter" por cada atributo que tiene la clase. La clase `Bird` tiene los siguientes "getters":
197
+Las clases también proveen métodos para acceder ("get") el valor del atributo de un objeto. Estos métodos se llaman "*getters*" o "*accessors*". Usualmente se declara un "getter" por cada atributo que tiene la clase. La clase `Bird` tiene los siguientes "getters":
196
 
198
 
197
-* `int getSize ()`
198
-* `EyeBrowType getEyebrow ()`
199
+* `int getSize ()` 
200
+* `EyeBrowType getEyebrow ()` 
199
 * `QString  getFaceColor ()`
201
 * `QString  getFaceColor ()`
200
-* `QString   getEyeColor ()`
202
+* `QString   getEyeColor ()` 
201
 
203
 
202
 
204
 
203
-Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en  `bird.h`, y las implementaciones de algunos de métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `piolin` de la clase `Bird` e imprime su tamaño.
205
+Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y las implementaciones de algunos de métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `piolin` de la clase `Bird` e imprime su tamaño.
204
 
206
 
205
 ```
207
 ```
206
 Bird piolin;
208
 Bird piolin;
207
 cout << piolin.getSize();
209
 cout << piolin.getSize();
208
 ```
210
 ```
209
 
211
 
210
-####Otras funciones o métodos que utilizarás en esta experiencia de laboratorio
212
+#### Otras funciones o métodos que utilizarás en esta experiencia de laboratorio
211
 
213
 
212
 **MainWindow:** El archivo `mainwindow.h` contiene la declaración de una clase llamada `MainWindow`. Los objetos que sean instancias de esta clase podrán utilizar los métodos sobrecargados
214
 **MainWindow:** El archivo `mainwindow.h` contiene la declaración de una clase llamada `MainWindow`. Los objetos que sean instancias de esta clase podrán utilizar los métodos sobrecargados
213
 
215
 
214
 `void MainWindow::addBird(int x, int y, Bird &b)`  
216
 `void MainWindow::addBird(int x, int y, Bird &b)`  
215
 
217
 
216
-`void MainWindow::addBird(Bird &b)`
218
+`void MainWindow::addBird(Bird &b)` 
217
 
219
 
218
 que añadirán a la pantalla un dibujo del objeto de la clase `Bird` que es recibido como argumento. El código en el siguiente ejemplo crea un objeto `w` de la clase `MainWindow`, crea un objeto `zumbador` de la clase `Bird` y lo añade a la posición (200,200) de la pantalla `w` usando el primer método.
220
 que añadirán a la pantalla un dibujo del objeto de la clase `Bird` que es recibido como argumento. El código en el siguiente ejemplo crea un objeto `w` de la clase `MainWindow`, crea un objeto `zumbador` de la clase `Bird` y lo añade a la posición (200,200) de la pantalla `w` usando el primer método.
219
 
221
 
220
 
222
 
221
-```cpp
222
 
223
 
224
+```
223
 MainWindow w;
225
 MainWindow w;
224
 Bird zumbador;
226
 Bird zumbador;
225
 w.addBird(200,200,zumbador);
227
 w.addBird(200,200,zumbador);
247
 para generar números enteros aleatorios ("random") en el rango [min, max]. El método `randInt` depende de otra función para generar números aleatorios que requiere un primer elemento o *semilla* para ser evaluada. En este proyecto, ese primer elemento se genera con la invocación `srand(time(NULL)) ;`.
249
 para generar números enteros aleatorios ("random") en el rango [min, max]. El método `randInt` depende de otra función para generar números aleatorios que requiere un primer elemento o *semilla* para ser evaluada. En este proyecto, ese primer elemento se genera con la invocación `srand(time(NULL)) ;`.
248
 
250
 
249
 
251
 
250
-
251
 ---
252
 ---
252
 
253
 
253
 ---
254
 ---