You are on page 1of 105

PROGRAMACIN

ORIENTADA A OBJETOS
ING. HCTOR DE L A CRUZ
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
LENGUAJE JAVA

La variable de entorno PATH


La variable de entorno PATH en su computadora indica qu
directorios debe buscar la computadora cuando intente localizar
aplicaciones, como aquellas que le permiten compilar y ejecutar
sus aplicaciones en Java (conocidas como javac.exe y java.exe,
respectivamente).
Click derecho en Mi PC y seleccionar Propiedades.
Abrir el cuadro de dilogo Variables de entorno.
Seleccione la cha Opciones avanzadas de la parte superior del
cuadro de dilogo Propiedades del sistema.
Haga clic en el botn Variables de entorno para desplegar el
cuadro de dilogo Variables de entorno
Editar la variable PATH.
Agregar C:\Archivos de programa \Java\jdk1.6.0\bin;
LENGUAJE JAVA

variable de entorno CLASSPATH


Si trata de ejecutar un programa en Java y recibe un mensaje
como:
Exception in thread main java.lang.NoClassDefFoundError: SuClase
entonces su sistema tiene una variable de entorno CLASSPATH
que debe modicarse. Para corregir el error anterior,
siga los pasos para establecer la variable de entorno PATH,
localice la variable CLASSPATH y modique su valor para
que incluya lo siguiente:
.;
al principio de su valor (sin espacios antes o despus de estos
caracteres).
LENGUAJE JAVA

APIs
Colecciones de clases existentes en las bibliotecas de
clases de Java
Fundamentos para conocer el mundo de Java.
El primero es el lenguaje Java en s, de manera que usted
pueda programar sus propias clases;
El segundo son las clases incluidas en las extensas
bibliotecas de clases de Java
LENGUAJE JAVA

Entorno de desarrollo tpico en Java


Fase I: Edicin

Fase II: Compilacin


LENGUAJE JAVA

Entorno de desarrollo tpico en Java


Fase III: Carga
LENGUAJE JAVA

Entorno de desarrollo tpico en Java


Fase IV: Verificacin
LENGUAJE JAVA

Entorno de desarrollo tpico en Java


Fase V: Ejecucin
LENGUAJE JAVA

Ejemplos de programa en Java


LibroCalificaciones.java
PruebaLibroCalificaciones.java
LENGUAJE JAVA

Creacin de un proyecto Java en NetBeans 8.1


LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA

Creacin de una clase en Java en NetBeans 8.1


LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
LENGUAJE JAVA
Creacin de un proyecto Java en NetBeans 8.1
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
CONCEPTOS DE POO

Programacin Orientada a Objetos (POO/OOP)


Bsicamente define una serie de conceptos y tcnicas de
programacin para representar acciones o cosas de la vida
real basada en objetos,
a diferencia de otras formas de programacin como por
ejemplo la estructurada, con la POO trabajamos de manera
distinta vinculando diferentes conceptos tales como clases,
objetos, mtodos, propiedades, estados, herencia,
encapsulacin entre otros, generando cada vez
interrelaciones en nuestro desarrollo en pro del
funcionamiento del sistema principal, definiendo el
programa como un conjunto de estos objetos relacionados
entre si
CONCEPTOS DE POO
CONCEPTOS DE POO

Abstraccin
Denota las caractersticas esenciales de un objeto que lo
distingue de los dems
Visin simplificada de cierta parte de la realidad.
La eleccin de los detalles esenciales es subjetiva.
La clave de la POO est en abstraer los mtodos y los
datos comunes a un conjunto de objetos y almacenarlos
en una clase.
Hay que centrarse en lo que es y lo que hace un objeto,
antes de decidir como debera ser implementado
CONCEPTOS DE POO

