SlideShare una empresa de Scribd logo
1 de 79
Actividad 2: Programación orientada a 
objetos 
UD – Lenguajes y Herramientas de 
Desarrollo de Software
Introducción 
 El contenido de la siguiente presentación es íntegramente el 
contenido del curso Java Programming Language, Java SE 6 de 
Oracle, con algunos agregados propios de Iberotec. 
 Se utiliza el material oficial de Oracle, por ser Iberotec 
miembro del Oracle Academy.
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Ingeniería de Software 
 Ingeniería de Software 
o La ingeniería de software es una disciplina compleja y, a 
menudo, difícil de controlar. Durante la segunda mitad del siglo 
anterior, los informáticos, ingenieros de software y 
diseñadores de sistemas dedicaron sus esfuerzos a crear 
sistemas de software más sencillos mediante el uso de código 
reutilizable. En la siguiente figura se ofrece una breve historia 
de la ingeniería de software.
Ingeniería de Software 
 Breve historia de la Ingeniería de Software
Ingeniería de Software 
 Al principio dedicaron sus esfuerzos a crear lenguajes que 
ocultaran la complejidad del lenguaje máquina y agregaron 
llamadas a procedimientos en el sistema operativo para 
manejar operaciones comunes tales como la apertura, 
lectura o escritura de archivos. 
 Otros desarrolladores agruparon en diferentes bibliotecas 
conjuntos de funciones y procedimientos comunes que 
abarcaban desde el cálculo de la cargas estructurales para 
ingeniería (NASTRAN), hasta la transmisión de caracteres y 
flujos de bytes entre los equipos conectados a una red 
(TCP/IP), el acceso a los datos a través de un método de 
acceso secuencial indexado (ISAM) o la creación de ventanas 
y otros objetos de interfaz de usuario en un monitor gráfico 
(X-Windows y Open Look).
Ingeniería de Software 
 Muchas de estas bibliotecas manejan los datos en forma de 
estructuras de registros abiertas, como es el caso de las 
estructuras struct del lenguaje C. El principal problema de las 
estructuras de registros es que el diseñador de la biblioteca 
no puede ocultar la implementación de los datos utilizada en 
los procedimientos. 
 Esto dificulta la tarea de modificar la implementación de la 
biblioteca sin tocar el código cliente porque ese código 
normalmente está ligado a los aspectos específicos de las 
estructuras de datos.
Ingeniería de Software 
 A finales de los 80, la programación orientada a objetos se 
popularizó con la llegada de C++. Una de las grandes ventajas 
de la programación OO era su capacidad para ocultar 
determinados aspectos de la implementación de la 
biblioteca para que las actualizaciones no afectasen al código 
cliente (suponiendo que no se produjesen cambios en las 
interfaces). Otra ventaja importante era que los 
procedimientos estaban asociados a la estructura de datos. 
La combinación de atributos de datos y procedimientos 
(llamados métodos) se conoce como clase.
Ingeniería de Software 
 En la actualidad, el equivalente de las bibliotecas de 
funciones son las bibliotecas de clases o los kits de 
herramientas (toolkits). Esas bibliotecas proporcionan clases 
para realizar muchas de las operaciones que realizan las 
bibliotecas de funciones, pero, gracias al uso de las subclases, 
los programadores del código cliente pueden ampliar estas 
herramientas con facilidad para utilizarlas en sus propias 
aplicaciones. Las infraestructuras de programación 
proporcionan interfaces (API) que los distintos proveedores 
pueden implementar para brindar la cantidad de flexibilidad 
y rendimiento que necesite cada desarrollador en sus 
aplicaciones.
Ingeniería de Software 
 La tecnología Java es una plataforma que se mantiene en 
continua expansión a través de diferentes API e 
infraestructuras de programación tales como Java Foundation 
Classes/Swing (J.F.C./Swing) y sus bibliotecas, la arquitectura 
de JavaBeans (arquitectura de componentes de Java) y el API 
JDBC (Java DataBase Connectivity). La lista de API de Java es 
larga y sigue en aumento.
Ingeniería de Software 
 Fase de Análisis y Diseño 
o Un proyecto de desarrollo de software se compone de cinco 
fases fundamentales: definición de los requisitos, análisis, 
diseño, implementación y pruebas. Todas ellas son 
importantes, pero es fundamental dedicar el tiempo suficiente 
para las fases de análisis y diseño.
Ingeniería de Software 
 Fase de Análisis y Diseño 
o Durante la fase de análisis se define qué objetivos debe 
perseguir el sistema. Esto se consigue definiendo todos los 
elementos implicados (usuarios, dispositivos y otros sistemas 
que interaccionan con el sistema propuesto) y las actividades 
que dicho sistema debe llevar a cabo. En esta fase se 
identifican también los objetos de dominio (tanto físicos como 
conceptuales) que el sistema propuesto manejará, así como el 
comportamiento de tales objetos y las interacciones entre ellos. 
Estos comportamientos implementan las actividades de las que 
el sistema propuesto debe hacerse cargo. La descripción de 
estas actividades debería ser lo bastante detallada como para 
crear los criterios que se tomarán como base en la fase de 
pruebas.
Ingeniería de Software 
 Fase de Análisis y Diseño 
o Durante la fase de diseño se define cómo alcanzará el sistema 
esos objetivos. En esta fase se crea un modelo de los 
elementos implicados, las actividades, los objetos y los 
comportamientos del sistema propuesto. Para esta parte 
utilizará la herramienta de modelado UML (Unified Modeling 
Language).
Ingeniería de Software 
 Ejemplo de Análisis y Diseño 
o En este módulo se utiliza como ejemplo una aplicación de una 
empresa de transporte. Deben tomarse en consideración un 
conjunto básico de requisitos: 
 El software debe aplicarse a una sola compañía de transporte. 
 La compañía cuenta con una flota de vehículos que transporta 
cajas. 
 El peso de las cajas es el único factor importante que debe 
tenerse en cuenta al cargar un vehículo. 
 La empresa posee dos tipos de vehículos: camiones y barcazas de 
transporte fluvial. 
 Las cajas se pesan utilizando el kilogramo como unidad de 
medida, pero los algoritmos para calcular la potencia de motor 
necesaria deberá contabilizar la carga total del vehículo medida 
en newtons. Un newton es una medida de fuerza (o peso) 
equivalente a 9,8 veces la masa del objeto en kilogramos.
Ingeniería de Software 
 Ejemplo de Análisis y Diseño 
Deberá utilizar una interfaz gráfica para hacer el seguimiento de 
las cajas que se van agregando a los vehículos. 
También deberá generar varios informes a partir de los registros 
de fletes. 
o Tomando estos requisitos como base, puede crear un diseño de 
alto nivel: 
 Los objetos siguientes deben estar representados en el sistema: 
una empresa y dos tipos de vehículos. 
Una compañía es la suma de múltiples objetos que son los 
vehículos. 
También existen otros objetos funcionales: los informes y las 
pantallas de la interfaz gráfica.
Ingeniería de Software 
 Abstracción 
o El diseño de software ha ido avanzado desde construcciones de 
bajo nivel, como es la escritura en código máquina, hasta 
niveles mucho más altos. 
o Existen dos fuerzas interrelacionadas que han impulsado este 
proceso: la simplificación y la abstracción.
Ingeniería de Software 
 Abstracción 
o La simplificación tuvo lugar cuando los primeros diseñadores de 
lenguajes de programación crearon construcciones de alto nivel 
tales como las sentencias condicionales IF y los bucles FOR a 
partir del lenguaje de máquina. 
o La abstracción es el mecanismo que oculta los datos privados 
de la implementación tras las interfaces públicas. 
o El concepto de abstracción condujo al uso de subrutinas 
(funciones) en lenguajes de alto nivel y, posteriormente, al 
emparejamiento de funciones y datos en objetos. A niveles más 
altos, la abstracción dio lugar al desarrollo de infraestructuras 
de programación y API.
Ingeniería de Software 
 Clases como prototipos de objetos 
