Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo 01 Java
Trabajo 01 Java
Profesor:
Turno:
Noche
Cliclo:
Seccion:05
Alumnos:
-Perez Campusmana Marcos Miguel
-Requena Calla Carlos
-Fernandez de Cordova Casaretto Franco Javier
Indice
Introduccion
1. Diseo de diagramas de clase
2. UML
3. Clases y Objetos
4. Atributos y mtodos
5. Encapsulacion
6. Modificadores de acceso
7. Constructores
8. Jerarquias de Clases
9. Herencia
Bibliografia
Introduccion
QU ES JAVA? CONCEPTO DE PROGRAMACIN ORIENTADA A OBJETOS
Java es un lenguaje de programacin orientado a objetos que se populariz a partir del
lanzamiento de su primera versin comercial de amplia difusin, la JDK 1.0 en 1996. Actualmente
es uno de los lenguajes ms usados para la programacin en todo el mundo.
Los antecedentes de Java habra que buscarlos en los lenguajes de programacin C y C++. El
lenguaje C fue desarrollado en la dcada de los 70 y constituye un lenguaje muy robusto usado
como ncleo del sistema operativo Unix. C no admite la orientacin a objetos y est considerado
un lenguaje poco amigable desde el punto de vista de que su sintaxis, elementos de
programacin que emplea (manejo directo de memoria) y otras cuestiones hacen que sea un
lenguaje difcil de aprender. C++ fue una evolucin de C desarrollada en los aos 80. Introdujo el
diseo orientado a objetos, pero manteniendo la compatibilidad con C. Esto supona que C++
permitiera tanto el uso de la programacin estructurada tradicional como la programacin
orientada a objetos. Adems C++ mantuvo ciertas caractersticas de C como el manejo directo
de la memoria, el uso de variables globales, sentencia goto, etc. que hicieron que la evolucin
fuera parcial.
Como paso final en esta evolucin tenemos Java, un lenguaje que evoluciona a partir de C y C+
+, pero que elimina diversos aspectos de estos lenguajes y se constituye en un lenguaje
definitivamente orientado a objetos. El romper con distintos aspectos de C++ cuyo manejo
inadecuado por parte de muchos programadores daba lugar a problemas en las aplicaciones ha
sido un factor decisivo para convertir a Java en un lenguaje popular y de amplio uso.
Nosotros vamos a quedarnos con el lado prctico de lo que hemos comentado respondiendo esta
pregunta: Es necesario saber C C++ para programar en Java? No, no es necesario.
Aunque puede suponer una ventaja para aquellas personas que tengan conocimientos previos en
estos lenguajes, no recomendamos de forma explcita su estudio en profundidad como paso
previo al aprendizaje de Java.
De modo orientativo, veamos un esquema sobre la evolucin de los lenguajes.
stos son slo algunos ejemplos de todo el potencial que hay detrs de Java como lenguaje para
aprender y obtener muchos beneficios con su uso. Obviamente por determinados trminos
empleados (cliente, cliente/servidor, base de datos, HTML), te dars cuenta de que el lenguaje
Java tiene mucha potencialidad, pero tambin de que su conocimiento a fondo requerira mucho
tiempo. Nosotros en este curso vamos a estudiar nicamente los aspectos ms bsicos de Java.
Clase
Es la unidad bsica que encapsula toda la informacin de un Objeto (un objeto es
una instancia de una clase). A travs de ella podemos modelar el entorno en
estudio (una Casa, un Auto, una Cuenta Corriente, etc.).
En UML, una clase es representada por un rectngulo que posee tres divisiones:
En donde:
o
Ejemplo:
Una Cuenta Corriente que posee como caracterstica:
o
Balance
Depositar
Girar
y Balance
Atributos y Mtodos:
Atributos:
Los atributos o caractersticas de una Clase pueden ser de tres tipos, los
que definen el grado de comunicacin y visibilidad de ellos con el entorno,
estos son:
public (+,
): Indica que el atributo ser visible tanto dentro
como fuera de la clase, es decir, es accesible desde todos lados.
private (-,
): Indica que el atributo slo ser accesible desde
dentro de la clase (slo sus mtodos lo pueden accesar).
protected (#,
): Indica que el atributo no ser accesible desde
fuera de la clase, pero si podr ser accesado por mtodos de la
clase adems de las subclases que se deriven (ver herencia).
Mtodos:
Los mtodos u operaciones de una clase son la forma en como sta
interacta con su entorno, stos pueden tener las caractersticas:
public (+,
): Indica que el mtodo ser visible tanto dentro como
fuera de la clase, es decir, es accesible desde todos lados.
private (-,
): Indica que el mtodo slo ser accesible desde
dentro de la clase (slo otros mtodos de la clase lo pueden
accesar).
protected (#,
): Indica que el mtodo no ser accesible desde
fuera de la clase, pero si podr ser accesado por mtodos de la
clase adems de mtodos de las subclases que se deriven (ver
herencia)
Agregacin:
Para modelar objetos complejos, n bastan los tipos de datos bsicos que
proveen los lenguajes: enteros, reales y secuencias de caracteres. Cuando
se requiere componer objetos que son instancias de clases definidas por el
desarrollador de la aplicacin, tenemos dos posibilidades:
Un Ejemplo es el siguiente:
Cabe destacar que el objeto creado (en este caso la Ventana grfica) no se
almacena dentro del objeto que lo crea (en este caso la Aplicacin).
Casos Particulares:
Clase Abstracta:
Una clase abstracta se denota con el nombre de la clase y de los mtodos con letra
"itlica". Esto indica que la clase definida no puede ser instanciada pues posee mtodos
abstractos (an no han sido definidos, es decir, sin implementacin). La nica forma de
utilizarla es definiendo subclases, que implementan los mtodos abstractos definidos.
Ejemplo:
Supongamos que tenemos un el caso del Diccionario implementado mediante un rbol
binario, en donde cada nodo posee:
Para este caso particular hemos definido un Diccionario para almacenar String y
Personas, las cuales pueden funcionar como llaves o como tem, solo se mostrarn las
relaciones para la implementacin del Diccionario:
Encapsulaciones
Definicin:
El encapsulamiento habla del modo de ocultar como ha sido
implementado el estado, los atributos, de un objeto. Se accede a este estado a
travs de los mtodos pblicos, es decir su interfaz publica. Una buena prctica
es hacer las validaciones correspondientes a los posibles estados del objeto, en
estos mtodos, de modo tal de mantener al objeto en un estado consistente.
Como se puede observar de los diagramas, las variables del objeto se localizan
en el centro o ncleo del objeto. Los mtodos rodean y esconden el ncleo del
objeto de otros objetos en el programa. Al empaquetamiento de las variables
de un objeto con la proteccin de sus mtodos se le llama encapsulamiento.
Tpicamente, el encapsulamiento es utilizado para esconder detalles de la
Mtodos de acceso
Modificadores de acceso
MODIFICADORES DE ACCESO JAVA: PUBLIC, PRIVATE, PROTECTED.
Hasta ahora habamos dicho que una subclase no tiene acceso a los campos de
una
superclase
informacin. Sin
restrictivo.
de
acuerdo
embargo,
con
esto
el
podra
principio
deocultacin
considerarse
como
de
la
demasiado
MODIFICADOR
CLASE
PACKAGE
SUBCLASE
TODOS
public
protected
No
No especificado
No
No
private
No
No
No
Constructor
Un
constructor
es
un mtodo especial
de
una
clase
que
se
llama automticamente siempre que se declara un objeto de esa clase.
La principal misin del constructor es reservar memoria e inicial izar las
variables miembros de la clase.
Ac vemos una clase con el constructor por defecto es decir sin declarar el
constructor.
Este constructor recibe por parmetro un objeto del tipo Persona y asigna los
valores de la persona pasada por parmetros a la nueva instancia de la
persona.
Herencia
La herencia es especfica de la programacin orientada a objetos, donde una
clase nueva se crea a partir de una clase existente. La herencia (a la que
habitualmente se denomina subclases) proviene del hecho de que la subclase
(la nueva clase creada) contiene los atributos y mtodos de la clase primaria.
La principal ventaja de la herencia es la capacidad para definir atributos y
mtodos nuevos para la subclase, que luego se aplican a los atributos y
mtodos heredados. Esta particularidad permite crear una estructura
jerrquica de clases cada vez ms especializada. La gran ventaja es que uno ya
no debe comenzar desde cero cuando desea especializar una clase existente.
Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base
que puede especializarse a voluntad (la compaa que vende estas clases
tiende a proteger los datos miembro usando la encapsulacin).
QU ES LA HERENCIA?
Diferentes tipos de objetos suelen tener una cierta cantidad en comn unos
con otros.
Bicicletas de montaa bicicletas de carretera y bicicletas tndem, por ejemplo,
todos comparten las caractersticas de las bicicletas (velocidad actual, la
cadencia actual de pedal, arte actual) .Sin embargo, cada uno define tambin
las caractersticas adicionales que los hacen diferentes: las bicicletas tndem
tiene dos asientos y dos juegos de manillares, las bicicletas de carrera tienen
gota manillar, algunas bicicletas de montaa tienen una anillo de cadena,
dndoles una menor relacin de desmultiplicacin.
La programacin orientada a objetos permite heredar a las clases de uso
comn del Estado y el comportamiento de otras clases. En este ejemplo,
Bicicleta ahora se convierte en la superclase de la Montaera, Carrera y
Tandem. En el lenguaje de programacin Java, cada clase se le permite tener
una superclase directa, y cada superclase tiene el potencial para un nmero
ilimitado de las subclases:
Bicicleta
Montaera
Carrera
Tandem
class Jefe {
class Secretaria {
int numEmpleado;
int numEmpleado;
String nombre;
String nombre;
int numDepart;
int numDepart;
int salario;
int salario;
Las partes comunes se pueden agrupar en una misma clase, manteniendo las
otras dos clases con las partes no comunes y heredando de esta nueva clase
con la palabra reservada extends.
Relacin es-un
Para saber si la relacin de herencia es correcta, se plantea la pregunta la
subclase es-una superclase? La respuesta debe ser si el Jefe es-un
Empleado? S
Ventajas
Se ahorra cdigo
Permite reutilizar cdigo extendiendo su funcionalidad
Desventajas
Se ahorra cdigo
Se introduce una fuerte dependencia en la clase hija respecto a la clase
padre
Puede dificultar la reutilizacin Un cambio en la clase padre puede tener
efectos imprevistos en las clases hijas
Un objeto de una clase hija puede tener un comportamiento
inconsistente con lo esperado de un objeto de la clase padre
Se establece una jerarqua o clasificacin. Si cambia el criterio de
clasificacin puede acarrear muchas modificaciones
Visibilidad:
EJEMPLO
import javax.*;
import javax.swing.JOptionPane;
public class Mamifero{
private int patas;
Herencia y creacin
De ms restrictivo a menos:
private
Visible slo en la clase donde se define
Sin modificador (por defecto)
Visible a las clases del paquete
protected
Visible a las subclases y al resto de clases del paquete
public
Visible a todas las clases
si
se
RESTRINGIR LA HERENCIA
En Java se puede aplicar el modificador final a un mtodo para indicar que no
puede ser redefinido.
Asimismo, el modificador final es aplicable a una clase indicando que no se
puede heredar de ella.
El modificador final va contra el principio abierto-cerrado?
TIPOS DE HERENCIA
POLIMORFISMO
Otro concepto de la POO es el polimorfismo. Un objeto solamente tiene una
forma (la que se le asigna cuando se construye ese objeto) pero la referencia a
objeto es polimrfica porque puede referirse a objetos de diferentes clases (es
decir, la referencia toma mltiples formas). Para que esto sea posible debe
haber una relacin de herencia entre esas clases. Por ejemplo,
considerando la figura anterior de herencia se tiene que:
Una referencia a un objeto de la clase
referencia a un objeto de la clase A.
Una referencia a un objeto de la clase
referencia a un objeto de la clase A.
Una referencia a un objeto de la clase
referencia a un objeto de la clase A.
Una referencia a un objeto de la clase
referencia a un objeto de la clase D.
Una referencia a un objeto de la clase
referencia a un objeto de la clase A
Formas de polimorfismo:
Polimorfismo
Polimorfismo
Polimorfismo
Polimorfismo
Polimorfismo
Abstraccin
COMPATIBILIDAD DE TIPOS
Un tipo B es compatible con un tipo A slo si la clase B es descendiente
de la clase A.
DepositoEstructurado es compatible con Deposito
Una asignacin polimrfica es vlida slo si el tipo esttico de la parte
izquierda es compatible con el tipo de la parte derecha.
El paso de parmetros es vlido slo si el tipo del parmetro real es
compatible con el tipo del parmetro formal.
JERARQUA DE CLASES
Bibliografa
http://java-white-box.blogspot.pe/2013/12/javaplayer-constructores-enjava-que-es.html
http://puntocomnoesunlenguaje.blogspot.pe/2012/07/normal-0-21-falsefalse-false_103.html
http://aprenderaprogramar.com/index.php?
option=com_content&view=article&id=665:public-private-y-protectedjavatipos-de-modificadores-de-acceso-visibilidad-en-clases-subclasescu00693b&catid=68:curso-aprender-programacion-java-desdecero&Itemid=188
http://mundogeek.net/archivos/2009/03/30/modificadores-en-java/
http://profesores.fi-b.unam.mx/carlos/java/java_basico3_3.html
http://labojava.blogspot.pe/2012/05/introduccionoopencapsulamiento.html
http://aprenderaprogramar.com/index.php?
option=com_content&view=article&id=368:ique-es-java-concepto-deprogramacion-orientada-a-objetos-vs-programacion-estructuradacu00603b&catid=68:curso-aprender-programacion-java-desdecero&Itemid=188
http://jarroba.com/herencia-en-la-programacion-orientada-a-objetos-ejemplo-enjava/
http://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf
http://es.slideshare.net/equipo2/poo-herencia-abstraccion-y-polimorfismo?
next_slideshow=1
http://www2.caminos.upm.es/Departamentos/matematicas/Fdistancia/PIE/java/tem
asj/tjava1.pdf
https://sites.google.com/site/programacionbasicajava/herencia
http://www.arrakis.es/~abelp/ApuntesJava/GestionExcepciones.htm
http://profesores.fi-b.unam.mx/carlos/java/indice.html
http://codejavu.blogspot.pe/2013/05/herencia-en-java.html
http://www.cs.buap.mx/~ygalicia/POO.pdf
https://books.google.com.pe/books?
id=TRUdyfwdaSoC&pg=PA187&lpg=PA187&dq=JERARQUIA+DE+CLASE+EN+J
AVA&source=bl&ots=DpFFoc4cwK&sig=-uaiQFHQAsIf0yxJXCaB266K7U&hl=es&sa=X&ved=0CD0Q6AEwBmoVChMIqe_3v2CyAIVDJUNCh3yZAip#v=onepage&q=JERARQUIA%20DE%20CLASE%20EN
%20JAVA&f=false
https://www.youtube.com/watch?v=3WNu1vuc-aw