Download Diapositiva 1 - Página Jimdo de efrainpadilla

Document related concepts
no text concepts found
Transcript
Programación Orientada a Objetos
Declaración de Métodos:
Los objetos se forman a partir de clases
Una clase está formada por:
• datos (atributos). Estos pueden ser de tipos primitivos o referencias.
• Métodos
Para construir programas en java se combinan clases escritas por el
programador con las clases que están disponibles en la biblioteca de
clases de java
Programación Orientada a Objetos
Los métodos (conocidos también como funciones o procedimientos) son
fragmentos de código que permiten al programador dividir un programa
en módulos, por medio de la separación de sus tareas en unidades
autónomas
Ejemplo claro de ello son los métodos de la clase Math (ubicada en la
biblioteca de clases de Java) que permiten realizar un conjunto de
cálculos matemáticos
Programación Orientada a Objetos
Cómo se declara un método?
Para declarar un método en Java es necesario escribir, entre otras cosas, las
instrucciones que contendrá y establecer su nombre.
Existen reglas sintácticas que determinan la forma en la que Java entiende la
declaración de un método.
Para declarar un método se tiene el siguiente formato:
modificador_de_acceso tipo_de_retorno nombre_del_método ( lista_de_parámetros )
{
// cuerpo_del_ método
}
Programación Orientada a Objetos
modificador_de_acceso
El modificador de acceso de un método es el permiso de ese método de
acceder a los atributos de una clase. Puede ser public o private.
El public se utiliza en métodos de instancia para acceder a variables y
constantes de clase(globales) y de instancia.
El public static se utiliza en métodos de clase para acceder a los atributos
de la clase (globales).
private se utiliza en aquellos atributos que solo pueden ser accedidos por
métodos públicos de la su propia clase.
Programación Orientada a Objetos
tipo_de_retorno
Especifica el tipo de dato devuelto por el método; puede ser cualquier tipo
válido, incluso los tipos de clase que se generen (objetos). Si el método no
devuelve un valor, su tipo de retorno deber ser void.
nombre_del_método
El nombre del método debe ser un identificador válido, diferente a los que ya
usaron otros elementos dentro del ámbito actual. Normalmente se usa un
nombre que describe la acción que el método realiza.
Programación Orientada a Objetos
lista_de_parámetros
Es una secuencia de parejas: tipo e identificador, separados por comas. Los
parámetros son básicamente variables que reciben el valor de los
argumentos pasados al método cuando este se llama. Si el método no tiene
parámetros, la lista de parámetros está vacía.
cuerpo_del_ método
Es un bloque que encerrado entre llaves y contiene las instrucciones que va
a ejecutar el método. En este bloque también se incluyen declaraciones de
variables.
Programación Orientada a Objetos
Ejemplo:
class TirarDado {
Modificador
de acceso
Tipo de
retorno
public static void main( String[] args) {
int frecuencia[] = new int[7];
String salida = "Tirar un dado 6000 veces..";
System.out.println(salida);
for ( int tiro = 1; tiro <= 6000; tiro++ )
++frecuencia[ 1 + (int) (Math.random() * 6 ) ];
Cuerpo
del
método
Nombre
del método
salida = "Cara\tFrecuencia";
System.out.println(salida);
for ( int cara = 1; cara < frecuencia.length;
cara++)
{
salida = "\n" + cara + "\t" + frecuencia [ cara ];
System.out.print(salida);
}
} // fin de main
} // fin de TirarDado
Lista de
parámetros
Programación Orientada a Objetos
Diseño de una clase de objetos
Cuando escribimos un programa orientado a objetos, lo que hacemos es
diseñar un conjunto de clases. Cada una de estas clases incluye dos
partes fácilmente diferenciables: los atributos y los métodos.
objeto
mensajes
atributos
métodos
Normalmente, los atributos son la estructura mas interna del objeto; se ocultan a
los usuarios del objeto, manteniendo como única conexión al exterior, los
mensajes.
Esto quiere decir que los atributos de un objeto solamente podrían ser
manipulados por los métodos del propio objeto. Este conjunto de métodos
recibe el nombre de interfaz: medio de comunicación con un objeto
Programación Orientada a Objetos
Escribiendo una clase de objetos.
Podemos crear una clase de objetos llamada Ccuenta que represente una
cuenta bancaria.
Para declarar una clase hay que utilizar la palabra reservada class seguida
del nombre de la clase y del cuerpo de la misma. El cuerpo de la clase entre
{ } sus miembros: atributos y métodos.
class Ccuenta
{
//……
}
Programación Orientada a Objetos
Elegimos los atributos que nos interesan para definir esta clase de objetos:
•
•
•
•
Nombre: nombre del cliente del banco al que pertenece la cuenta
Cuenta: numero de cuenta
Saldo: saldo actual de la cuenta
Tipo de Interes: tipo de interés en porcentaje
class Ccuenta
{
private String nombre;
private String cuenta;
private double saldo;
private double tipoDeInteres;
//…
}
En lo sucesivo, cuando utilice estos identificadores, debe respetar las
mayúsculas y minúsculas.
Un miembro declarado privado es accesible solamente por los métodos de su
propia clase.
Programación Orientada a Objetos
El comportamiento define las acciones que el objeto puede emprender.
Un objeto de clase Ccuenta, esto es, de una cuenta de un cliente de un
banco, algunas de las acciones que pueden hacerse son:









