POO con Java
Capítulo 2
CLASES Y OBJETOS
1
Objetivos
Describir el concepto de objeto y de clase.
Describir la creación de clases usando
abstracción, generalización.
Describir la propiedad de la encapsulación.
Definir clase, miembro, atributo, método,
constructor, y paquete.
2
Objetivos
Usar los modificadores de acceso privado y
publico.
Invocar un método en un objeto particular.
Explicar porque se puede reusar el código
Java.
Usar la documentación de la interfaz de
programación de aplicaciones (application
programming interface: API)
3
Puntos de referencia
¿Cuál es la importancia del análisis y el
diseño?
¿Qué importancia tiene reutilizar
código?
Qué se entiende por orientado a objetos.
¿Porqué lenguajes orientados a objetos
son considerados para sistemas
robustos?
4
Ingeniería de Software
Crisis del software
Problemas de calidad
Problemas de presupuesto
Problemas de tiempos de entrega
CAUSA: La complejidad
La POO busca controlar la complejidad
5
Ingeniería de Software
rama de la ingeniería que aplica los principios de
la ciencia de la computación y las matemáticas
para lograr soluciones costo-efectivas a los
problemas del desarrollo de software.
6
Análisis y Diseño
Análisis: describe qué necesidades posee el
sistema
Modelamiento del mundo real: actores,
actividades, objetos y comportamientos.
Diseño: describe cómo las implantará el sistema:
Modelamiento de interacciones entre objetos
y actores en el sistema.
Describe abstracciones útiles para
simplificar el problema y la solución,
considerando
7
OBJETO
• Entidad que representa parte de la realidad.
• Entidad con lo que se puede interactuar, si se le
envían mensajes reacciona ante estos.
• Entidad que tiene comportamiento, estado e
identidad.
8
OBJETO
• IDENTIDAD: A un objeto se le puede distinguir
de forma única.
• ESTADO: Es lo que define a un objeto por un
conjunto de valores en un momento
determinado
• COMPORTAMIENTO: El modo de actuar y
reaccionar de un objeto.
Se define en función del estado y a través del
envío de mensajes.
9
Abstracción
Es el principio de ignorar aquellos aspectos de un
sujeto que no son relevantes al propósito actual,
con el objetivo de concentrar la atención
completamente en aquellos que lo son
10
Generalización
Hallar los aspectos comunes de un conjunto
de elementos.
La generalización es alcanzada mediante la
abstracción.
11
Clases como Moldes de Objetos
En la fabricación un molde permite
construir muchos dispositivos
parecidos
En la programación, una clase es un
molde donde se describen las
características de un objeto.
Describe los atributos que posee
cada objeto de esa clase
Describes el comportamiento que
exhibe cada objeto de esa clase
12
Clases como Moldes de Objetos
El objeto que se construye a partir de
una clase, se conoce como instancia
o ejemplar de una clase.
13
Clases como Moldes de Objetos
Clase Clase Objetos
nombre Estudiante
propiedades matrícula
nombre
comportamiento calificaciones
calculaPromedio( )
muestraDatos( )
14
Diagramas de clases en UML
nombre
atributos
constructores
métodos
15
Declarando clases en Java: Sintaxis
<modificadores> class <nombre_clase> {
[<declaraciones_atributos>]
[<declaraciones_constructores >]
[<declaraciones_metodos>]
}
16
Elaborando diagrama de clase: Ejemplo
Diagrama UML de la clase Vehiculo
Vehiculo
- cargaMaxima: double
+ asignarCargaMaxima(valor: double valor)
+ muestraCargaMaxima(): double
17
Declarando clases en Java: Ejemplo
public class Vehiculo {
private double cargaMaxima;
public void asignarCargaMaxima(double valor){
cargaMaxima = valor;
}
public double muestraCargaMaxima(){
return cargaMaxima;
}
}
18
Declarando Atributos : Sintaxis y ejemplo
[<modificadores>] <tipo> <nombre> [= v];
public class Cualquiera {
private int x;
private float salario= 10000.0F;
private String nombre = “Jose
Segura";
}
19
Declarando Atributos : Diagrama y Código
Atleta
+ peso: double
public class Atleta {
public double peso;
}
20
Declarando Métodos : Diagrama
Atleta
- peso: double
+darPeso(): double
+ asignarPeso(nuevoPeso: double)
21
Declarando Métodos: Sintaxis y ejemplos
Sintaxis de métodos
[<modificadores>]<tipo_regreso> <nombre> ([<lista_argumentos>]){
[<comandos>]
}
public class Atleta {
private double peso;
public double darPeso( ) {
return peso;
}
public void asignarPeso(double
nuevoPeso){
peso = nuevoPeso;
}
}
22
Declarando Constructores: Sintaxis
<modificadores> <nombre_clase> ([<lista_argumentos>]){
[<comandos>]
}
23
Declarando Constructores
1 public class Atleta {
2 private int peso;
3
4 public Atleta () {
5 peso = 42;
6 }
7
8 public int darPeso() {
9 return peso;
10 }
11 public void asignaPeso(int nuevoPeso) {
12 peso = nuevoPeso;
13 }
14 }
24
El Constructor default
• Siempre habrá al menos un constructor en
cualquier clase.
• Si el programador no propone un constructor, un
constructor por default se inserta automáticamente.
• El constructor por default:
NO tiene argumentos
NO tiene cuerpo
PERMITE crear instancias de objetos con
new Xxx( )
25
Accediendo a los miembros de un Objeto
Notación punto: <objeto>.<miembro>
El punto se usa para acceder a los miembros
de un objeto incluyendo atributos y métodos
Ejemplos:
Atleta atleta= new Atleta();
//si peso es privado
atleta.asignarPeso(65);
26
Accediendo a los miembros de un Objeto
Notación punto: <objeto>.<miembro>
El punto se usa para acceder a los miembros
de un objeto incluyendo atributos y métodos
Ejemplos:
Atleta atleta= new Atleta();
atleta.peso = 42; //si peso es
publico
27
Clases como Moldes de Objetos
En Java, las clases permiten implantar
tres aspectos claves de la programación
orientada a objetos:
Encapsulación
Herencia
Polimorfismo
28
Ocultamiento de Información
Problema: El usuario que utilice la clase Fecha con
atributos públicos tiene acceso al código del
cliente
Fecha public class Fecha {
public int
+ día dia;
+ mes public int
+ año mes;
public int año;
}
29
Ocultamiento de Información
Problema: El usuario que utilice la clase Fecha con
atributos públicos tiene acceso al código del
cliente
Fecha f= new Fecha():
f.dia=32; //dia inválido
f.mes=2; f.día=30; //error
f.dia= f.dia + 1;//¡cuidado!
30
Ocultamiento de Información
Solución: El usuario debe hacer privados los datos
y usar métodos que accedan datos internos.
Fecha Fecha f= new Fecha():
- día f.setDia(32); //dia inválido
- mes // regresa falso
- año
+ getDía( ) f.setMes(2);
+ getMes( ) f.setDia(30); //error
+ getAño( ) // regresa falso
+ setDía( int )
+ setMes( int) f.setDia(f.getDia()+ 1);
+ setAño( int ) // puede ajustar el mes
- diaValido( )
31
Encapsulación
• Oculta los detalles de la implantación de
una clase
• Obliga al usuario a que use una interfaz
para acceder datos
• Hace al código mas fácil de depurar
32
Esquema de un archivo fuente: Sintaxis
[ <declaración package> ]
[ <declaraciones import> ]
< declaración clase >
33
Esquema de un archivo fuente:Ejemplo
package envios.reportes;
import envios.dominio.*;
import java.util.List;
import java.io.*;
public class ReporteCapacidadVehiculo{
private List vehiculos;
public void generaReporte(Writer salida){
...
}
}
34
Síntesis de términos
• Clase- El código fuente que es el molde para crear un
objeto.
• Objeto - Un ejemplar de una clase. (sinónimo:
instancia ) Entidad que representa una parte de la
realidad y tiene identidad, estado y comportamiento.
• Atributo. El dato de un objeto. (sinónimo: miembro
dato, variable de instancia, campo dato)
• Método. El comportamiento de un objeto. (sinónimo:
algoritmo, función, procedimiento)
• Constructor. Algo parecido a un método usado para
inicializar un objeto.
• Paquete - Agrupamiento de clases y/o subpaquetes.
35
Usando la documentación de las API
• Un conjunto de archivos (HTML) ofrece
información acerca de las API.
• Un paquete tiene las ligas a la
información de sus clases.
• El documento de una clase incluyela
jerarquía de clases, una descripción de la
clase, una lista de variables miembro,
una lista de constructores y así
sucesivamente.
36
Ejemplo de la documentación de las API
37
Ejercicio: Usando objetos y clases.
Objetivos:
Implantar los conceptos
presentados en este módulo.
Tareas
Complete las tareas
especificadas en su práctica
38
Verifique su progreso
Describir como se genera una clase
mediante la abstracción y generalización.
Definir clase, miembro, atributo, método,
constructor, y paquete.
Usar los modificadores de acceso privado
y publico.
Invocar un método en un objeto particular.
39
Verifique su progreso
Explicar porque se puede reusar el
código Java.
Identificar los comandos package e
import
Clases, métodos, y atributos y
Constructores
Usar la documentación de la interfaz de
programación de aplicaciones
(application programming interface: API)
40
Preguntas por responder
• ¿Cuáles tipos de datos hay en Java?
• ¿Existen reglas para crear nombres
de clases y atributos?
41