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.