Asignar el nombre de un cliente del banco a una cuenta
Obtener el nombre del cliente de una cuenta
Asignar el numero de la cuenta
Obtener el numero de cuenta
Realizar un ingreso
Realizar un retiro
Asignar el tipo de interés
Obtener el tipo de interés
Obtener el saldo (estado de cuenta)
Programación Orientada a Objetos
Para definir el comportamiento hay que añadir métodos a la clase. Los
métodos son rutinas de código definidas dentro del cuerpo de la clase.
Vamos a agregar a la clase Ccuenta un método que responda a la acción
de asignar el nombre de un cliente a la cuenta.
Programación Orientada a Objetos
Podemos decir que los nombres de los métodos de una clase forman
el conjunto de mensajes a los que un objeto de esa clase puede
responder.
Agreguemos un método mas para afianzar lo visto hasta ahora. ¿cuál
será la respuesta de un objeto Ccuenta cuando reciba el mensaje
“estado de cuenta”?, simplemente devolverá su saldo.
Cuando hayamos escrito todos los métodos previstos, tendremos creada
la clase Ccuenta que guardaremos en un fichero denominado
Ccuenta.java
Programación Orientada a Objetos
Devolución de un valor desde un método.
En la declaración de un método se puede establecer que nos regrese un valor.
Los métodos que devuelven valores lo especifican en el encabezado del
método exactamente antes del nombre del mismo.
tipo de devolución int
(se especifica antes del nombre del método)
public static int adivinaNumero (int numeroAdivinar) {
..........
..........
return intentos;
}
instrucción de retorno que devuelve
el valor de la variable de tipo int
llamada intentos
Programación Orientada a Objetos
Cuando un método tiene establecido un tipo de devolución es necesario utilizar
una instrucción de retorno (return) antes de que el método termine.
Un método que devuelve un valor termina su ejecución cuando se encuentra la
instrucción return.
Sintáxis:
return expresión;
La instrucción return debe ser la última instrucción de un método que regresa
un valor.
En ocasiones no es necesario que un método devuelva un valor. En estos casos
se debe especificar, en el encabezado del método, void como tipo de retorno.
Cuando se utiliza void como tipo de retorno NO es necesario utilizar la
instrucción return al finalizar el método.
Un método void finaliza cuando se encuentra el corchete de cierre.
Programación Orientada a Objetos
Ejercicio.
Escriba una clase, llamada Maximo, cuyo objetivo será calcular el mayor
de los tres números por medio de un método, llamado calculaMaximo(),
que defina tres parámetros de tipo int, y devuelva el valor máximo de los 3
valores recibidos.
El programa deberá leer desde el teclado 3 números de tipo int llamados
“x”, “y” y “z”., mandar llamar al método de la clase, y mostrar en pantalla el
resultado obtenido (el numero mayor)
Programación Orientada a Objetos
Conceptos de métodos Constructor y Destructor
En muchas ocasiones al declarar una o más variables, las inicializamos
manualmente, Java nos permite realizar esta tarea más fácilmente
utilizando: el constructor.
De igual forma al crear un objeto es necesario que al finalizar sea destruido.
En muchos lenguajes de programación, esta tarea es realizada por el
programador, Java por el contrario lo hace de manera automática sin
necesidad de hacer la especificación o llamado al destructor.
Programación Orientada a Objetos
Definición de constructor
Un constructor es un método especial de una clase que es llamado
automáticamente siempre que se crea un objeto de esa clase. Su función es
crear el objeto.
Cuando en una clase no escribimos explícitamente un constructor, Java asume
uno por omisión.
Un constructor por omisión de una clase es un constructor sin parámetros
que no hace nada, sin embargo es necesario, ya que, será invocado cada vez
que se construya un objeto sin especificar un argumento, en cuyo caso, el
objeto será iniciado con los valores predeterminados por el sistema (los
atributos numéricos a cero, los alfanuméricos a nulos, y las referencias a
objetos a null).
Programación Orientada a Objetos
Un constructor es un método perteneciente a la clase que posee las
siguientes características especiales:
 Se llama igual que la clase.
 No devuelve nada, ni siquiera void.
 Pueden existir varios, pero siguiendo las reglas de la sobrecarga de