Modularidad
Fragmentar un programa en
componentes individuales reduce
su complejidad en algn grado.
Propiedad que tiene un sistema
que ha sido descompuesto en un
conjunto de mdulos coherentes y
dbilmente acoplados.
Caractersticas de la
modularidad
Encapsulamiento
Ocultamiento de la informacin
CONCEPTOS DE POO

Encapsulacin y
ocultamiento
Consiste en separar el aspecto
externo del objeto, al cual
pueden acceder otros objetos, del
aspecto interno del mismo, que
es inaccesible para los dems.
Permite tratar a un objeto como
una caja negra.
Permite que se modifique la
implementacin interna de un
objeto sin afectar a los clientes
que lo utilizan.
CONCEPTOS DE POO

Polimorfismo
El polimorfismo est muy ligado a la herencia.
Una misma operacin puede ser ejecutada en forma
diferente por objetos de distintas clases. Ejemplo:
A una figura se le puede calcular el rea
Un circulo es una figura
Un rectngulo es una figura
A ambos se les puede calcular el rea pero cada uno tiene una
forma distinta de calcularlo
CONCEPTOS DE POO

Qu es herencia?
Diferentes tipos de objetos a menudo tienen una cierta
cantidad de caractersticas en comn entre s.
Bicicletas de montaa, bicicletas de carretera y bicicletas
tndem, por ejemplo, todos comparten las caractersticas de
las bicicletas (velocidad actual, frecuencia de pedaleo
actual, la marcha actual).
Sin embargo, cada uno tambin define caractersticas
adicionales que las hacen diferentes:
las bicicletas tndem tienen dos asientos y dos conjuntos de
manillar;
bicicletas de carretera tienen manillar de cada;
algunas bicicletas de montaa tienen un anillo de cadena
adicional, dndoles una relacin de transmisin ms baja.
CONCEPTOS DE POO

Qu es herencia?
La programacin orientada a objetos permite que las
clases hereden estado y comportamiento de uso comn
de otras clases.
En este ejemplo, la bicicleta se convierte ahora en la
superclase de la bicicleta de montaa, bicicleta de
carretera, y la bicicleta tndem.
En el lenguaje de programacin Java, a cada clase se le
permite tener una superclase directa, y cada superclase
tiene el potencial de un nmero ilimitado de subclases
CONCEPTOS DE POO

Tipos de Herencia
Simple:
Clase A heredada de otra Clase B
Mltiple:
Clase A hereda de varias otras clases C, D, etc.
CONCEPTOS DE POO

Overloading o Sobrecarga
Permite definir varios mtodos con el mismo nombre,
pero con diferentes parmetros (cantidad y/o tipo).
Ejemplo:

public void setFecha(int anio, int dia, int mes);


public void setFecha(String strFecha);
public void setFecha(float segundos);
CONCEPTOS DE POO

Qu es un objeto?
Las bicicletas tambin tienen estado (marcha actual,
rapidez de pedaleo actual, la velocidad actual) y el
comportamiento (el cambio de marchas, el cambio de la
rapidez de pedaleo, la aplicacin de los frenos).
Identificar el estado y el comportamiento de los objetos
del mundo real es una gran manera de empezar a pensar
en trminos de programacin orientada a objetos.
Tome un minuto en este momento para
observar los objetos del mundo real que se
encuentran en su rea inmediata. Para cada
objeto que se ve, hgase dos preguntas:
"Qu estados posibles puede estar en este
objeto?" y "Qu posible comportamiento
puede llevar a cabo este objeto?".
CONCEPTOS DE POO

Qu es una clase?
En el mundo real, a menudo encontrar muchos objetos
individuales todos del mismo tipo.
Puede haber miles de otras bicicletas en existencia, todas de
la misma marca y modelo. Cada bicicleta se construy a
partir del mismo conjunto de planos y, por tanto, contiene los
mismos componentes.
En trminos de orientacin a objetos, se dice que la
bicicleta es una instancia de la clase de objetos
conocidos como bicicletas.
Una clase es el modelo a partir del cual
se crean los objetos individuales.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
DECLARACIN DE CLASES EN JAVA

