2. Objetivos de este
módulo
Definir los conceptos de la programación
orientada a objetos
Utilizar los modificadores de acceso private y
public (encapsulamiento)
Invocar un método de un objeto
4. La Fase de Análisis y
Diseño
El análisis describe qué hace el sistema:
Modelado del mundo real: actores y actividades,
objetos y comportamientos
El diseño describe cómo lo hace:
Modelado de relaciones e iteraciones entre objetos y
actores en el sistema
Detectar abstracciones útiles para simplificar el
problema o la solución
5. Abstracción
Funciones – Escribir el algoritmo una vez para usarlo
muchas veces
Objetos – Agrupar un conjunto de atributos relacionados
y comportamientos en una clase
Frameworks y APIs – Grandes grupos de objetos que
dan soporte a una actividad compleja
Los Frameworks pueden ser utilizados “tal como
están” o se pueden extender sus comportamientos
6. Clases como Diseño de
En una fábrica, el diseño de un dispositivo describe como se
van a construir muchos dispositivos físicos.
En software, una clase es la descripción de un objeto:
Una clase describe los datos que cada objeto incluye
Una clase describe el comportamiento que cada objeto exhibe
En la tecnología Java, las clases cumplen tres
características claves de la POO:
Herencia
Encapsulamiento
Polimofirmo
7. Declarar clases en Java
Sintaxis básica de una clase Java:
<modificador> class < nombre_clase> {
[< declaraciones_de_atributos>]
[< declaraciones_de_constructores>]
[< declaraciones_de_métodos>]
}
• Ejemplo:
public class Vehicle {
private double maxLoad;
public void setMaxLoad(double value) {
maxLoad = value;
}}
8. Declarar atributos
Sintaxis básica de un atributo:
[< modificadores>] < tipo> <nombre> [ = <valor_inicial>];
Ejemplo
public class Foo {
private int x;
private float y = 10000.0F;
private String name = "Bates Motel";
}
9. Declarar métodos
Sintaxis básica de métodos:
[< modificadores >] < tipo_de_retorno> <nombre>([<
lista_de_argumentos>]) {
[< sentencias>]}
Ejemplo
public class Dog {
private int weight;
public int getWeight() {
return weight;
}
public void setWeight(int newWeight) {
weight = newWeight;
}
}
10. Acceder a miembros de
un Objeto
La notación “punto”: <objeto>.<miembro>
Esto es utilizado para acceder a miembros de objetos,
como los atributos y métodos
Ejemplos:
d.setWeight(42);
d.weight = 42; // sólo permitido si weight tiene alcance
public
11. Ocultamiento de
Información
El problema:
El código del cliente tiene acceso a los datos
internos
d.day = 32;
// día no válido
d.month = 2; d.day = 30;
//posible pero erróneo
d.day = d.day + 1;
// no realiza chequeo sobre el mes
12. Ocultamiento de
Información
La solución:
El código del cliente debe utilizar
los métodos setters/getters para
acceder a los datos internos:
MyDate d = new MyDate();
d.setDay(32);
d.setMonth(2);
d.setDay(30);
d.setDay(d.getDay() + 1);
13. Encapsulamiento
Oculta los detalles de
implementación de una
clase
Obliga al usuario a utilizar
una interfase para
acceder a los datos
Hace el código más
mantenible
14. Declarar constructores
Sintaxis básica de un constructor:
[< modificador>] < nombre_de_clase> ([<
lista_de_argumentos>]) {
[< sentencias>]
}
15. Declarar constructores
Ejemplo
1 public class Dog {
2 private int weight;
3
4 public Dog() {
5 weight = 42;
6}
7
8 public int getWeight() {
9 return weight;
10 }
11 public void setWeight(int newWeight) {
12 weight = newWeight;
13 }}
16. El constructor por defecto
Existe por lo menos un constructor en cada clase.
Si el programador no escribe ningún constructor, el
constructor por defecto esta presente
automáticamente:
El constructor por defecto no recibe parámetros
El cuerpo del constructor es vacío
Permite al programador construir objetos con new
Xxx() sin tener que escribir un constructor.
17. Diseño de archivo fuente
Sintaxis básica de un archivo Java:
[< declaración_de_package>]
[< declaraciones_de_import>]
< declaración_de_clase>+
Ejemplo del archivo VehicleCapacityReport.java :
package shipping.reports;
import shipping.domain.*;
import java.util.List;
import java.io.*;
public class VehicleCapacityReport {
private List vehicles;
public void generateReport(Writer output) {...}
}
18. Paquetes de Software
Los paquetes permiten
un mejor manejo de
sistemas de software
grandes
Los paquetes pueden
contener clases y sub-
paquetes
19. La sentencia package
Sintaxis básica de la sentencia package:
package < nombre_de_paquete_padre>[.< nombre_de_sub-
paquete>]*;
Ejemplo:
package shipping.reports;
Especifique la declaración del package al comienzo del archivo
fuente.
Solamente una declaración de paquete por archivo fuente.
Si ningún paquete es declarado, entonces la clase pertenece
al paquete por defecto.
Los nombres de los paquetes debe ser jerárquico y separado
por punto.
20. La sentencia import
Sintaxis básica de la sentencia import:
import < nombre_pkg> [.<nombre_sub_pkg>].<
nombre_clase>;
O
import < nombre_pkg>[.< nombre_sub_pkg>].*;
21. La sentencia import
Ejemplo:
import shipping.domain.*;
import java.util.List;
import java.io.*;
Precede a todas las declaraciones de clases
Le indica al compilador dónde encontrar las clases que
se utilizan
22. Diseño de paquetes y
directorios
Los paquetes son
guardados en el árbol
de directorio que
contenga el nombre del
paquete.
Ejemplo, los paquetes
de la aplicación
“shipping” :
23. Desarrollo
Compilar usando -d
javac -d ../class banking/domain/*.java
24. Repaso de la Terminología
Clase – Código fuente que diseña los objetos de tiempo
de ejecución
Objeto – Instancia de una clase
También conocido como instancia
Atributo – Elemento con información de un objeto
También conocido como dato miembro, variable de
instancia, campo de dato
Método – Elemento que define el comportamiento de un
objeto. También conocido como algoritmo, función,
procedimiento
Constructor – Es “como un método” constructor
utilizado para inicializar un objeto nuevo
Package – Grupo de clases agrupada y/o sub paquetes
25. Utilizando la
documentación de Java
(API)
Conjunto de archivos HTML que provee información de
las API
Un frame describe un paquete y contiene enlaces a
páginas que describen la información de cada clase en
ese paquete.
El documento de cada clase incluye la jerarquía de
clases a la cuál pertenece, una descripción de la clase,
una lista de variables miembro, una lista de
constructores, una lista de métodos, etc
26. Ejercicio
En este ejercicio hay que crear una
versión simple de la clase Account.
Tiene que poner el archivo fuente en
el paquete banking. Un programa de
testeo, llamado TestBanking, va a ser
escrito en el paquete por defecto y va
a crear una cuenta. El mismo inicializa
el balance de la cuenta y realiza
algunas transacciones simples.
Finalmente, el programa de testeo
muestra el balance final de la cuenta.