funciones.
 De entre los que existan, tan sólo uno se ejecutará al crear un objeto de
la clase.
 Dentro del código de un constructor generalmente suele existir
inicializaciones de variables y objetos, para conseguir que el objeto sea
creado con dichos valores iniciales.
Programación Orientada a Objetos
Los constructores se declaran al momento de definir la clase como lo
muestra el siguiente ejemplo:
class Circulo
{
int x, y,diametro;
// el constructor
public Circulo( ) {
x=0;
y=0;
diámetro =0;
}
...
}
El constructor se invoca automáticamente cuando new crea un objeto de esa
clase, como se muestra en seguida:
Circulo miCirculo= new Circulo( );
miCirculo.imprimir(); // la salida sería 0 0 0
Programación Orientada a Objetos
El constructor puede tener parámetros. En este caso, se deben colocar los
argumentos respectivos al crear el objeto:
class Circulo {
int x, y, diametro;
// el constructor con parámetros
Public Circulo (int xInicial, int yInicial, int diametroInicial)
{
x=xInicial;
y=yInicial;
diámetro=diametroInicial;
}
...
}
Circulo miCirculo= new Circulo(20,20,40);
miCirculo.imprimir(); // la salida sería 20 20 40
Programación Orientada a Objetos
Se pueden colocar varios constructores. Durante la creación de un objeto, se
invoca aquel que corresponde con los argumentos dados:
class Circulo {
int x, y,diametro;
public Circulo( )
{
x=0;
y= 0; diametro=0;
}
public Circulo(int xInicial, int yInicial, int diametroInicial)
{
x=xInicial;
y=yInicial;
diametro=diametroInicial;
}
public Circulo (Circulo D)
{
x= D.x;
y= D.y;
diametro= D.diametro;
}
}
Programación Orientada a Objetos
Circulo c1= new Circulo();
c1.imprimir(); // la salida sería 0 0 0
Circulo c2= new Circulo(20,20,40);
c2.imprimir(); // la salida sería 20 20 40
Circulo c3= new Circulo(c2);
c3.imprimir(); // la salida sería 20 20 40
Programación Orientada a Objetos
Cuando en una clase un mismo método se define varias veces con distinto
numero de parámetros, o bien con el mismo numero de parámetros pero
diferenciándose una definición de otra en que al menos un parámetro es de
un tipo diferente, se dice que el método esta sobrecargado.
Cuando una clase sobrecarga un método una o mas veces, ¿cómo sabe
Java cual tiene que ejecutar cuando se invoque?.
Pues esto lo hace comparando el numero y los tipos de argumentos
especificados en la llamada, con los parámetros especificados en las
distintas definiciones del método.
Programación Orientada a Objetos
Repasando…
1.
2.
3.
4.
¿Qué es un constructor?
¿Cuál es la función del constructor?
¿Cuál es la sintaxis para declarar un constructor en Java?
¿Que condición se debe cumplir para declarar el nombre del constructor?
Programación Orientada a Objetos
Ejercicio1 (constructores)
Diseñe un programa en Java que cree 2 objetos de tipo “caja” e imprima en
pantalla el volumen de ellos.
Para esto será necesario crear una clase con el nombre “caja” la cual
contendrá un constructor sin parámetros que inicialice todas las propiedades
de la caja con un valor de 10; las propiedades que debe incluir serán: alto,
ancho y fondo; y un método que calcule y regrese el volumen de la caja
(ancho * alto * fondo)
Ejercicio2 (constructores)
Modifique el programa anterior agregando un constructor con parámetros, el
cual deberá tener la misma funcionalidad del anterior, solo que al crear los
objetos se le mandaran al constructor los valores para inicializar los
parámetros de las cajas.
Programación Orientada a Objetos
Ejercicio3 (constructores)
Diseñe una clase “coche” que represente coches. Incluya los atributos marca,
modelo y color; y los métodos que simulen, enviando mensajes, las acciones
de arrancar el motor, cambiar de velocidad, acelerar, frenar y parar el motor.
coche
Marca
Modelo
Color
Encendido?
Velocidad
posPalanca
arrancarMotor()
cambiarVel(pos)
acelerar(inc)
frenar(dec)
apagarMotor()
estado()