Clase
Una clase es un prototipo o plantilla que define las
variables y los mtodos comunes a un cierto tipo de
objetos.
Son los moldes de los cuales se pueden crear mltiples
objetos del mismo tipo.
La clase define las variables y mtodos comunes a los
objetos del mismo tipo pero despus, cada objeto tendr
sus propios valores para esas variables.
DECLARACIN DE CLASES EN JAVA

Cuando se define una clase, se declara su forma


y naturaleza exacta. Esto se hace especificando
los datos que contiene la clase (campos) y
el cdigo que opera sobre ellos (mtodos).
Aunque las clases sencillas pueden contener slo
cdigo o datos, la mayora de las clases reales
contienen ambos.
DECLARACIN DE CLASES EN JAVA

La declaracin de clases en Java adopta la forma


siguiente:
<modificador>* class
<nombre_clase> {
<declaracin_atributo>*
<declaracin_constructor>*
<declaracin_mtodo>*
}

<nombre_clase> es el nombre de la clase que se va a


declarar y puede ser cualquier identificador admitido.
Por convencin, el primer carcter debe ser una letra
mayscula.
DECLARACIN DE CLASES EN JAVA

Hay varias palabras clave que pueden usarse como


<modificador>, y pueden tomar los siguientes valores:
public: Pblicos, son aquellos que pueden ser accedidos
desde fuera de la clase.
private: Privados, son aquellos cuyo uso es interno a la
clase.
protected : Protegidos, son usados nicamente por la
misma clase y sus derivados.
Como regla emprica, las variables de instancia deben
declararse como private y los mtodos, como public.
El cuerpo de la clase declara el conjunto de campos,
constructores y mtodos asociados a la clase.
DECLARACIN DE CLASES EN JAVA

Ejemplo de declaracin de una clase

public class Vehiculo {


private double cargaMax;

public void setCargaMax(double valor) {


cargaMax = valor;
}
}
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
DECLARACIN DE CAMPOS

La declaracin de campos de los objetos se realiza de


la forma siguiente:

<modificador>* <tipo> <nombre> [=


<valor_inicial>];

<nombre> es el nombre del campo que se va a declarar y


puede ser cualquier identificador admitido.
Es posible usar varios valores como <modificador>, pero, por
ahora, utilice slo public o private. La clave private indica que
slo pueden acceder al campo todos los mtodos
pertenecientes a esta clase.
El <tipo> de atributo puede ser cualquier tipo primitivo (int,
float, etc.) o cualquier clase.
DECLARACIN DE CAMPOS

En el lenguaje de programacin Java, los trminos


"campo" y "variable" son ambos usados
indistintamente para referirse al mismo concepto.
Ejemplo:
public class Ejemplo {
private int x;
private float y = 10000.0F;
private String name = "Hotel
Medioda";
}
DECLARACIN DE CAMPOS

Tipos de variables:
Las variables de instancia (campos no estticos)
Tcnicamente hablando, los objetos almacenan sus estados
individuales en "campos no estticos", que son, campos
declarados sin la palabra clave static.
Los campos no estticos son tambin conocidos como
variables de instancia debido a que sus valores son nicos
para cada instancia de una clase (a cada objeto, en otras
palabras).
DECLARACIN DE CAMPOS

Tipos de variables:
Las variables de clase (campos static)
Una variable de clase es cualquier campo declarada con el
modificador static;
esto le dice al compilador que hay exactamente una copia de
esta variable en existencia, sin importar cuntas veces se ha
creado una instancia de la clase.
DECLARACIN DE CAMPOS

