Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porPascual Aguirre Cuenca Modificado hace 7 años
1
Tema 5: Objetos y Clases Introducción Objetos Clases predefinidas
Alias Definición de métodos Definición de clases Encapsulación El modificador static Sobrecarga de métodos Escuela Superior de Informática. UCLM
2
Introducción Ahora que ya hemos visto algunos conceptos de programación, vamos a examinar los objetos con más detalle. El capítulo 4 tratará de: el concepto de objetos el uso de clases para crear objetos el uso de clases predefinidas la definición de métodos y el paso de parámetros el uso de las clases modificadores de visibilidad variables estáticas y métodos sobrecarga de métodos Escuela Superior de Informática. UCLM
3
Objetos Un objeto tiene: Por ejemplo, una cuenta bancaria concreta
estado - características descriptivas comportamientos - qué puede hacer (o qué se puede hacer sobre él) Por ejemplo, una cuenta bancaria concreta tiene un nombre de cuenta tiene un saldo actual se le pueden hacer depósitos se le pueden retirar fondos Escuela Superior de Informática. UCLM
4
Clase Una clase es un modelo de un objeto
Es el patrón con el que se crean los modelos Una clase define los métodos y los tipos de datos asociados con un objeto Un objeto se crea a partir de una clase dada. El objeto es un miembro (“instancia”) de la clase Por ejemplo, la clase cuenta puede describir muchas cuentas corrientes pero el objeto cuenta_de_ana es una cuenta particular con un saldo determinado Escuela Superior de Informática. UCLM
5
Creando objetos El operador new crea un operador a partir de una clase: cuenta cuenta_de_ana = new cuenta (); Esta declaración establece que cuenta_de_ana es una variable que refiere a un objeto creado a partir de la clase cuenta Es inicializada al objeto creado por el operador new El nuevo objeto es establecido por una llamada a un constructor de la clase Escuela Superior de Informática. UCLM
6
Constructores Un constructor es un método especial usado para construir un objeto Tiene el mismo nombre que la clase Puede tomar parámetros los cuales son frecuentemente usados para inicializar algunas variables en el objeto Por ejemplo, el constructor cuenta puede construirse de forma que acepte un parámetro especificando el saldo inicial: cuenta cuenta_de_ana = new cuenta (125.89); Escuela Superior de Informática. UCLM
7
Referencia a objetos La declaración de la variable que refiere al objeto y la creación del objeto pueden ser actividades separadas: cuenta cuenta_de_ana; cuenta_de_ana = new cuenta (125.89); Una vez que un objeto existe, sus métodos pueden ser invocados usando el operador punto cuenta_de_ana.ingreso (35.00); Escuela Superior de Informática. UCLM
8
La clase cadena Una cadena de caracteres en Java es un objeto definido por la clase String String nombre = new String ("Ken Arnold"); Puesto que las cadenas son tan comunes, Java permita una sintaxis abreviada: String nombre = "Ken Arnold"; Las cadenas en java son inmutables; una vez que un objeto de cadena tiene un valor, no se puede cambiar Escuela Superior de Informática. UCLM
9
La clase cadena Un carácter en una cadena puede referirse por su posición, o índice El índice del primer carácter es cero La clase String está definida en el paquete java.lang y por lo tanto se importa automáticamente Muchos métodos útiles están definidos en la clase String Véase Carpe_Diem.java Escuela Superior de Informática. UCLM
10
La clase StringTokenizer
La clase StringTokenizer hace fácil fragmentar una cadena en trozos denominados símbolos o elementos (tokens) Por defecto, los delimitadores para los tokens son el espacio, el tabulador, el retorno de carro y los caracteres de línea nueva (espacio en blanco) La clase StringTokenizer está definida en el paquete java.util Véase Int_Reader.java Escuela Superior de Informática. UCLM
11
La clase Random Un programa puede necesitar generar un número aleatorio (“random”) La clase Random provee métodos para simular un generador de números aleatorios El método nextInt devuelve un número aleatorio del espectro entero de valores int Normalmente, el número debe “escalarse” y “desplazarse” a un intervalo determinado para ser útil Véase Flip.java Escuela Superior de Informática. UCLM
12
La clase Random Expresión Math.abs (rand.newInt()) % 6 + 1
Intervalo 1 a 6 1 a 10 0 a 100 20 a 30 -5 a 5 Escuela Superior de Informática. UCLM
13
Referencias Una referencia a un objeto almacena la dirección de memoria del objeto Pieza_de_ajedrez alfil1 = new Pieza_de_ajedrez(); Toda la interacción con un objeto transcurre a través de una referencia por variable Las referencias tienen efecto sobre acciones tales como la asignación alfil1 Escuela Superior de Informática. UCLM
14
Asignación El acto de asignación toma una copia de una valor y lo almacena en una variable Para tipos primitivos: num2 = num1; Antes num1 5 num2 12 Después num1 5 num2 Escuela Superior de Informática. UCLM
15
Asignación por referencia
Por referencia a objeto se copia el valor de la localización en memoria: bishop2 = bishop1; Antes alfil1 alfil2 Después alfil1 alfil2 Escuela Superior de Informática. UCLM
16
Alias Dos o más referencias que refieren al mismo objetos se denominas alias una de otra. Sólo hay una copia del objeto (y sus datos), pero con múltiples formas de acceder a ella Los alias pueden ser útiles pero hay que usarlos con cuidado Modificar el objeto a través de una referencia se refleja en todos los alias ya que todos ellos refieren al mismo objeto Escuela Superior de Informática. UCLM
17
Recogida de basura (Garbage Collection)
Cuando un objeto ya no tiene ninguna referencia hacia él, ya no es accesible por el programa En estas condiciones es inútil y, por tanto, se denomina basura (garbage) Java realiza periódicamente una recogida automática de basura, devolviendo la memoria usada en el objeto al sistema para poder usarla posteriormente En otros lenguajes, es el programador el responsable de realizar la recogida de basura Escuela Superior de Informática. UCLM
18
Métodos Una clase contiene métodos. Antes de empezar a definir nuestras propias clases, vamos a ver la definición de métodos Ya hemos visto el método main muchas veces Todos los métodos siguen la misma sintaxis: tipo-a-devolver nombre-del-método( lista-de-parámetros) { lista-de-sentencias } Escuela Superior de Informática. UCLM
19
Métodos Un ejemplo de definición de método:
int potencia_tres (int numero) { int cubo; cubo = numero * numero * numero; return cubo; } // method potencia_tres Escuela Superior de Informática. UCLM
20
Métodos Un método puede contener muchas declaraciones locales así como sentencias ejecutables Las variables declaradas localmente sólo pueden usarse localmente El método potencia_tres puede escribirse sin variables locales: int potencia_tres (int numero) { return numero * numero * numero; } // method potencia_tres Escuela Superior de Informática. UCLM
21
La sentencia return El tipo a devolver por un método indica el tipo de valor devuelto al punto de llamada Un método que no devuelve un valor (como main) tiene un tipo de retorno de void La sentencia return especifica el valor que va a ser devuelto Su expresión debe adecuarse al tipo de retorno Escuela Superior de Informática. UCLM
22
Flujo de control en los métodos
El método main es invocado por el sistema cuando se le envía el bytecode al intérprete Cada método vuelve al lugar donde se le llamó main método1 método2 método2(); método1(); Escuela Superior de Informática. UCLM
23
Parámetros Se puede definir un método para que acepte cero a más parámetros Cada parámetro en la lista de parámetros está especificado por su tipo y su nombre Los parámetros en la definición del método se denominan parámetros formales Los valores pasados a un método cuando es invocado se denominan parámetros actuales Escuela Superior de Informática. UCLM
24
Parámetros Cuando se pasa un parámetro, se hace una copia del valor y se asigna al parámetro formal (paso por valor) Tanto los tipos primitivos como las referencias a objetos pueden pasarse como parámetros Cuando se pasa una referencia a objeto el parámetro formal deviene un alias del parámetro actual Véase Parameter_Passing.java Normalmente, evitaremos poner múltiples métodos en la clase que contiene el método main Escuela Superior de Informática. UCLM
25
Definiendo clases La sintaxis para definir una clase es:
class nombre-de-clase { declaraciones constructores métodos } Las variables, constructores y métodos de una clase se denominan genéricamente miembros de la clase Escuela Superior de Informática. UCLM
26
Definiendo clases class Cuenta { int numero_cuenta; double saldo;
Cuenta (int cuenta, double inicial) { numero_cuenta = cuenta; saldo = inicial; } // constructor Cuenta void deposito (double cantidad) { saldo = saldo + cantidad; } // method deposito } // clase Cuenta Escuela Superior de Informática. UCLM
27
Constructores Un constructor:
es un método especial que se usa para inicializar un objeto recién creado frecuentemente establece los valores iniciales de las variables tiene el mismo nombre que la clase no devuelve ningún valor no tiene tipo de retorno ni siquiera void El programador no tiene que definir un constructor para una clase Escuela Superior de Informática. UCLM
28
Clases y Objetos Una clase define los tipos de datos para un objeto pero la clase no almacena valores de datos Cada objeto tiene su propio y único espacio de datos Las variables definidas en una clase se denominan variables de miembro (“instancia”) porque cada miembro de la clase tiene las suyas Todos los métodos en una clase tienen acceso a todas las variables de miembro (“instancia”) de la clase Los métodos se comparten por todos los objetos de una clase Escuela Superior de Informática. UCLM
29
Clases y Objetos Objetos Clase numero_cuenta saldo 2908371 573.21
int numero_cuenta double saldo numero_cuenta saldo Escuela Superior de Informática. UCLM
30
Encapsulación Hay dos puntos de vista sobre un objeto :
interno - la estructura de sus datos, los algoritmos usados por sus métodos externo - la interacción del objeto con otros objetos en el programa Desde el punto de vista externo, un objeto es una entidad encapsulada que proporciona un conjunto de servicios específicos Estos servicios definen la interfase con el objeto Escuela Superior de Informática. UCLM
31
Encapsulación Un objeto debe ser auto-gobernado; cualquier cambio en el estado del objeto (en sus variables) debe realizarse a través de los métodos de los objetos Debemos hacer difícil, sino imposible, que otro objeto pueda “alcanzar” y alterar el estado de un objeto El usuario, o cliente, de un objeto puede requerir sus servicios pero no debe estar al tanto de cómo se llevan a cabo estos servicios Escuela Superior de Informática. UCLM
32
Encapsulación Un objeto encapsulado puede imaginarse como una caja negra: sus procesos internos están ocultos para el cliente Cuenta_de_Ana deposito retirar_fondos incluye_interes produce_extracto cliente Escuela Superior de Informática. UCLM
33
Abstracción La encapsulación es una abstracción poderosa
Una abstracción oculta los detalles propios en el momento adecuado Utilizamos abstracción todos los días : conduciendo un coche usando un computador La encapsulación hace que un objeto sea fácil de manejar mentalmente porque su interacción con los cliente está limitada a un conjunto de servicios bien definidos Escuela Superior de Informática. UCLM
34
Modificadores de visibilidad
Conseguimos la encapsulación con el uso apropiado de los modificadores de visibilidad Un modificador es una palabra reservada en Java que especifica una característica particular de un constructor de programación Nosotros hemos usado el modificador final para definir una constante Java tiene tres modificadores de visibilidad: public, private, y protected Discutiremos el modificador protected más tarde Escuela Superior de Informática. UCLM
35
Modificadores de visibilidad
Los miembros de una clase que se declaren con visibilidad public (pública) son accesibles desde cualquier parte Los miembros de una clase declarados con visibilidad private (privada) sólo son accesibles desde el interior de la clase Los miembros declarados sin un modificador de visibilidad tienen visibilidad default (defecto) y son accesibles por cualquier clase en el mismo paquete Escuela Superior de Informática. UCLM
36
Modificadores de visibilidad
Como regla general, no hay que declarar público ningún dato de un objeto Los métodos que proporcionan los servicios del objeto se declaran normalmente públicos para que puedan ser invocados por los clientes Los métodos públicos se llaman también métodos de servicio Otros métodos llamados de soporte pueden definirse para asistir a los métodos de servicio; estos métodos no deben declararse con visibilidad pública Escuela Superior de Informática. UCLM
37
Clases y Objetos Véase Tunes.java main musica pon_ccds imprime
Escuela Superior de Informática. UCLM
38
El Modificador Static El modificador static se puede aplicar a variables o métodos Asocia una variable o método con la clase más que con un objeto Esta aproximación es un punto de partida distinto de la forma normal de pensar sobre objetos Escuela Superior de Informática. UCLM
39
Variables Static Normalmente, cada objeto tiene tiene su propio espacio de datos Se una variable se declara como static, sólo existe una copia de la variable para todos los objetos de la clase private static int cuenta; Cambiar el valor de una variable estática en un objeto lo cambia en todos los otros Las variables estáticas se denominan a veces variables de clase Escuela Superior de Informática. UCLM
40
Métodos Static Normalmente, invocamos un método a través de un miembro (“instancia”) de la clase Si un método se declara static, se puede invocar a través del nombre de clase, no se necesita que exista ni un objeto Por ejemplo, la clase Math en el paquete java.lang contiene varias operaciones matemáticas static Math.abs (num) -- valor absoluto Math.sqrt (num) -- raiz cuadradas Escuela Superior de Informática. UCLM
41
Métodos Static El método main es static; el sistema lo invoca sin crear ningún objeto Los métodos static no pueden referenciar variables de miembro (“instancia”), pues las variables de miembro no existen hasta que un objeto no existe Sin embargo, sí pueden referenciar variables static o variables locales Los métodos static se llaman a veces métodos de clase Escuela Superior de Informática. UCLM
42
Sobrecarga de Métodos La sobrecarga de métodos es el proceso de usar el mismo nombre para múltiples métodos La firma de cada método sobrecargado debe ser única La firma se basa en el número, tipo y orden de los parámetros El compilador debe ser capaz de determinar qué versión del método está siendo invocada analizando los parámetros El tipo de retorno del método no es parte de la firma Escuela Superior de Informática. UCLM
43
Sobrecarga de Métodos El método println está sobrecargado: etc.
println (String s) println (int i) println (double d) etc. Las líneas System.out.println (”El Total es:"); System.out.println (total); invocan versiones diferentes del método println Escuela Superior de Informática. UCLM
44
Sobrecarga de Métodos Los constructores están frecuentemente sobrecargados para proporcionar formas múltiples de establecer un objeto nuevo Cuenta (int cuenta) { numero_cuenta = cuenta; saldo = 0.0; } // constructor Cuenta Cuenta (int cuenta, double inicial) { saldo = inicial; } // constructor Cuenta Véase Casino.java Escuela Superior de Informática. UCLM
45
Clases y Objetos Véase Purchase_Power.java Gestor Gestor
nombre ”Ramón" nombre ”Pedro" Ramón Pedro judías garbanzos Producto_Stock Producto_Stock nombre ”garbanzos" nombre ”judías" Compra_producto compra_producto Escuela Superior de Informática. UCLM
46
Clases y Objetos Véase Storm.java tamaño_actual 4 Tormenta (Storm)
18 gota1 gota2 gota3 gota4 gota5 tamaño_actual 12 tamaño_actual 7 tamaño_actual 24 Escuela Superior de Informática. UCLM
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.