o Al igual que un diseñador crea prototipos de dispositivos que 
podrán utilizarse en repetidas ocasiones para construir los 
dispositivos reales, una clase es un prototipo de software que 
puede utilizarse para instanciar (es decir crear) muchos objetos 
diferentes. La clase define el conjunto de elementos (atributos) 
que definen los objetos, así como el conjunto de 
comportamientos o funciones (llamados métodos) que 
manejan el objeto o ejecutan las interacciones entre objetos 
relacionados. Juntos, los atributos y métodos se denominan 
miembros. Por ejemplo, un objeto vehículo en la aplicación de 
transporte debe llevar el control de su carga máxima y su carga 
real y utilizar métodos para agregar una caja (de un cierto peso) 
al vehículo. El lenguaje Java incorpora tres conceptos clave de la 
Programación Orientada a Objetos (POO): encapsulación, 
herencia y polimorfismo.
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Declaración de Clases en Java 
 La declaración de clases en Java adopta la forma siguiente: 
<modificador>* class <nombre_clase> { 
<declaración_atributo>* 
<declaración_constructor>* 
<declaración_método>* 
} 
o <nombre_clase> es el nombre de la clase que se va a declarar y 
puede ser cualquier identificador admitido. 
o Hay varias palabras clave que pueden usarse como 
<modificador>, pero, por ahora, utilice únicamente public. Este 
modificador declara que la clase es pública, es decir, de acceso 
universal. 
o El cuerpo de la clase declara el conjunto de atributos, 
constructores y métodos asociados a la clase.
Declaración de Clases en Java 
 Ejemplo de declaración de una clase 
public class Vehiculo { 
private double cargaMax; 
public void setCargaMax(double valor) { 
cargaMax = valor; 
} 
}
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Declaración de Atributos 
 La declaración de atributos de los objetos se realiza de la 
forma siguiente: 
<modificador>* <tipo> <nombre> [= <valor_inicial>]; 
o <nombre> es el nombre del atributo que se va a declarar y 
puede ser cualquier identificador admitido. 
o Es posible usar varios valores como <modificador>, pero, por 
ahora, utilice sólo public o private. La clave private indica que 
sólo pueden acceder al atributo todos los métodos 
pertenecientes a esta clase. 
o El <tipo> de atributo puede ser cualquier tipo primitivo (int, 
loat, etc.) o cualquier clase.
Declaración de Atributos 
 Ejemplo: 
public class Ejemplo { 
private int x; 
private float y = 10000.0F; 
private String name = "Hotel Mediodía"; 
}
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Declaración de Métodos 
 Para definir los métodos, el lenguaje Java utiliza un enfoque 
similar al de otros lenguajes, en concreto C y C++. La 
declaración adopta el siguiente formato básico: 
<modificador>* <tipo retorno> <nombre> (<argumento>*){ 
} 
o El <nombre> puede ser cualquier identificador admitido, con 
algunas restricciones derivadas de los nombres que ya se están 
utilizando. 
o El segmento <modificador> es opcional y puede tener 
numerosos valores, entre ellos, public, protected y private. El 
modificador de acceso public indica que es posible llamar a este 
método desde otro código. El método private indica que sólo 
pueden acceder a él otros métodos de la clase. El método 
protected se describe más adelante en este curso.
Declaración de Métodos 
o <tipo_retorno> indica el tipo de valor que devuelve el método. 
Si el método no devuelve ningún valor, debe declararse void. La 
tecnología Java es estricta en lo que se refiere a los valores de 
retorno. Si la declaración indica que el método debe devolver, 
por ejemplo, un entero (int), el método debe devolver un 
entero desde todas las rutas de retorno posibles y sólo acepta 
llamadas en contextos que esperen el tipo int. Para devolver un 
valor dentro de un método debe utilizarse la sentencia return. 
o La lista <argumentos> permite pasar argumentos al método. 
Los elementos de la lista deben ir separados por comas y cada 
elemento debe constar de un tipo y un identificador.
Declaración de Métodos 
 Ejemplo 
public class Perro { 
private int peso; 
public int getPeso() { 
return peso; 
} 
public void setPeso(int newPeso) { 
if ( newPeso > 0 ) { 
peso = newPeso; 
} 
} 
}
Declaración de Métodos 
 El código muestra dos métodos para la clase Perro. 
o El método getPeso devuelve el valor del atributo peso y no 
utiliza parámetros. Los valores de los métodos se devuelven 
utilizando la sentencia return. 
o El método setPeso modifica el valor de peso con el parámetro 
newPeso. No devuelve ningún valor. Este método utiliza una 
sentencia condicional para impedir que el código cliente defina 
el peso de Perro con un número negativo o con cero.
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Acceso a los miembros del objeto 
 En el ejemplo siguiente verá la siguiente línea de código en el 
método Prueba Perro.main: 
d.setPeso(42); 
 Esta línea indica al objeto d (en realidad una variable, d, que 
contiene una referencia a un objeto del tipo Perro) que 
ejecute su método setPeso. Esto se denomina notación de 
punto. 
 El operador punto (.) permite acceder a los atributos y 
métodos que componen los miembros no privados de una 
clase. 
 Dentro de la definición de los métodos, no es necesario usar 
la notación de punto para acceder a los miembros locales. 
Por ejemplo, el método setPeso de la clase Perro no utiliza la 
notación de punto para acceder al atributo peso.
Acceso a los miembros del objeto 
 En el Código se muestra el comportamiento de los métodos 
de Perro. Cuando se crea el objeto Perro, se inicializa la 
variable de la instancia peso con el valor 0. Por tanto, el 
método getPeso devuelve 0. 
 Asimismo en este código se establece el peso en 42, que es 
un argumento válido, y el método setPeso define el valor de 
la variable peso. 
 No obstante, no se admite el valor -42 como peso, así que el 
método setPeso no modifica la variable peso.
Acceso a los miembros del objeto 
 Ejemplo 