Tipos de variables:
Las variables locales
similares a cmo un objeto almacena su estado en los
campos, un mtodo a menudo almacenar su estado temporal
de las variables locales.
La sintaxis para declarar una variable local es similar a la que
se declara un campo (por ejemplo, int cuenta = 0;).
No hay una palabra clave especial que designa una variable
como local; que la determinacin proviene en su totalidad de
la ubicacin en la que se declara la variable - que est entre
las llaves de apertura y cierre de un mtodo.
Como tal, las variables locales son accesibles solamente a los
mtodos en los que se declaran; que no son accesibles desde
el resto de la clase.
DECLARACIN DE CAMPOS

Tipos de variables:
Parmetros
Recordemos que la firma para el mtodo principal es
public static void main (String [] args)
Aqu, la variable args es el parmetro para este mtodo.
Lo importante para recordar es que los parmetros siempre
se clasifican como "variables" y no "campos".
Esto se aplica a otras construcciones de parmetros aceptar
as (como constructores y gestores de excepciones) que
veremos despus en el tutorial.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
DECLARACIN DE MTODOS

Para definir los mtodos, el lenguaje Java utiliza


un enfoque similar al de otros lenguajes, en
concreto C y C++. La declaracin adopta el
siguiente formato bsico:
<modificador>* <tipo retorno> <nombre>
(<argumento>*){
}

El <nombre> puede ser cualquier identificador


admitido, con algunas restricciones derivadas de
los nombres que ya se estn utilizando.
DECLARACIN DE MTODOS

El segmento <modificador> es opcional y puede


tener numerosos valores, entre ellos, public,
protected y private.
public indica que es posible llamar a este mtodo desde
otro cdigo.
private indica que slo pueden acceder a l otros
mtodos de la clase.
protected indica que pueden acceder nicamente por
la misma clase y sus derivados.
DECLARACIN DE MTODOS

<tipo_retorno> indica el tipo de valor que devuelve el mtodo.


Si el mtodo no devuelve ningn valor, debe declararse void.
La tecnologa Java es estricta en lo que se refiere a los valores
de retorno.
Si la declaracin indica que el mtodo debe devolver, por ejemplo, un
entero (int), el mtodo debe devolver un entero desde todas las rutas
de retorno posibles y slo acepta llamadas en contextos que esperen el
tipo int.
Para devolver un valor dentro de un mtodo debe utilizarse la sentencia
return.
La lista <argumentos> permite pasar argumentos al mtodo.
Los elementos de la lista deben ir separados por comas y cada
elemento debe constar de un tipo y un identificador.
DECLARACIN DE MTODOS

Ejemplo

public class Perro {


private int peso;
public int getPeso() {
return peso; }
public void setPeso(int newPeso) {
if ( newPeso > 0 ) {
peso = newPeso;
}
}
}
DECLARACIN DE MTODOS

El cdigo muestra dos mtodos para la clase


Perro.
El mtodo getPeso devuelve el valor del atributo peso y
no utiliza parmetros. Los valores de los mtodos se
devuelven utilizando la sentencia return.
El mtodo setPeso modifica el valor de peso con el
parmetro newPeso. No devuelve ningn valor. Este
mtodo utiliza una sentencia condicional para impedir
que el cdigo cliente defina el peso de Perro con un
nmero negativo o con cero.
DECLARACIN DE MTODOS

Los mtodos establecer y obtener (setter &


getter)
Los campos private de una clase pueden manipularse
slo mediante los mtodos de esa clase.
Por lo tanto, un cliente de un objeto (es decir, cualquier
clase que llame a los mtodos del objeto) llama a los
mtodos public de la clase para manipular los campos
private de un objeto de esa clase.
DECLARACIN DE MTODOS

