1. Contenido
• Instanciación
• Herencia
• Métodos, argumentos y tipos
de retorno
• Variables locales
•• Castin de tipos
• Paquetes
•• Modificadores de acceso
public y private
• Métodos getters y setters
2. Instanciación
¿Una vez que han sido diseñadas las clases, como crear
los objetos a través de estas usando Java?
Instanciado la clase correspondiente!
En tres pasos:
1) Declarar una variable referencia
2) Instanciar la clase usando la palabra reservada new e
invocando a un método especial llamado constructor.
El constructor tiene el mismo nombre de la clase y
puede estar sobrecargado.
3) Asignar valores a los atributos usando
3. Instanciación
Clase Camisa
int codigo
double precio
char talla
String modelo
Declarar Instanciar o construir el
objeto
Asignar valores a los atributos del
objeto
Camisa miCamisa miCamisa = new Camisa() miCamisa.codigo = 123
miCamisa.precio = 150.32
miCamisa.talla = ‘X’
miCamisa.modelo = “Casual Sport”
4. Herencia
• Mecanismo que permite crear una clase a partir de otra
ya existente.
•• La Herencia generalmente se detecta en tiempo de
diseño a través de la Generalización o de la
Especialización.
• Permite eliminar redundancia entre varias clases y
promueve la reusabilidad.
• “es un “ es una palabra clave para determinar la Herencia
5. Generalización
• La Generalización consiste en crear una clase general
a partir de una o varias clases especializadas.
Persona
Estudiante
nombre
apellido
Nombre
apellido
promedio
Profesor
Generalizando
mejoramos el
di ñ Estudiante
Profesor
nombre
apellido
grupo
materia
diseño promedio
grupo
materia
6. Especialización
• La Especialización consiste en crear una o mas clases
a partir de una clase general
Persona
Persona
nombre
Nombre
apellido
apellido
promedio
grupo
materia
Especializando
mejoramos el
diseño Estudiante Profesor
promedio
grupo
materia
7. Herencia
Persona Articulo
String nombre
String direccion
String telefono
int fechaNacimiento
int codigo
float precio
String fabricante
Hereda (es un)
superclases
Cliente
Int codigoCliente
Camisa
int codigo
float precio
Hereda (es un)
subclases
g
*OrdenCompra compras
OrdenCompra
String talla
int codigoColor
String modelo
Tarjeta
char tipo
String banco
String fecha
*Camisa articulos
float montoTotal
boolean estado
g
String fechaExp
int numero
int codSeguridad
String Titular
Tarjeta formaPago String Banco
8. Herencia en Java
En Java la palabra reservada extends nos permite definir una clase como
subclase de otra ya existente como se muestra en el siguiente código:
public class Persona {
//definir atributos
}
public class Cliente extends Persona{
//definir atributos
}
public class Articulo {
//definir atributos
}
public class Camisa extends Articulo{
//definir atributos
}
9. Métodos
• Las Características de un objeto viene determinada
por sus atributos.
• El comportamiento de los objetos o: ““lo que el
objeto puede hacer”/“lo que podemos hacer con los
objetos¨ viene determinado por sus métodos.
• Los atributos y métodos se definen en la clase.
• Los métodos tienen un nombre, por lo general un
verbo y por convención comienzan con minúsculas.
10. Métodos: argumentos
• Los métodos son un bloque de código cuyo objetivo
es realizar una tarea específica.
• Podríamos hacer analogía con las funciones, rutinas,
subrutinas, procedimientos, etc. usados en otros
lenguajes de programación.
11. Métodos: argumentos
• Pueden o no definir argumentos.
• Los argumentos, son valores de entrada, de un tipo
específico, requeridos para que el método pueda
realizar su procesamiento.
• Los argumentos se definen entre paréntesis: tipo
nombre_argumento
• Los argumentos puede ser de un tipo primitivo, del
tipo de una clase Java o del tipo de una clase propia.
12. Métodos
• Un método puede o no devolver un valor.
• void: Es la palabra reservada para indicar que el
método NO retorna un valor.
• Si el método retorna un valor, se debe indicar el tipo de
retorno en lugar de void, y utilizar la palabra reservada
return para devolverlo.
• El tipo de los argumentos puede ser de un tipo primitivo,
del tipo de una clase Java o del tipo de una clase propia.
13. Métodos
• Ya conocemos en Java a un método muy importante,
es el método por donde comienza la ejecución de
una aplicación java de escritorio construida con la
versión estándar:
public static void main(String a[]) {}
No es necesario
instanciar la clase Acceso publico
para
tener acceso a main()
Argumento que permite
No retorna valor
pasar datos a través del
teclado
14. Métodos
public void nombre_método(tipo arg1, tipo arg2, …)
{
//Código del método
}
public tipo_retorno nombre_método(tipo arg1,…)
{
//Código del método
return valor_retorno;
}
15. Métodos
public class Triangulo {
public int base;
public int altura;
public double area(){
return (base * altura)/2;
}
public void mostrarDatos(){
System.out.println(“El triangulo tiene de base: ” +
base + “ y altura: “ + altura);
}
Public void perimetro(boolean esEquilatero){
}
}
16. Métodos: Variables locales
• Son las variables definidas en los métodos.
• Una variable local solo se pueden usar adentro del metodo
en donde es definida y existe solo mientras se ejecuta el
método es decir, cuando el método termian la variable es
destruida.
• Se debe declarar e inicializar antes de usarla.
public double area(){
float area = 0; //variable local declarada e inicializada
area = base * altura)/2;
return area;
}
17. Paquetes
• Permiten organizar las clases según su funcionalidad.
• Son equivalentes a las librerías en otros lenguajes de
programación.
• Finalmente un paquete no es mas que un directorio
(folder) en el sistema de archivos de nuestra
computadora.
• Si un paquete esta formado por mas de un directorio se
utiliza un punto (.) como separador.
• Por convención los paquetes comienzan con minúsculas y
son nombres o sustantivos.
18. Paquetes
• En Java existe una gran variedad de paquetes, entre ellos se
encuentran:
o java.lang: Es el paquete por defecto y en este se encuentran las
clases de soporte básico del lenguaje.
o java.io: En este paquete se encuentran las clases de
entrada/salida.
o java.net: En este paquete se encuentran las clases que nos dan
soporte de red.
o java.awt: En este se encuentran clases para la creación de
interfaces gráficas de usuario (GUI)
o Y muchísimos mas paquetes!
19. Definición y uso de paquetes
package proyecto; java.net
*.class
import java.net.*;
import java.io.File;
public class Principal {
…
} Usa
(import)
proyecto java.io
*.class
Esta en Principal.class
(package) p )
Usa
( import)
20. Definición y uso de paquetes
• Cuando una clase se define dentro de un paquete debe usar
la sentencia package como la primera línea en el código
fuente, seguido del nombre del paquete
• Cuando una clase usa uno o mas paquetes, debe usar la
sentencia import indicando el nombre del paquete y
terminando en:
o .* => Si se desea que la clase tenga acceso a todas las
clases del paquete.
o .nombre_clase => si solo se quiere dar acceso a una
clase específica.
21. Modificadores de acceso: public
• Los miembros de una clase vienen determinados por sus
atributos y métodos.
• El modificador public aplicado los miembros de una clase,
proporciona acceso universal es decir, se pueden usar desde
cualquier paquete.
ClaseB1 y ClaseA2
pueden usar los
miembros públicos
proyectoA
ClaseA1 proyectoB
con
de ClaseA1
miembros
públicos
Cl A2
ClaseB1
ClaseA2
22. Modificadores de acceso: private
• El modificador private aplicado a los miembros de una clase
proporciona acceso sólo dentro de la misma es decir, sólo los
métodos de la clase que los define como privados tendrán
acceso.
ClaseB1 y ClaseA2 proyectoB
no pueden usar los
miembros privados
proyectoA
ClaseA1 con
de ClaseA1
miembros
privados ClaseB1
ClaseA2
23. Modificadores de acceso: private
• El objetivo de definir miembros privados es principalmente
proteger los atributos de los objetos de un mal uso
• Proporcionando método “getters” y “setters” para el acceso y
la modificación de los atributos se garantiza que los atributos
tomen valores válidos según las restricciones del problema
que estamos solucionando.
• El estado de los objetos viene determinado por los valores de
sus atributos por lo tanto, si el estado no es adecuado, el
objeto no se “comportará adecuadamente, en otras palabras,
los métodos no arrojaran un resultado válido.
24. Modificadores de acceso: private
La clase fecha no esta bien diseñada, ya que al definir sus
atributos públicos la clase Persona puede asignar datos
incorrectos:
public class Fecha{
public int dia;
public int mes;
public int año;
public class Persona {
String nombre;
String apellido;
p ; private Fecha fechaNac;
}
p ;
public void setFechaNac(int d, int m, int a){
fechaNac = new Fecha();
fechaNac.dia = 32;
fechaNac.mes = 4;
fechaNac.año = 1982;
}
}
25. private: mejorando el código
public class Fecha {
private int dia, mes, año;
case 4:
case 6:
public int getDia() {
return dia;
}
public void setDia(int d) {
case 9:
case 11:
if (dia >=1 && dia <=30) {
dia = d;
switch (getMes()){
case 1:
case 3:
case 5:
}
case 2:
//verificar si es año
// bisiesto y
si el día es
case 7:
case 8:
case 10:
case 12:
//correcto
}//fin switch
}//fin metodo
if (dia >=1 && dia <=31) {
dia = d;
}
break;
26. private: mejorando el código
public int getMes() {
return mes;
}
public void setMes(int m) {
//validar el mes antes de guardar m en el atributo mes
}
public int getAño() {
return año;
}
public void setAño(int a) {
// validar el año antes de guardar a en el atributo año
}