Você está na página 1de 31

3

La abstraccin se puede definir de varias formas. Nos centraremos en la idea de alejarnos de una funcin
especfica para adoptar una ms general.
Piense en abstraccin como el proceso de pasar de una tarea ms especfica a una tarea ms general. Por
lo tanto, en lugar de llamar a un constructor que siempre realice las mismas tareas, podramos transferir
valores que nos permitieran cambiar la configuracin inicial.

Ya hemos comenzado a realizar la abstraccin mediante la creacin de nuestros propios mtodos y


constructores.

Cuando escriba cdigo fuente y compruebe que algo que est escribiendo es muy parecido a otro cdigo
que ha escrito, debe comprobar si puede abstraer su finalidad a otro mtodo. A continuacin, llmelo
desde las ubicaciones correctas. A continuacin, producir cdigo que es ms fcil de mantener.

Podramos haber escrito


Fly fly1 = new Fly();
fly1.setSpeed(4); // un mtodo definido
fly1.setRotation(90);
Tendramos que repetir el cdigo anterior para cada mosca. Al abstraer su propsito al constructor, reduce
en gran medida la repeticin.

El equipo de programacin de Greenfoot ha creado mtodos para que la tarea de desarrollo le resulte ms
sencilla. Puede abstraerlo an ms para que sea ms potente.

Modificar con frecuencia constructores para que pueda transferirles la informacin inicial.

public void increaseScore(int value) {


score = score + value;
}
Podramos llamarlo desde un rea como increaseScore(5) y desde otra rea como increaseScore(10).

10

Sumamos 1 a la velocidad porque getRandomNumber() puede devolver un 0. Una mosca con una velocidad
de cero es muy fcil de atrapar.

11

Si desea cambiar la velocidad, el giro, etc. durante un juego, debe crear una variable de clase para
almacenar el valor actual.

12

De este modo, se agregar una mosca en las coordenadas (150,150) con una velocidad mxima aleatoria de
2 a partir de una direccin de 90 grados.

13

Ahora se estn agregando 4 moscas, cada una de ellas con una velocidad aleatoria mxima, una direccin
inicial y un punto de partida distinto. Todas ellas con solo 4 lneas de cdigo en el constructor BeeWorld.

14

Escribir lneas de cdigo que presiente que se han escrito anteriormente suele ser el detonante de la
abstraccin.

15

16

Creamos 10 moscas, cada una con una direccin y posicin aleatorias en la pantalla.
Esto se realiza mediante un bucle for. El bucle for ejecutar el cdigo entre parntesis un nmero
determinado de veces. En este ejemplo hay 10 bucles. Nos centraremos en los bucles a medida que avance
el curso.
Podramos aumentar la velocidad mxima de las moscas, ya que el juego hace que sea cada vez ms difcil
atraparlas.

17

Si va a contar con actores que comparten funcionalidades, es mejor crear una subclase de actor, agregar la
funcionalidad y, a continuacin, crear una subclase de esa clase. Recuerde que la clase Movement puede
contener varias subclases.

18

private static final int SPEED= 4


Crea una clase constante que podemos utilizar en nuestro cdigo. Su ventaja es que se hace que nuestro
cdigo ms legible al utilizarlo y tambin nos permite cambiar un valor para aumentar la velocidad de todos
los actores que la usan.

19

setLocation() mueve un actor sin tener que cambiar su giro. En algunos casos, es mejor que move() y
rotate(). En el ejemplo, deseamos que un beb se mueva por la pantalla. No queremos que gire, sino que
est siempre erguido, pero que se siga moviendo por la pantalla en distintas direcciones.

20

Si el beb se movi en una direccin tras estar en contacto con otro actor, tambin podramos llamar a este
mtodo en esta ubicacin.
if (leftBump()) {
moveLeft();
}

21

En algunos escenarios, no tendr que preocuparse por las acciones que se producen lejos de los actores
principales, pero en otros juegos tendr que supervisarlos constantemente.

22

En algunos escenarios, no tendr que preocuparse por las acciones que se producen lejos de los actores
principales, pero en otros juegos tendr que supervisarlos constantemente.

23

Tenga en cuenta que hemos mantenido la puntuacin de propiedad en privado, de modo que ningn actor
ajeno a BeeWorld tenga acceso directo a la misma. Deben utilizar los mtodos pblicos getScore() y
updateScore().

24

Conversin es un trmino con el que le va a resultar muy familiar durante este curso.

25

No podemos convertir todo lo que deseemos para que sea algo diferente. Debe existir una relacin como
entre World y BeeWorld o Actor y Bee. No podramos convertir World en Actor, por ejemplo.

26

Debe tener en cuenta que esto es muy similar a nuestro ltimo ejemplo. Creamos un campo de clase
privada para almacenar el tipo de datos a los que deseamos acceder. A continuacin, creamos un mtodo
pblico para devolver este valor.

27

BeeWorld myworld = (BeeWorld)getWorld();


Esta lnea obtiene una referencia al mundo actual y la almacena en la variable myworld. Puesto que el tipo
de retorno de getWorld es World, tenemos que convertirlo en un tipo BeeWorld.
Bee bee = myworld.getBee();
Estas lneas crean una variable bee que har referencia a la abeja que devuelve nuestro mtodo getBee();
Una vez que tenemos esta referencia, podemos utilizar la abeja que se ha devuelto para acceder a mtodos
de la instancia Bee.
Usamos los mtodos getX() y getY() de la instancia Bee en el mtodo de actor turnTowards. Esto significa
que la araa siempre girar para estar frente a la instancia Bee en el mundo.

28

29

30

Você também pode gostar