Los mtodos establecer y obtener (setter &


getter)
A menudo, las clases proporcionan mtodos public para
permitir a los clientes de la clase establecer (es decir,
asignar valores a) u obtener (es decir, obtener los valores
de) variables de instancia private.
Los nombres de estos mtodos no necesitan empezar
con establecer u obtener, pero esta convencin de
nomenclatura es muy recomendada en Java, y es
requerida para ciertos componentes de software
especiales de Java, conocidos como JavaBeans, que
pueden simplicar la programacin en muchos entornos
de desarrollo integrados (IDEs).
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
ACCESO A LOS MIEMBROS DEL OBJETO
public class PruebaPerro {
public static void main(String[] args) {

Perro d = new Perro();


System.out.println("El peso del perro d es +
d.getPeso());
Ejemplo

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
ACCESO A LOS MIEMBROS DEL OBJETO

En el ejemplo siguiente ver la siguiente lnea de


cdigo en el mtodo PruebaPerro.main:
d.setPeso(42);
Esta lnea indica al objeto d (en realidad una
variable, d, que contiene una referencia a un
objeto del tipo Perro) que ejecute su mtodo
setPeso. Esto se denomina notacin de punto.
ACCESO A LOS MIEMBROS DEL OBJETO

El operador punto (.) permite acceder a los


atributos y mtodos que componen los miembros
no privados de una clase.
Dentro de la definicin de los mtodos, no es
necesario usar la notacin de punto para acceder
a los miembros locales. Por ejemplo, el mtodo
setPeso de la clase Perro no utiliza la notacin de
punto para acceder al atributo peso.
ACCESO A LOS MIEMBROS DEL OBJETO

En el Cdigo se muestra el comportamiento de


los mtodos de Perro. Cuando se crea el objeto
Perro, se inicializa la variable de la instancia peso
con el valor 0. Por tanto, el mtodo getPeso
devuelve 0.
Asimismo en este cdigo se establece el peso en
42, que es un argumento vlido, y el mtodo
setPeso define el valor de la variable peso.
No obstante, no se admite el valor -42 como
peso, as que el mtodo setPeso no modifica la
variable peso.
ACCESO A LOS MIEMBROS DEL OBJETO

The Garbage Collector


Some object-oriented languages require that you keep
track of all the objects you create and that you explicitly
destroy them when they are no longer needed.
Managing memory explicitly is tedious and error-prone.
The Java platform allows you to create as many objects
as you want (limited, of course, by what your system can
handle), and you don't have to worry about destroying
them.
The Java runtime environment deletes objects when it
determines that they are no longer being used. This
process is calledgarbage collection.
ACCESO A LOS MIEMBROS DEL OBJETO

The Garbage Collector


An object is eligible for garbage collection when there are
no more references to that object.
References that are held in a variable are usually dropped
when the variable goes out of scope.
Or, you can explicitly drop an object reference by setting
the variable to the special valuenull.
ACCESO A LOS MIEMBROS DEL OBJETO

The Garbage Collector


Remember that a program can have multiple references
to the same object; all references to an object must be
dropped before the object is eligible for garbage
collection.
The Java runtime environment has a garbage collector
that periodically frees the memory used by objects that
are no longer referenced. The garbage collector does its
job automatically when it determines that the time is
right.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
FORMA DE OCULTAR LA INFORMACIN

Imagine que tiene una clase llamada MyDate que


incluye los atributos siguientes: day, month y year.
La figura contiene un diagrama de una posible
implementacin de la clase MyDate.
FORMA DE OCULTAR LA INFORMACIN

Una implementacin 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 INFORMACIN

Por tanto, el cdigo cliente accede directamente a


estos atributos y genera errores, por ejemplo (d
se refiere al objeto MyDate):
d.day = 32;
// da no vlido

d.month = 2; d.day = 30;


// posible pero incorrecto, 30 de febrero

d.day = d.day + 1;
// no hay comprobacin de comportamiento cclico
// (wraparound)
FORMA DE OCULTAR LA INFORMACIN

Para resolver el problema, oculte los datos de


atributos hacindolos privados y proporcione
otros mtodos de acceso como getXyz()
(getters), y setXyz() (setters).
En la siguiente Figura se ilustra otro diagrama
UML de la clase MyDate donde se ocultan las
variables de instancia detrs de los mtodos de
acceso get y set.
FORMA DE OCULTAR LA INFORMACIN

Forma de ocultar
las variables de
instancia de la
clase MyDate
FORMA DE OCULTAR LA INFORMACIN

Estos mtodos 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);
// da no vlido, devuelve false

d.setMonth(2); d.setDay(30);
// posible pero incorrecto, setDay devuelve false

d.setDay(d.getDay() + 1);
// esta lnea devuelve false si se produce
// comportamiento cclico
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
ENCAPSULACIN

La encapsulacin es la forma de ocultar ciertos


elementos de la implementacin de una clase y,
al mismo tiempo, proporcionar una interfaz
pblica para el software cliente. Es una forma
ms de ocultar los datos, ya que la informacin
de los atributos es un elemento significativo de la
implementacin de las clases.
ENCAPSULACIN

Por ejemplo, el programador de la clase MyDate


podra optar por volver a implementar la
representacin interna de una fecha como el
nmero de das transcurridos desde el comienzo
de una determinada poca. Esto podra facilitar
las comparaciones de fechas y el clculo de los
intervalos entre fechas. Como el programador ha
encapsulado los atributos dentro de una interfaz
pblica, puede realizar este cambio sin que
afecte al cdigo cliente.
ENCAPSULACIN

La encapsulacin aporta mayor flexibilidad para


representar los datos.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
DECLARACIN DE CONSTRUCTORES

Un constructor es un conjunto de instrucciones


diseadas para inicializar una instancia. Los
parmetros del constructor se pasan de la misma
forma que los de los mtodos. La declaracin
bsica tiene el siguiente formato:

[<modificador>] <nombre_clase> ( <argumentos>* ) {


<sentencia>*
}
DECLARACIN DE CONSTRUCTORES

El nombre del constructor siempre debe ser


idntico al de la clase. Si se utilizan, los nicos
modificadores vlidos (<modificador>) para los
constructores son public, protected y private.
La lista de <argumentos> es la misma que en el
caso de las declaraciones de mtodos.
DECLARACIN DE CONSTRUCTORES

Los constructores no son mtodos. No tienen


valores de retorno ni se heredan.

public class Perro {


private int peso;

public Perro() {
peso = 42;
}
}
DECLARACIN DE CONSTRUCTORES

public class Perro {


private int peso;

public Perro() {
peso = 42;
}
}

La clase Perro tiene una sola variable de


instancia peso. El constructor(sin parmetros)
inicializa peso con el valor 42. Tambin es posible
declarar constructores con parmetros.
DECLARACIN DE CONSTRUCTORES

Constructor Predeterminado
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 vaco.
El constructor predeterminado permite crear instancias
de los objetos, por ejemplo new Xyz(). sin parmetros-
DECLARACIN DE CONSTRUCTORES

Constructor Predeterminado
Si se agrega la declaracin de un constructor a una clase
que no tena ningn constructor explcito, 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() generarn errores de compilacin.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
ORGANIZACIN DE LOS ARCHIVOS
FUENTES
Los archivos fuente de Java tienen el siguiente
formato:

[<declaracin_paquete>]
<declaracin_importacin>*
<declaracin_clase>+

El signo ms (+) indica uno o ms. Para que


pueda utilizarse, un archivo fuente debe contener
al menos la definicin de una clase.
ORGANIZACIN DE LOS ARCHIVOS
FUENTES
El orden de estos elementos es importante. Es decir, las
sentencias de importacin deben preceder a las
declaraciones de clases y, si se utiliza una declaracin de
paquetes, sta debe preceder a la de clases e importaciones.
El nombre del archivo fuente debe ser el mismo que el de la
declaracin de clase pblica de ese archivo.
Por otra parte, el archivo fuente puede incluir varias
declaraciones de clases, pero slo una puede declararse
como pblica (public). Si un archivo fuente no contiene
ninguna declaracin de clase pblica, entonces no existen
restricciones en cuanto al nombre de archivo. No obstante, es
recomendable tener un archivo fuente por cada declaracin
de clase y el nombre de dicho archivo debe ser idntico al de
la clase.
ORGANIZACIN DE LOS ARCHIVOS
FUENTES
Por ejemplo, el archivo InformeCapacidadVehiculo.java
debera 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) {
// cdigo para generar el informe
}
}
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
PAQUETES DE SOFTWARE