public class PruebaPerro { 
public static void main(String[] args) { 
Perro d = new Perro(); 
System.out.println("El peso del perro d es + d.getPeso()); 
d.setPeso(42); 
System.out.println("El peso del perro d es “ + d.getPeso()); 
d.setPeso(-42); 
System.out.println("El peso del perro d es “ + d.getPeso()); 
} 
} 
La salida es: 
El peso del perro d es 0 
El peso del perro d es 42 
El peso del perro d es 42
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Forma de ocultar la información 
 Imagine que tiene una clase llamada MyDate que incluye los 
atributos siguientes: day, month y year. La Figura contiene un 
diagrama de una posible implementación de la clase MyDate. 
 Una implementación sencilla permite el acceso directo a 
estos atributos, por ejemplo: 
public class MyDate { 
public int day; 
public int month; 
public int year; 
}
Forma de ocultar la información 
 Por tanto, el código cliente accede directamente a estos 
atributos y genera errores, por ejemplo (d se refiere al objeto 
MyDate): 
d.day = 32; 
// día no válido 
d.month = 2; d.day = 30; 
// posible pero incorrecto, 30 de febrero 
d.day = d.day + 1; 
// no hay comprobación de comportamiento cíclico (wraparound)
Forma de ocultar la información 
 Para resolver el problema, oculte los datos de atributos 
haciéndolos privados y proporcione otros métodos de acceso 
como getXyz(), a veces denominados getters, y setXyz(), a 
veces llamados setters. En la siguiente Figura se ilustra otro 
diagrama UML de la clase MyDate donde se ocultan las 
variables de instancia detrás de los métodos de acceso get y 
set.
Forma de ocultar la información 
Forma de ocultar las 
variables de 
instancia de la clase 
MyDate
Forma de ocultar la información 
 Estos métodos permiten a la clase modificar los datos 
internos, pero, sobre todo, verificar la validez de los cambios 
solicitados. Por ejemplo: 
MyDate d = new MyDate(); 
d.setDay(32); 
// día no válido, devuelve false 
d.setMonth(2); d.setDay(30); 
// posible pero incorrecto, setDay devuelve false 
d.setDay(d.getDay() + 1); 
// esta línea devuelve false si se produce comportamiento cíclico
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Encapsulación 
 La encapsulación es la forma de ocultar ciertos elementos de 
la implementación de una clase y, al mismo tiempo, 
proporcionar una interfaz pública para el software cliente. Es 
una forma más de ocultar los datos, ya que la información de 
los atributos es un elemento significativo de la 
implementación de las clases. 
 Por ejemplo, el programador de la clase MyDate podría optar 
por volver a implementar la representación interna de una 
fecha como el número de días transcurridos desde el 
comienzo de una determinada época. Esto podría facilitar las 
comparaciones de fechas y el cálculo de los intervalos entre 
fechas. Como el programador ha encapsulado los atributos 
dentro de una interfaz pública, puede realizar este cambio sin 
que afecte al código cliente.
Encapsulación 
 La encapsulación aporta mayor flexibilidad para representar 
los datos.
Actividad 2: Programación orientada a 
objetos 
1. Ingeniería de Software 
2. Declaración de Clases en Java 
3. Declaración de Atributos 
4. Declaración de Métodos 
5. Acceso a los miembros del objeto 
6. Forma de ocultar la información 
7. Encapsulación 
8. Declaración de Constructores
Declaración de Constructores 
 Un constructor es un conjunto de instrucciones diseñadas 
para inicializar una instancia. Los parámetros del constructor 
se pasan de la misma forma que los de los métodos. La 
declaración básica tiene el siguiente formato: 
[<modificador>] <nombre_clase> ( <argumentos>* ) { 
<sentencia>* 
} 
 El nombre del constructor siempre debe ser idéntico al de la 
clase. Si se utilizan, los únicos modificadores válidos 
(<modificador>) para los constructores son public, protected 
y private. 
 La lista de <argumentos> es la misma que en el caso de las 
declaraciones de métodos.
Declaración de Constructores 
 Los constructores no son métodos. No tienen valores de 
retorno ni se heredan. 
public class Perro { 
private int peso; 
public Perro() { 
peso = 42; 
} 
} 
 La clase Perro tiene una sola variable de instancia peso. El 
constructor(sin parámetros) inicializa peso con el valor 42. 
También es posible declarar constructores con parámetros. 
Este aspecto se trata más adelante en el curso.
Declaración de Constructores 
 Constructor Predeterminado 
o Cada clase tiene al menos un constructor. Si no se escribe 
ninguno, el lenguaje Java se encarga de suministrarlo. En ese 
caso, el constructor no tiene argumentos y su cuerpo está 
vacío. 
o El constructor predeterminado permite crear instancias de los 
objetos con new Xyz(). En caso de que no se utilice, es preciso 
suministrar un constructor para cada clase. 
o Si se agrega la declaración de un constructor a una clase que no 
tenía ningún constructor explícito, se pierde el constructor 
predeterminado. A partir de ese momento, y a menos que el 
constructor agregado no tenga argumentos, las llamadas a new 
Xyz() generarán errores de compilación.
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Organización de los archivos fuentes 
 Los archivos fuente de Java tienen el siguiente formato: 
[<declaración_paquete>] 
<declaración_importación>* 
<declaración_clase>+ 
 El signo más (+) indica uno o más. Para que pueda utilizarse, 
un archivo fuente debe contener al menos la definición de 
una clase.
Organización de los archivos fuentes 
 El orden de estos elementos es importante. Es decir, las 
sentencias de importación deben preceder a las 
declaraciones de clases y, si se utiliza una declaración de 
paquetes, ésta debe preceder a la de clases e importaciones. 
 El nombre del archivo fuente debe ser el mismo que el de la 
declaración de clase pública de ese archivo. 
 Por otra parte, el archivo fuente puede incluir varias 
declaraciones de clases, pero sólo una puede declararse 
como pública (public). Si un archivo fuente no contiene 
ninguna declaración de clase pública, entonces no existen 
restricciones en cuanto al nombre de archivo. No obstante, es 
recomendable tener un archivo fuente por cada declaración 
de clase y el nombre de dicho archivo debe ser idéntico al de 
la clase.
Organización de los archivos fuentes 
 Por ejemplo, el archivo InformeCapacidadVehiculo.java 
debería tener un contenido similar a éste: 
package transporte.informes; 
import transporte.dominio.*; 
import java.util.List; 
import java.io.*; 
public class InformeCapacidadVehiculo { 
private List vehiculos; 
public void generarInforme(Writer output) { 
// código para generar el informe 
} 
}
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Paquetes de Software 
 La mayoría de los sistemas de software son de grandes 
dimensiones. Es habitual agrupar las clases en paquetes para 
facilitar la administración del sistema. UML incluye el 
concepto de paquete en su lenguaje de modelado. Los 
paquetes pueden contener clases u otros paquetes que 
forman una jerarquía. En la Figura puede verse un ejemplo de 
una estructura de paquetes:
Paquetes de Software 
 Existen muchas formas de agrupar las clases en paquetes con 
sentido lógico. No existe una forma correcta o errónea de 
hacerlo, pero una técnica habitual es agrupar las clases por 
similitud semántica. 
 Por ejemplo, un sistema de software de transporte debería 
contener una serie de objetos de dominio (como la empresa, 
los vehículos, las cajas, los destinos, etc.), un conjunto de 
informes y un grupo de paneles de la interfaz gráfica que 
sirvan para crear la aplicación de introducción de datos 
principal. Los subsistemas GUI e informes dependen del 
paquete dominio. Los paquetes UML pueden ser útiles para 
modelar subsistemas u otras agrupaciones de elementos en 
función de las necesidades. Los demás paquetes están 
incluidos en el paquete de nivel superior, llamado transporte.
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Sentencia package 
 El lenguaje Java proporciona la sentencia package como una 
forma de agrupar clases relacionadas. Esta sentencia se 
utiliza con la siguiente sintaxis: 
package <nombre_paq_superior>[.<nombre_paq_subordinado>]*; 
 Es posible indicar que las clases de un archivo fuente 
pertenecen a un determinado paquete utilizando la sentencia 
package, por ejemplo: 
package transporte.dominio; 
// Clase Vehiculo del subpaquete ’dominio’ que hay dentro del 
// paquete ’transporte’. 
public class Vehiculo { 
... 
}
Sentencia package 
 La declaración de paquetes, si existe, debe situarse al 
comienzo del archivo fuente. Puede ir precedida de un 
espacio en blanco y comentarios, pero nada más. Sólo se 
permite una declaración de paquetes, que será la que 
gobierne todo el archivo fuente. Si un archivo fuente Java no 
contiene ninguna declaración de paquete, las clases 
declaradas en el archivo pertenecerán al paquete 
predeterminado (sin nombre).
Sentencia package 
 Los nombres de paquetes forman una jerarquía y se separan 
mediante puntos. Lo normal es que los elementos de estos 
nombres se escriban enteramente en minúsculas. Sin 
embargo, el nombre de las clases suele empezar por una letra 
mayúscula y se escribe en mayúscula la primera letra de cada 
palabra que se agrega a fin de diferenciar las distintas 
palabras dentro del nombre de clase. Éstas y otras 
convenciones sobre la nomenclatura se explican en 
‘‘Convenciones de codificación en el lenguaje Java“. 
 Si no se incluye ninguna sentencia package en el archivo, 
todas las clases declaradas en ese archivo pertenecen al 
paquete predeterminado(que es un paquete sin nombre).
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Sentencia import 
 Esta sentencia tiene la siguiente sintaxis: 
import <nombre_paq>[.<nombre_paq_subordinado>].<nombre_clase>; 
o bien 
import <nombre_paq>[.<nombre_paq_subordinado>].*; 
 Cuando vaya a utilizar paquetes, use la sentencia import para 
indicar al compilador el lugar donde se encuentran las clases. 
De hecho, el nombre del paquete (por ejemplo, 
transporte.dominio) forma parte del nombre de las clases 
contenidas en ese paquete. Así, puede referirse a la clase 
Empresa como transporte.dominio.Empresa en todo el 
archivo, o bien utilizar la sentencia import junto con el 
nombre de la clase Empresa.
Sentencia import 
 Las sentencias import deben preceder a cualquier 
declaración de clase del archivo. 
 En el ejemplo siguiente se muestra un fragmento de archivo 
donde se utiliza la sentencia import. 
package transporte.informes; 
import transporte.dominio.*; 
import java.util.List; 
import java.io.*; 
public class InformeCapacidadVehiculo { 
private Empresa empresaParaInforme; 
... 
}
Sentencia import 
 Cuando se declara un paquete, no es necesario importar el 
paquete en sí, ni ninguno de los elementos que contiene. 
Recuerde que la sentencia import se utiliza para poner las 
clases de otros paquetes a disposición de la clase actual. 
 import indica la clase a la que se quiere acceder. Por ejemplo, 
si sólo quiere incluir la clase Writer (del paquete java.io) en el 
espacio de nombres actual, utilizará: 
import java.io.Writer; 
 Si quiere acceso a todas las clases del paquete, utilice el 
asterisco “*”. Por ejemplo, para acceder a todas las clases del 
paquete java.io, escriba: 
import java.io.*;
Sentencia import 
 La sentencia import permite utilizar los nombres de clase en 
un formato abreviado dentro del código fuente, eso es todo. 
Este tipo de sentencias no hacen que el compilador cargue 
ningún dato adicional en la memoria de trabajo. En este 
sentido, import se diferencia bastante de la sentencia 
#include de C o C++. La sentencia import, con o sin carácter 
comodín (*), no tiene ningún efecto en el archivo de clase de 
salida, ni tampoco en el rendimiento del programa durante la 
ejecución. 
 Asimismo, es improbable que su uso provoque diferencias de 
rendimiento durante la compilación.
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Disposición de los directorios y los paquetes 
 Los paquetes se almacenan en un árbol de directorios cuyas 
ramas son los nombres de los paquetes. Por ejemplo, el 
archivo Empresa.class se encontrará en la estructura de 
directorios que aparece en la Figura.
Disposición de los directorios y los paquetes 
 Desarrollo 
o Es habitual tener que trabajar en varios proyectos de desarrollo 
al mismo tiempo. Existen muchas formas de organizar los 
archivos de desarrollo. En esta sección se describe una de ellas. 
o En la Figura anterior puede verse un ejemplo de jerarquía de 
directorios creada para un proyecto de desarrollo. El aspecto 
fundamental de esta jerarquía es que los archivos fuente de 
cada proyecto están separados de los archivos compilados 
(.class).
Disposición de los directorios y los paquetes 
 Desarrollo
Disposición de los directorios y los paquetes 
 Compilación con la opción -d 
o Normalmente, el compilador de Java sitúa los archivos de clases 
en el mismo directorio que los archivos fuente. Es posible 
enviar los archivos de clases a otro directorio utilizando la 
opción -d del comando javac. La forma más sencilla de compilar 
los archivos de los paquetes es trabajar en el directorio situado 
un nivel por encima del comienzo del paquete (en este 
ejemplo, el directorio src). 
o Para compilar todos los archivos del paquete 
transporte.dominio de forma que todas las clases compiladas 
vayan al directorio de paquete correcto dentro de 
TransporteProy/class/, escriba lo siguiente: 
cd ProyectosJava/TransporteProy/src 
javac –d ../classes transporte/dominio/*.java
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Implementación 
 Implementación 
o Es posible implementar una aplicación en una máquina cliente 
sin modificar la variable de entorno CLASSPATH del usuario. 
Normalmente, la mejor forma de hacerlo es crear un archivo 
Java ejecutable (JAR). Para crear este archivo, debe crear un 
archivo temporal donde se indique el nombre de la clase que 
contiene el método main necesario para la ejecución, por 
ejemplo: 
Main-Class: mipaquete.MiClase
Implementación 
 Implementación 
o A continuación, cree el archivo JAR de la forma habitual, 
aunque deberá agregar una opción para que el contenido del 
archivo temporal se copie en el archivo META-INF/ 
MANIFEST.MF. Para ello, utilice la opción “m”, como en 
este ejemplo: 
jar cmf tempfile MiPrograma.jar
Implementación 
 Implementación 
o Por último, el programa puede ejecutarse simplemente con un 
comando como éste: 
java -jar /ruta/al/archivo/MiPrograma.jar 
o En algunas plataformas, basta hacer doble clic en el icono de un 
archivo JAR ejecutable para que se inicie el programa 
correspondiente.
Implementación 
 Implementación de las bibliotecas 
o Algunas veces es necesario implementar el código de las 
bibliotecas en un archivo JAR. En tales casos, es posible copiar 
el archivo JAR en el subdirectorio ext del directorio lib situado 
bajo el directorio principal del JRE. Actúe con precaución al 
hacerlo porque, si implementa las clases de esta forma, 
normalmente reciben privilegios de seguridad completos. 
o Esto puede ocasionar problemas durante la ejecución del 
programa en el caso de que existan conflictos de nombres con 
otras clases del núcleo del JDK u otras clases que se hayan 
instalado de esa misma forma.
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Actividad 2: Programación orientada a 
objetos 
9. Organización de los archivos fuentes 
10. Paquetes de Software 
11. Sentencia package 
12. Sentencia import 
13. Disposición de los directorios y los paquetes 
14. Implementación 
15. Resumen de la terminología 
16. Uso de la documentación sobre el API de Java
Uso de la documentación sobre el API de Java 
 Existen diferentes archivos en formato HTML que sirven de 
documentación sobre el API suministrado. La organización de 
estos documentos es jerárquica, de modo que la página 
inicial muestra la lista de todos los paquetes en forma de 
hipervínculos. Cuando seleccione el vínculo de un 
determinado paquete, aparecerá la lista de todas las clases 
que contiene ese paquete. Si selecciona el vínculo de una 
clase, se abrirá una página con información sobre esa clase. 
En la Figura se muestra una de las clases.
Uso de la documentación sobre el API de Java
Uso de la documentación sobre el API de Java 
 Los documentos de las clases contienen las secciones 
siguientes: 
o La jerarquía de la clase 
o Una descripción de la clase y su propósito 
o La lista de atributos 
o La lista de constructores 
o La lista de métodos 
o Una lista detallada de atributos con sus descripciones 
o Una lista detallada de constructores con sus descripciones y las 
listas de parámetros formales 
o Una lista detallada de métodos con sus descripciones y las listas 
de parámetros formales
TAREA 
 Investiga el concepto de las siguientes palabras en 03 líneas y 
lo presentas en PowerPoint 
oClase: 
oObjeto: 
oAtributo: 
oMétodo: 
oConstructor: 
oPaquete:

Más contenido relacionado

La actualidad más candente

8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 
polimorfismo
polimorfismopolimorfismo
polimorfismomiguel a
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Maria Garcia
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
Modelo objeto semántico
Modelo objeto semánticoModelo objeto semántico
Modelo objeto semánticoReicerBlanco
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automataJacqui Venegas
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Base de datos 2(tema 3)
Base de datos 2(tema 3)Base de datos 2(tema 3)
Base de datos 2(tema 3)Edwin Arias
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en javaLuis Miguel De Bello
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.nayis2010
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 

La actualidad más candente (20)

8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Modelo objeto semántico
Modelo objeto semánticoModelo objeto semántico
Modelo objeto semántico
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Base de datos 2(tema 3)
Base de datos 2(tema 3)Base de datos 2(tema 3)
Base de datos 2(tema 3)
 
Flujo datos
Flujo datosFlujo datos
Flujo datos
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 
3. Modelo ER - Relacional
3. Modelo ER - Relacional3. Modelo ER - Relacional
3. Modelo ER - Relacional
 
Programacion orientada
Programacion orientadaProgramacion orientada
Programacion orientada
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 

Destacado

U.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAU.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAiessanjuanbosco
 
1 Curso POO (Programación orientada a objetos) en java - problemas y proceso
1 Curso POO (Programación orientada a objetos) en java - problemas y proceso1 Curso POO (Programación orientada a objetos) en java - problemas y proceso
1 Curso POO (Programación orientada a objetos) en java - problemas y procesoClara Patricia Avella Ibañez
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos JavaC_QUENGUAN
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSJonathan Hidalgo Nolasco
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
Semana1 Lenguajes POO PEV
Semana1 Lenguajes POO PEVSemana1 Lenguajes POO PEV
Semana1 Lenguajes POO PEVHerman Vargas
 
10. programación orientada a objetos (java)
10. programación orientada a objetos (java)10. programación orientada a objetos (java)
10. programación orientada a objetos (java)Eric Martinez Aguilar
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAMichelle Torres
 

Destacado (20)

U.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAU.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
1 Curso POO (Programación orientada a objetos) en java - problemas y proceso
1 Curso POO (Programación orientada a objetos) en java - problemas y proceso1 Curso POO (Programación orientada a objetos) en java - problemas y proceso
1 Curso POO (Programación orientada a objetos) en java - problemas y proceso
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
4 Curso de POO en java - instalación Eclipse
4 Curso de POO en java - instalación Eclipse4 Curso de POO en java - instalación Eclipse
4 Curso de POO en java - instalación Eclipse
 
POO sencillito
POO sencillitoPOO sencillito
POO sencillito
 
8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos Java
 
2 Curso de POO en java - modelamiento casos de uso
2 Curso de POO en java - modelamiento casos de uso2 Curso de POO en java - modelamiento casos de uso
2 Curso de POO en java - modelamiento casos de uso
 
18 Curso POO en java - contenedores
18 Curso POO en java - contenedores18 Curso POO en java - contenedores
18 Curso POO en java - contenedores
 
Curso Java Inicial 1 POO
Curso Java Inicial   1 POOCurso Java Inicial   1 POO
Curso Java Inicial 1 POO
 
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOSLENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
 
17 arreglos bidimensionales java
17 arreglos bidimensionales java17 arreglos bidimensionales java
17 arreglos bidimensionales java
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 
POO
POOPOO
POO
 
Semana1 Lenguajes POO PEV
Semana1 Lenguajes POO PEVSemana1 Lenguajes POO PEV
Semana1 Lenguajes POO PEV
 
10. programación orientada a objetos (java)
10. programación orientada a objetos (java)10. programación orientada a objetos (java)
10. programación orientada a objetos (java)
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
 

Similar a Programacion orientada a objetos Java

Similar a Programacion orientada a objetos Java (20)

Framework
FrameworkFramework
Framework
 
Franle ocanto
Franle ocantoFranle ocanto
Franle ocanto
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Framework by Marcos Acosta
Framework by Marcos AcostaFramework by Marcos Acosta
Framework by Marcos Acosta
 
Pdf glo
Pdf gloPdf glo
Pdf glo
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Unidad i poo avanzada
Unidad i   poo avanzadaUnidad i   poo avanzada
Unidad i poo avanzada
 
Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09
 
Glosario
GlosarioGlosario
Glosario
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Trabajo de programacion (visual basic)
Trabajo de programacion (visual basic)Trabajo de programacion (visual basic)
Trabajo de programacion (visual basic)
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Manual android
Manual androidManual android
Manual android
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica
 
Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacion
 

Último

Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresJonathanCovena1
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptxCamuchaCrdovaAlonso
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfEduardoJosVargasCama1
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 

Último (20)

Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 

Programacion orientada a objetos Java

  • 1. Actividad 2: Programación orientada a objetos UD – Lenguajes y Herramientas de Desarrollo de Software
  • 2. Introducción  El contenido de la siguiente presentación es íntegramente el contenido del curso Java Programming Language, Java SE 6 de Oracle, con algunos agregados propios de Iberotec.  Se utiliza el material oficial de Oracle, por ser Iberotec miembro del Oracle Academy.
  • 3. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 4. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 5. Ingeniería de Software  Ingeniería de Software o La ingeniería de software es una disciplina compleja y, a menudo, difícil de controlar. Durante la segunda mitad del siglo anterior, los informáticos, ingenieros de software y diseñadores de sistemas dedicaron sus esfuerzos a crear sistemas de software más sencillos mediante el uso de código reutilizable. En la siguiente figura se ofrece una breve historia de la ingeniería de software.
  • 6. Ingeniería de Software  Breve historia de la Ingeniería de Software
  • 7. Ingeniería de Software  Al principio dedicaron sus esfuerzos a crear lenguajes que ocultaran la complejidad del lenguaje máquina y agregaron llamadas a procedimientos en el sistema operativo para manejar operaciones comunes tales como la apertura, lectura o escritura de archivos.  Otros desarrolladores agruparon en diferentes bibliotecas conjuntos de funciones y procedimientos comunes que abarcaban desde el cálculo de la cargas estructurales para ingeniería (NASTRAN), hasta la transmisión de caracteres y flujos de bytes entre los equipos conectados a una red (TCP/IP), el acceso a los datos a través de un método de acceso secuencial indexado (ISAM) o la creación de ventanas y otros objetos de interfaz de usuario en un monitor gráfico (X-Windows y Open Look).
  • 8. Ingeniería de Software  Muchas de estas bibliotecas manejan los datos en forma de estructuras de registros abiertas, como es el caso de las estructuras struct del lenguaje C. El principal problema de las estructuras de registros es que el diseñador de la biblioteca no puede ocultar la implementación de los datos utilizada en los procedimientos.  Esto dificulta la tarea de modificar la implementación de la biblioteca sin tocar el código cliente porque ese código normalmente está ligado a los aspectos específicos de las estructuras de datos.
  • 9. Ingeniería de Software  A finales de los 80, la programación orientada a objetos se popularizó con la llegada de C++. Una de las grandes ventajas de la programación OO era su capacidad para ocultar determinados aspectos de la implementación de la biblioteca para que las actualizaciones no afectasen al código cliente (suponiendo que no se produjesen cambios en las interfaces). Otra ventaja importante era que los procedimientos estaban asociados a la estructura de datos. La combinación de atributos de datos y procedimientos (llamados métodos) se conoce como clase.
  • 10. Ingeniería de Software  En la actualidad, el equivalente de las bibliotecas de funciones son las bibliotecas de clases o los kits de herramientas (toolkits). Esas bibliotecas proporcionan clases para realizar muchas de las operaciones que realizan las bibliotecas de funciones, pero, gracias al uso de las subclases, los programadores del código cliente pueden ampliar estas herramientas con facilidad para utilizarlas en sus propias aplicaciones. Las infraestructuras de programación proporcionan interfaces (API) que los distintos proveedores pueden implementar para brindar la cantidad de flexibilidad y rendimiento que necesite cada desarrollador en sus aplicaciones.
  • 11. Ingeniería de Software  La tecnología Java es una plataforma que se mantiene en continua expansión a través de diferentes API e infraestructuras de programación tales como Java Foundation Classes/Swing (J.F.C./Swing) y sus bibliotecas, la arquitectura de JavaBeans (arquitectura de componentes de Java) y el API JDBC (Java DataBase Connectivity). La lista de API de Java es larga y sigue en aumento.
  • 12. Ingeniería de Software  Fase de Análisis y Diseño o Un proyecto de desarrollo de software se compone de cinco fases fundamentales: definición de los requisitos, análisis, diseño, implementación y pruebas. Todas ellas son importantes, pero es fundamental dedicar el tiempo suficiente para las fases de análisis y diseño.
  • 13. Ingeniería de Software  Fase de Análisis y Diseño o Durante la fase de análisis se define qué objetivos debe perseguir el sistema. Esto se consigue definiendo todos los elementos implicados (usuarios, dispositivos y otros sistemas que interaccionan con el sistema propuesto) y las actividades que dicho sistema debe llevar a cabo. En esta fase se identifican también los objetos de dominio (tanto físicos como conceptuales) que el sistema propuesto manejará, así como el comportamiento de tales objetos y las interacciones entre ellos. Estos comportamientos implementan las actividades de las que el sistema propuesto debe hacerse cargo. La descripción de estas actividades debería ser lo bastante detallada como para crear los criterios que se tomarán como base en la fase de pruebas.
  • 14. Ingeniería de Software  Fase de Análisis y Diseño o Durante la fase de diseño se define cómo alcanzará el sistema esos objetivos. En esta fase se crea un modelo de los elementos implicados, las actividades, los objetos y los comportamientos del sistema propuesto. Para esta parte utilizará la herramienta de modelado UML (Unified Modeling Language).
  • 15. Ingeniería de Software  Ejemplo de Análisis y Diseño o En este módulo se utiliza como ejemplo una aplicación de una empresa de transporte. Deben tomarse en consideración un conjunto básico de requisitos:  El software debe aplicarse a una sola compañía de transporte.  La compañía cuenta con una flota de vehículos que transporta cajas.  El peso de las cajas es el único factor importante que debe tenerse en cuenta al cargar un vehículo.  La empresa posee dos tipos de vehículos: camiones y barcazas de transporte fluvial.  Las cajas se pesan utilizando el kilogramo como unidad de medida, pero los algoritmos para calcular la potencia de motor necesaria deberá contabilizar la carga total del vehículo medida en newtons. Un newton es una medida de fuerza (o peso) equivalente a 9,8 veces la masa del objeto en kilogramos.
  • 16. Ingeniería de Software  Ejemplo de Análisis y Diseño Deberá utilizar una interfaz gráfica para hacer el seguimiento de las cajas que se van agregando a los vehículos. También deberá generar varios informes a partir de los registros de fletes. o Tomando estos requisitos como base, puede crear un diseño de alto nivel:  Los objetos siguientes deben estar representados en el sistema: una empresa y dos tipos de vehículos. Una compañía es la suma de múltiples objetos que son los vehículos. También existen otros objetos funcionales: los informes y las pantallas de la interfaz gráfica.
  • 17. Ingeniería de Software  Abstracción o El diseño de software ha ido avanzado desde construcciones de bajo nivel, como es la escritura en código máquina, hasta niveles mucho más altos. o Existen dos fuerzas interrelacionadas que han impulsado este proceso: la simplificación y la abstracción.
  • 18. Ingeniería de Software  Abstracción o La simplificación tuvo lugar cuando los primeros diseñadores de lenguajes de programación crearon construcciones de alto nivel tales como las sentencias condicionales IF y los bucles FOR a partir del lenguaje de máquina. o La abstracción es el mecanismo que oculta los datos privados de la implementación tras las interfaces públicas. o El concepto de abstracción condujo al uso de subrutinas (funciones) en lenguajes de alto nivel y, posteriormente, al emparejamiento de funciones y datos en objetos. A niveles más altos, la abstracción dio lugar al desarrollo de infraestructuras de programación y API.
  • 19. Ingeniería de Software  Clases como prototipos de objetos o Al igual que un diseñador crea prototipos de dispositivos que podrán utilizarse en repetidas ocasiones para construir los dispositivos reales, una clase es un prototipo de software que puede utilizarse para instanciar (es decir crear) muchos objetos diferentes. La clase define el conjunto de elementos (atributos) que definen los objetos, así como el conjunto de comportamientos o funciones (llamados métodos) que manejan el objeto o ejecutan las interacciones entre objetos relacionados. Juntos, los atributos y métodos se denominan miembros. Por ejemplo, un objeto vehículo en la aplicación de transporte debe llevar el control de su carga máxima y su carga real y utilizar métodos para agregar una caja (de un cierto peso) al vehículo. El lenguaje Java incorpora tres conceptos clave de la Programación Orientada a Objetos (POO): encapsulación, herencia y polimorfismo.
  • 20. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 21. Declaración de Clases en Java  La declaración de clases en Java adopta la forma siguiente: <modificador>* class <nombre_clase> { <declaración_atributo>* <declaración_constructor>* <declaración_método>* } o <nombre_clase> es el nombre de la clase que se va a declarar y puede ser cualquier identificador admitido. o Hay varias palabras clave que pueden usarse como <modificador>, pero, por ahora, utilice únicamente public. Este modificador declara que la clase es pública, es decir, de acceso universal. o El cuerpo de la clase declara el conjunto de atributos, constructores y métodos asociados a la clase.
  • 22. Declaración de Clases en Java  Ejemplo de declaración de una clase public class Vehiculo { private double cargaMax; public void setCargaMax(double valor) { cargaMax = valor; } }
  • 23. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 24. Declaración de Atributos  La declaración de atributos de los objetos se realiza de la forma siguiente: <modificador>* <tipo> <nombre> [= <valor_inicial>]; o <nombre> es el nombre del atributo que se va a declarar y puede ser cualquier identificador admitido. o Es posible usar varios valores como <modificador>, pero, por ahora, utilice sólo public o private. La clave private indica que sólo pueden acceder al atributo todos los métodos pertenecientes a esta clase. o El <tipo> de atributo puede ser cualquier tipo primitivo (int, loat, etc.) o cualquier clase.
  • 25. Declaración de Atributos  Ejemplo: public class Ejemplo { private int x; private float y = 10000.0F; private String name = "Hotel Mediodía"; }
  • 26. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 27. Declaración de Métodos  Para definir los métodos, el lenguaje Java utiliza un enfoque similar al de otros lenguajes, en concreto C y C++. La declaración adopta el siguiente formato básico: <modificador>* <tipo retorno> <nombre> (<argumento>*){ } o El <nombre> puede ser cualquier identificador admitido, con algunas restricciones derivadas de los nombres que ya se están utilizando. o El segmento <modificador> es opcional y puede tener numerosos valores, entre ellos, public, protected y private. El modificador de acceso public indica que es posible llamar a este método desde otro código. El método private indica que sólo pueden acceder a él otros métodos de la clase. El método protected se describe más adelante en este curso.
  • 28. Declaración de Métodos o <tipo_retorno> indica el tipo de valor que devuelve el método. Si el método no devuelve ningún valor, debe declararse void. La tecnología Java es estricta en lo que se refiere a los valores de retorno. Si la declaración indica que el método debe devolver, por ejemplo, un entero (int), el método debe devolver un entero desde todas las rutas de retorno posibles y sólo acepta llamadas en contextos que esperen el tipo int. Para devolver un valor dentro de un método debe utilizarse la sentencia return. o La lista <argumentos> permite pasar argumentos al método. Los elementos de la lista deben ir separados por comas y cada elemento debe constar de un tipo y un identificador.
  • 29. Declaración de Métodos  Ejemplo public class Perro { private int peso; public int getPeso() { return peso; } public void setPeso(int newPeso) { if ( newPeso > 0 ) { peso = newPeso; } } }
  • 30. Declaración de Métodos  El código muestra dos métodos para la clase Perro. o El método getPeso devuelve el valor del atributo peso y no utiliza parámetros. Los valores de los métodos se devuelven utilizando la sentencia return. o El método setPeso modifica el valor de peso con el parámetro newPeso. No devuelve ningún valor. Este método utiliza una sentencia condicional para impedir que el código cliente defina el peso de Perro con un número negativo o con cero.
  • 31. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 32. Acceso a los miembros del objeto  En el ejemplo siguiente verá la siguiente línea de código en el método Prueba Perro.main: d.setPeso(42);  Esta línea indica al objeto d (en realidad una variable, d, que contiene una referencia a un objeto del tipo Perro) que ejecute su método setPeso. Esto se denomina notación de punto.  El operador punto (.) permite acceder a los atributos y métodos que componen los miembros no privados de una clase.  Dentro de la definición de los métodos, no es necesario usar la notación de punto para acceder a los miembros locales. Por ejemplo, el método setPeso de la clase Perro no utiliza la notación de punto para acceder al atributo peso.
  • 33. Acceso a los miembros del objeto  En el Código se muestra el comportamiento de los métodos de Perro. Cuando se crea el objeto Perro, se inicializa la variable de la instancia peso con el valor 0. Por tanto, el método getPeso devuelve 0.  Asimismo en este código se establece el peso en 42, que es un argumento válido, y el método setPeso define el valor de la variable peso.  No obstante, no se admite el valor -42 como peso, así que el método setPeso no modifica la variable peso.
  • 34. Acceso a los miembros del objeto  Ejemplo public class PruebaPerro { public static void main(String[] args) { Perro d = new Perro(); System.out.println("El peso del perro d es + d.getPeso()); d.setPeso(42); System.out.println("El peso del perro d es “ + d.getPeso()); d.setPeso(-42); System.out.println("El peso del perro d es “ + d.getPeso()); } } La salida es: El peso del perro d es 0 El peso del perro d es 42 El peso del perro d es 42
  • 35. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 36. Forma de ocultar la información  Imagine que tiene una clase llamada MyDate que incluye los atributos siguientes: day, month y year. La Figura contiene un diagrama de una posible implementación de la clase MyDate.  Una implementación sencilla permite el acceso directo a estos atributos, por ejemplo: public class MyDate { public int day; public int month; public int year; }
  • 37. Forma de ocultar la información  Por tanto, el código cliente accede directamente a estos atributos y genera errores, por ejemplo (d se refiere al objeto MyDate): d.day = 32; // día no válido d.month = 2; d.day = 30; // posible pero incorrecto, 30 de febrero d.day = d.day + 1; // no hay comprobación de comportamiento cíclico (wraparound)
  • 38. Forma de ocultar la información  Para resolver el problema, oculte los datos de atributos haciéndolos privados y proporcione otros métodos de acceso como getXyz(), a veces denominados getters, y setXyz(), a veces llamados setters. En la siguiente Figura se ilustra otro diagrama UML de la clase MyDate donde se ocultan las variables de instancia detrás de los métodos de acceso get y set.
  • 39. Forma de ocultar la información Forma de ocultar las variables de instancia de la clase MyDate
  • 40. Forma de ocultar la información  Estos métodos permiten a la clase modificar los datos internos, pero, sobre todo, verificar la validez de los cambios solicitados. Por ejemplo: MyDate d = new MyDate(); d.setDay(32); // día no válido, devuelve false d.setMonth(2); d.setDay(30); // posible pero incorrecto, setDay devuelve false d.setDay(d.getDay() + 1); // esta línea devuelve false si se produce comportamiento cíclico
  • 41. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 42. Encapsulación  La encapsulación es la forma de ocultar ciertos elementos de la implementación de una clase y, al mismo tiempo, proporcionar una interfaz pública para el software cliente. Es una forma más de ocultar los datos, ya que la información de los atributos es un elemento significativo de la implementación de las clases.  Por ejemplo, el programador de la clase MyDate podría optar por volver a implementar la representación interna de una fecha como el número de días transcurridos desde el comienzo de una determinada época. Esto podría facilitar las comparaciones de fechas y el cálculo de los intervalos entre fechas. Como el programador ha encapsulado los atributos dentro de una interfaz pública, puede realizar este cambio sin que afecte al código cliente.
  • 43. Encapsulación  La encapsulación aporta mayor flexibilidad para representar los datos.
  • 44. Actividad 2: Programación orientada a objetos 1. Ingeniería de Software 2. Declaración de Clases en Java 3. Declaración de Atributos 4. Declaración de Métodos 5. Acceso a los miembros del objeto 6. Forma de ocultar la información 7. Encapsulación 8. Declaración de Constructores
  • 45. Declaración de Constructores  Un constructor es un conjunto de instrucciones diseñadas para inicializar una instancia. Los parámetros del constructor se pasan de la misma forma que los de los métodos. La declaración básica tiene el siguiente formato: [<modificador>] <nombre_clase> ( <argumentos>* ) { <sentencia>* }  El nombre del constructor siempre debe ser idéntico al de la clase. Si se utilizan, los únicos modificadores válidos (<modificador>) para los constructores son public, protected y private.  La lista de <argumentos> es la misma que en el caso de las declaraciones de métodos.
  • 46. Declaración de Constructores  Los constructores no son métodos. No tienen valores de retorno ni se heredan. public class Perro { private int peso; public Perro() { peso = 42; } }  La clase Perro tiene una sola variable de instancia peso. El constructor(sin parámetros) inicializa peso con el valor 42. También es posible declarar constructores con parámetros. Este aspecto se trata más adelante en el curso.
  • 47. Declaración de Constructores  Constructor Predeterminado o Cada clase tiene al menos un constructor. Si no se escribe ninguno, el lenguaje Java se encarga de suministrarlo. En ese caso, el constructor no tiene argumentos y su cuerpo está vacío. o El constructor predeterminado permite crear instancias de los objetos con new Xyz(). En caso de que no se utilice, es preciso suministrar un constructor para cada clase. o Si se agrega la declaración de un constructor a una clase que no tenía ningún constructor explícito, se pierde el constructor predeterminado. A partir de ese momento, y a menos que el constructor agregado no tenga argumentos, las llamadas a new Xyz() generarán errores de compilación.
  • 48. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 49. Organización de los archivos fuentes  Los archivos fuente de Java tienen el siguiente formato: [<declaración_paquete>] <declaración_importación>* <declaración_clase>+  El signo más (+) indica uno o más. Para que pueda utilizarse, un archivo fuente debe contener al menos la definición de una clase.
  • 50. Organización de los archivos fuentes  El orden de estos elementos es importante. Es decir, las sentencias de importación deben preceder a las declaraciones de clases y, si se utiliza una declaración de paquetes, ésta debe preceder a la de clases e importaciones.  El nombre del archivo fuente debe ser el mismo que el de la declaración de clase pública de ese archivo.  Por otra parte, el archivo fuente puede incluir varias declaraciones de clases, pero sólo una puede declararse como pública (public). Si un archivo fuente no contiene ninguna declaración de clase pública, entonces no existen restricciones en cuanto al nombre de archivo. No obstante, es recomendable tener un archivo fuente por cada declaración de clase y el nombre de dicho archivo debe ser idéntico al de la clase.
  • 51. Organización de los archivos fuentes  Por ejemplo, el archivo InformeCapacidadVehiculo.java debería tener un contenido similar a éste: package transporte.informes; import transporte.dominio.*; import java.util.List; import java.io.*; public class InformeCapacidadVehiculo { private List vehiculos; public void generarInforme(Writer output) { // código para generar el informe } }
  • 52. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 53. Paquetes de Software  La mayoría de los sistemas de software son de grandes dimensiones. Es habitual agrupar las clases en paquetes para facilitar la administración del sistema. UML incluye el concepto de paquete en su lenguaje de modelado. Los paquetes pueden contener clases u otros paquetes que forman una jerarquía. En la Figura puede verse un ejemplo de una estructura de paquetes:
  • 54. Paquetes de Software  Existen muchas formas de agrupar las clases en paquetes con sentido lógico. No existe una forma correcta o errónea de hacerlo, pero una técnica habitual es agrupar las clases por similitud semántica.  Por ejemplo, un sistema de software de transporte debería contener una serie de objetos de dominio (como la empresa, los vehículos, las cajas, los destinos, etc.), un conjunto de informes y un grupo de paneles de la interfaz gráfica que sirvan para crear la aplicación de introducción de datos principal. Los subsistemas GUI e informes dependen del paquete dominio. Los paquetes UML pueden ser útiles para modelar subsistemas u otras agrupaciones de elementos en función de las necesidades. Los demás paquetes están incluidos en el paquete de nivel superior, llamado transporte.
  • 55. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 56. Sentencia package  El lenguaje Java proporciona la sentencia package como una forma de agrupar clases relacionadas. Esta sentencia se utiliza con la siguiente sintaxis: package <nombre_paq_superior>[.<nombre_paq_subordinado>]*;  Es posible indicar que las clases de un archivo fuente pertenecen a un determinado paquete utilizando la sentencia package, por ejemplo: package transporte.dominio; // Clase Vehiculo del subpaquete ’dominio’ que hay dentro del // paquete ’transporte’. public class Vehiculo { ... }
  • 57. Sentencia package  La declaración de paquetes, si existe, debe situarse al comienzo del archivo fuente. Puede ir precedida de un espacio en blanco y comentarios, pero nada más. Sólo se permite una declaración de paquetes, que será la que gobierne todo el archivo fuente. Si un archivo fuente Java no contiene ninguna declaración de paquete, las clases declaradas en el archivo pertenecerán al paquete predeterminado (sin nombre).
  • 58. Sentencia package  Los nombres de paquetes forman una jerarquía y se separan mediante puntos. Lo normal es que los elementos de estos nombres se escriban enteramente en minúsculas. Sin embargo, el nombre de las clases suele empezar por una letra mayúscula y se escribe en mayúscula la primera letra de cada palabra que se agrega a fin de diferenciar las distintas palabras dentro del nombre de clase. Éstas y otras convenciones sobre la nomenclatura se explican en ‘‘Convenciones de codificación en el lenguaje Java“.  Si no se incluye ninguna sentencia package en el archivo, todas las clases declaradas en ese archivo pertenecen al paquete predeterminado(que es un paquete sin nombre).
  • 59. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 60. Sentencia import  Esta sentencia tiene la siguiente sintaxis: import <nombre_paq>[.<nombre_paq_subordinado>].<nombre_clase>; o bien import <nombre_paq>[.<nombre_paq_subordinado>].*;  Cuando vaya a utilizar paquetes, use la sentencia import para indicar al compilador el lugar donde se encuentran las clases. De hecho, el nombre del paquete (por ejemplo, transporte.dominio) forma parte del nombre de las clases contenidas en ese paquete. Así, puede referirse a la clase Empresa como transporte.dominio.Empresa en todo el archivo, o bien utilizar la sentencia import junto con el nombre de la clase Empresa.
  • 61. Sentencia import  Las sentencias import deben preceder a cualquier declaración de clase del archivo.  En el ejemplo siguiente se muestra un fragmento de archivo donde se utiliza la sentencia import. package transporte.informes; import transporte.dominio.*; import java.util.List; import java.io.*; public class InformeCapacidadVehiculo { private Empresa empresaParaInforme; ... }
  • 62. Sentencia import  Cuando se declara un paquete, no es necesario importar el paquete en sí, ni ninguno de los elementos que contiene. Recuerde que la sentencia import se utiliza para poner las clases de otros paquetes a disposición de la clase actual.  import indica la clase a la que se quiere acceder. Por ejemplo, si sólo quiere incluir la clase Writer (del paquete java.io) en el espacio de nombres actual, utilizará: import java.io.Writer;  Si quiere acceso a todas las clases del paquete, utilice el asterisco “*”. Por ejemplo, para acceder a todas las clases del paquete java.io, escriba: import java.io.*;
  • 63. Sentencia import  La sentencia import permite utilizar los nombres de clase en un formato abreviado dentro del código fuente, eso es todo. Este tipo de sentencias no hacen que el compilador cargue ningún dato adicional en la memoria de trabajo. En este sentido, import se diferencia bastante de la sentencia #include de C o C++. La sentencia import, con o sin carácter comodín (*), no tiene ningún efecto en el archivo de clase de salida, ni tampoco en el rendimiento del programa durante la ejecución.  Asimismo, es improbable que su uso provoque diferencias de rendimiento durante la compilación.
  • 64. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 65. Disposición de los directorios y los paquetes  Los paquetes se almacenan en un árbol de directorios cuyas ramas son los nombres de los paquetes. Por ejemplo, el archivo Empresa.class se encontrará en la estructura de directorios que aparece en la Figura.
  • 66. Disposición de los directorios y los paquetes  Desarrollo o Es habitual tener que trabajar en varios proyectos de desarrollo al mismo tiempo. Existen muchas formas de organizar los archivos de desarrollo. En esta sección se describe una de ellas. o En la Figura anterior puede verse un ejemplo de jerarquía de directorios creada para un proyecto de desarrollo. El aspecto fundamental de esta jerarquía es que los archivos fuente de cada proyecto están separados de los archivos compilados (.class).
  • 67. Disposición de los directorios y los paquetes  Desarrollo
  • 68. Disposición de los directorios y los paquetes  Compilación con la opción -d o Normalmente, el compilador de Java sitúa los archivos de clases en el mismo directorio que los archivos fuente. Es posible enviar los archivos de clases a otro directorio utilizando la opción -d del comando javac. La forma más sencilla de compilar los archivos de los paquetes es trabajar en el directorio situado un nivel por encima del comienzo del paquete (en este ejemplo, el directorio src). o Para compilar todos los archivos del paquete transporte.dominio de forma que todas las clases compiladas vayan al directorio de paquete correcto dentro de TransporteProy/class/, escriba lo siguiente: cd ProyectosJava/TransporteProy/src javac –d ../classes transporte/dominio/*.java
  • 69. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 70. Implementación  Implementación o Es posible implementar una aplicación en una máquina cliente sin modificar la variable de entorno CLASSPATH del usuario. Normalmente, la mejor forma de hacerlo es crear un archivo Java ejecutable (JAR). Para crear este archivo, debe crear un archivo temporal donde se indique el nombre de la clase que contiene el método main necesario para la ejecución, por ejemplo: Main-Class: mipaquete.MiClase
  • 71. Implementación  Implementación o A continuación, cree el archivo JAR de la forma habitual, aunque deberá agregar una opción para que el contenido del archivo temporal se copie en el archivo META-INF/ MANIFEST.MF. Para ello, utilice la opción “m”, como en este ejemplo: jar cmf tempfile MiPrograma.jar
  • 72. Implementación  Implementación o Por último, el programa puede ejecutarse simplemente con un comando como éste: java -jar /ruta/al/archivo/MiPrograma.jar o En algunas plataformas, basta hacer doble clic en el icono de un archivo JAR ejecutable para que se inicie el programa correspondiente.
  • 73. Implementación  Implementación de las bibliotecas o Algunas veces es necesario implementar el código de las bibliotecas en un archivo JAR. En tales casos, es posible copiar el archivo JAR en el subdirectorio ext del directorio lib situado bajo el directorio principal del JRE. Actúe con precaución al hacerlo porque, si implementa las clases de esta forma, normalmente reciben privilegios de seguridad completos. o Esto puede ocasionar problemas durante la ejecución del programa en el caso de que existan conflictos de nombres con otras clases del núcleo del JDK u otras clases que se hayan instalado de esa misma forma.
  • 74. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 75. Actividad 2: Programación orientada a objetos 9. Organización de los archivos fuentes 10. Paquetes de Software 11. Sentencia package 12. Sentencia import 13. Disposición de los directorios y los paquetes 14. Implementación 15. Resumen de la terminología 16. Uso de la documentación sobre el API de Java
  • 76. Uso de la documentación sobre el API de Java  Existen diferentes archivos en formato HTML que sirven de documentación sobre el API suministrado. La organización de estos documentos es jerárquica, de modo que la página inicial muestra la lista de todos los paquetes en forma de hipervínculos. Cuando seleccione el vínculo de un determinado paquete, aparecerá la lista de todas las clases que contiene ese paquete. Si selecciona el vínculo de una clase, se abrirá una página con información sobre esa clase. En la Figura se muestra una de las clases.
  • 77. Uso de la documentación sobre el API de Java
  • 78. Uso de la documentación sobre el API de Java  Los documentos de las clases contienen las secciones siguientes: o La jerarquía de la clase o Una descripción de la clase y su propósito o La lista de atributos o La lista de constructores o La lista de métodos o Una lista detallada de atributos con sus descripciones o Una lista detallada de constructores con sus descripciones y las listas de parámetros formales o Una lista detallada de métodos con sus descripciones y las listas de parámetros formales
  • 79. TAREA  Investiga el concepto de las siguientes palabras en 03 líneas y lo presentas en PowerPoint oClase: oObjeto: oAtributo: oMétodo: oConstructor: oPaquete: