Download Clases y Objetos

Document related concepts
no text concepts found
Transcript
Clases y Objetos
Java es un lenguaje orientado a objetos que incorpora un gran número de clases
predefinidas organizadas en paquetes. La programación en Java supone definir clases
de forma jerárquica, construir (crear) objetos de dichas clases y realizar acciones
(operaciones) con ellos.
Clase
En el mundo real, se encuentran muchos objetos del mismo tipo. Por ejemplo, mi
computadora es una de todas las computadoras del mundo. Utilizando el término
orientado a objetos, mi computadora es un miembro o ejemplar de la clase de objetos
conocidos como computadoras. Objetos similares se reproducen como objetos del
mismo tipo, por lo que se puede crear un prototipo para tales objetos. Estos prototipos
son los que se conocen como clases.
Definición de clase:
Una clase es un prototipo que define las variables y los métodos de todos los objetos
con características comunes.
Llevando esto a nuestro caso:
Aparte del conjunto de clase predefinidas en Java organizadas en paquetes, nosotros
vamos a trabajar inicialmente con un paquete llamado uni, dentro de uni tenemos otros
paquetes math y robot a su vez éstos paquetes tienen un conjunto de clases (Vector2D,
Mundo, Robot, etc.). Vamos utilizar éstas clases para simplificar algunos conceptos
básicos referentes a objetos (creación de objetos), funciones de objeto (métodos), etc. Y
más adelante vamos a crear nuestras propias clases.
Paquetes
Clases
Objetos
Los objetos constituyen el concepto fundamental para entender la POO. Si miramos a
nuestro alrededor podemos ver muchos ejemplos de objetos del mundo real: mesa, silla,
persona, coche, estudiante, robot etc.
Un objeto es una instancia de una clase. Una instancia es un ejemplar, un caso concreto.
Si tomamos la clase “estudiante”, cada estudiante es una instancia de la clase
Estudiante. Un objeto tiene una estructura y al igual que los objetos del mundo real y
comparten dos características comunes: estado y comportamiento.
Todo aquello que el objeto conoce (estado), se expresa por sus atributos, y todo lo que
puede hacer (comportamiento) se expresa por sus operaciones.
•
•
Atributos. Estructura de los objetos: sus componentes y la información o datos
contenidos en ellos (otro sinónimos de atributos son «variables de instancia»
o «miembros datos»).
Operaciones. El comportamiento de los objetos. Normalmente se utiliza el
término operaciones aunque a veces se utilizan otros sinónimos como
«servicios» o «métodos»)
Para usar un objeto en un programa, se debe declarar y crear el objeto primero y,
después enviarle mensajes.
Declaración de Objetos:
Cada objeto que se usa en un programa debe ser declarado. Una declaración de objetos
designa el nombre (identificador) del objeto y la clase a la cual pertenece el objeto. Su
sintaxis es:
<nombre de clase> <nombre de objeto> ;
Donde <nombre de objeto> es una sentencia de nombre de objeto y <nombre de
clase> es el nombre de la clase a la cual pertenece el objeto.
Ejemplo: vamos a declarar la variable (variable de referencia1) miMundo de la clase
Mundo (debemos instanciar primero un mundo en donde vivirá carlos, que es nuestro
robot que vamos a instanciar más adelante).
Para crear un objeto como una instancia2 o ejemplar de una clase, la clase debe estar ya
definida.
Creación de Objetos
Un objeto no se crea realmente cuando se declara. Una declaración de objeto
simplemente declara el nombre (identificador) que se va usar para referirse al objeto.
Se crea un objeto cuando se llama al operador new.
La sintaxis para new es:
Ejemplo:
Con esta sentencia se realiza lo siguiente:
1. miMundo el nombre del objeto declarado (variable de
referencia)
2. Creación del Objeto: el operador new crea un objeto de tipo
Mundo y asigna espacio de memoria
3. Iniciación: Mundo( ) en éste caso sin ningún parámetro de
inicialización
Se pueden combinar la declaración e instanciación juntas en una sentencia utilizando la
siguiente sintaxis.
1
2
Un identificador al que se le puede asignar una referencia a un objeto de una clase particular
Viene de una mala traducción de la palabra instance que en ingles significa ejemplar
Esta sintaxis es la que vamos a utilizar en este curso
Constructores de una clase
1. Los constructores se reconocen porque tiene el mismo nombre que la
clase.
2. Siempre existe un constructor por defecto que no recibe argumentos
3. Una clase puede tener varios constructores, pero todos ellos deben tener
el mismo nombre (el de la clase), y diferentes números o tipos de
argumentos, para que el compilador pueda distinguirlos.
4. Los constructores sólo pueden ser llamados con el operador new
Ejemplos:
1) new Mundo();
2) new Mundo(“El mundo del Robot”, 20, 20)
En el ejemplo 1 tenemos un constructor sin argumentos
En el ejemplo 2 tenemos un constructor con argumentos
Nota: Referencia
Cualquier tipo de datos que definamos en Java con una clase es un tipo de dato por
referencia.
Cuando declaramos una variable de tipo primitivo (int, long, double, etc.) en Java,
estamos reservando espacio en memoria para almacenar un valor de tipo
correspondiente.
Sin embargo, cuando declaramos una variable de referencia en Java, lo único que
hacemos es reservar una zona en memoria donde se almacenará una referencia a un
objeto del tipo especificado (y no el objeto en sí, de ahí la necesidad de utilizar el
operador new)
Mensajes en Objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método.
Ejemplo:
Antes que nada vamos a crear el objeto carlos de la clase Robot.
Una vez que creamos el objeto (carlos) podemos mandarle mensaje.
La sintaxis para enviar mensaje a un objeto es:
<nombre de objeto> . <nombre de método> (<argumentos>);
Donde <nombre de objeto> es un nombre de objeto, <nombre de método> es un
nombre método del objeto y <argumentos> es una secuencia de valores que se pasan al
método, si es que tiene argumentos.
Ejemplos:
carlos.avanzar();
carlos.ponerCono();
carlos.avanzar();
Los métodos se representan con un nombre seguido de dos paréntesis para
diferenciarlos de los nombres de variables, avanzar(), en este caso sin argumento porque
no lo tiene, pero si tiene nos vemos obligados a pasar los mismos.
Ejemplo completo:
Observaciones: En el bloque del método main(), se crean los objetos que sean
necesarios y se les envían mensajes para indicarles lo que deseamos lo que hagan.
Una vez compilado y ejecutado obtendremos.
Conclusión:
Podemos decir entonces:
• Todo es un objeto
• Un objeto puede caracterizar una entidad física (un teléfono, un
robot, un interruptor, un cliente) o una entidad abstracta (un número,
una fecha, una ecuación matemática).
• Los objetos se comunican entre sí pasándose mensajes
• Todo objeto tiene un identidad única, la identidad de un objeto no
depende del contenido de sus variables de instancia, el contenido de
las variables de instancia puede cambiar a los largo de la vida de un
objeto.
• Cada objeto tiene un estado (contiene su propia memoria [datos])
• Un objeto es un caso particular (instancia) de una clase.