La mayora de los sistemas de software son de


grandes dimensiones. Es habitual agrupar las
clases en paquetes para facilitar la
administracin del sistema.
PAQUETES DE SOFTWARE

UML incluye el concepto de paquete en su


lenguaje de modelado. Los paquetes pueden
contener clases u otros paquetes que forman una
jerarqua. 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 lgico. No existe una forma
correcta o errnea de hacerlo, pero una tcnica
habitual es agrupar las clases por similitud
semntica.
PAQUETES DE SOFTWARE

Por ejemplo, un sistema de software de transporte


debera contener:
una serie de objetos de dominio (como la empresa, los
vehculos, las cajas, los destinos, etc.),
un conjunto de informes y
un grupo de paneles de la interfaz grfica que sirvan para crear
la aplicacin de introduccin 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 funcin de las
necesidades.
Los dems paquetes estn incluidos en el paquete de nivel
superior, llamado transporte.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
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>]*;
SENTENCIA PACKAGE

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 declaracin de paquetes, si existe, debe


situarse al comienzo del archivo fuente.
Puede ir precedida de un espacio en blanco y
comentarios, pero nada ms.
Slo se permite una declaracin de paquetes, que
ser la que gobierne todo el archivo fuente.
Si un archivo fuente Java no contiene ninguna
declaracin de paquete, las clases declaradas en
el archivo pertenecern al paquete
predeterminado (sin nombre).
SENTENCIA PACKAGE

Los nombres de paquetes forman una jerarqua y


se separan mediante puntos.
Lo normal es que los elementos de estos nombres
se escriban enteramente en minsculas.
(Sin embargo, el nombre de las clases suele empezar por
una letra mayscula y se escribe en mayscula la
primera letra de cada palabra que se agrega a fin de
diferenciar las distintas palabras dentro del nombre de
clase.)
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
SENTENCIA IMPORT

Esta sentencia tiene la siguiente sintaxis:

import
<nombre_paq>[. <nombre_paq_subordinado>]. <nombre_clase>;

o bien

import <nombre_paq>[. <nombre_paq_subordinado>].*;


SENTENCIA IMPORT

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


declaracin de clase del archivo.

package transporte.informes;

import transporte.dominio.*;
import java.util.List;
import java.io.*;

public class InformeCapacidadVehiculo {


private Empresa empresaParaInforme;
...
}
SENTENCIA IMPORT

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 disposicin de la clase actual.
import indica la clase a la que se quiere acceder. Por
ejemplo, si slo 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 cdigo
fuente, eso es todo. Este tipo de sentencias no
hacen que el compilador cargue ningn 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
carcter comodn (*), no tiene ningn efecto en el
archivo de clase de salida, ni tampoco en el
rendimiento del programa durante la ejecucin.
Asimismo, es improbable que su uso provoque
diferencias de rendimiento durante la compilacin.
PROGRAMACIN ORIENTADA A
OBJETOS

1. Lenguaje Java
2. Conceptos de POO
3. Declaracin de Clases en Java
4. Declaracin de Campos
5. Declaracin de Mtodos
6. Acceso a los miembros del objeto
7. Forma de ocultar la informacin
8. Encapsulacin
9. Declaracin de Constructores
10.Organizacin de los archivos fuentes
11.Paquetes de Software
12.Sentencia package
13.Sentencia import
14.Disposicin de los directorios y los paquetes
DISPOSICIN 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:
DISPOSICIN DE LOS DIRECTORIOS Y
LOS PAQUETES