1.
1.1
Diagrama de clase:
Representa la estructura esttica de las clases, interfaces y
relaciones en un modelo de objeto
Diagrama de casos de uso:
Representan las funciones de un sistema desde una perspectiva de
usuarios.
Diagrama de objetos:
Ilustran objetos y enlaces.
Diagrama de colaboracin:
Ilustran interacciones (en otras palabras, mensajes) entre objetos
usando una representacin espacial.
Diagramas de secuencia:
Enfocado en la cronologa de las interacciones entre objetos.
Diagrama de transicin de estado:
Expresan los comportamientos de una clase en trminos del estado
de los objetos.
Diagrama de actividad:
Especifican el comportamiento de una operacin (un mtodo) como
un conjunto de acciones.
Diagrama de componentes:
Muestran los componentes fsicos de un sistema de software.
Diagrama de despliegue:
Muestran los despliegues fsicos de componentes en piezas
determinadas de software.
1.2
2.
PROGRAMACIN ORIENTADA A
OBJETOS
2.1 PILARES
La POO se basa en 4 pilares los cuales detallamos a continuacin.
A. Encapsulacin
Tcnica utilizada para ocultar las propiedades y el comportamiento
de un objeto con el fin de restringir el acceso directo a sus atributos
y al detalle de la implementacin de sus mtodos. Esta restriccin
evita que dicho objeto sea manipulado por operaciones distintas a
las definidas.
Todo esto permite la consistencia en la informacin, el aumento de
la cohesin y que el cliente pueda hacer uso de dicho objeto el cual
le interesar saber las funciones que realiza mas no el cmo est
implementada determinada funcionalidad.
Existen diferentes tipos de restricciones pero tener en cuenta la
siguiente distincin:
B. Abstraccin
Se refiere al acto de concentrar las caractersticas y
comportamientos necesarios para la correcta representacin del
objeto dentro del sistema.
C. Polimorfismo
Es la capacidad de tener mtodos con el mismo nombre, con
comportamientos diferentes, conocido como la sobre-escritura de
mtodos y la sobrecarga de operadores.
El trmino polimorfismo significa que hay un nombre (variable,
funcin o clase) y muchos significados diferentes (distintas
definiciones).
Formas de polimorfismo:
Polimorfismo de asignacin (variables polimorfas)
Ms informacin
Revisar los videos 9 y 10 de Mdulo 3, Leccin 1 de los videos de
Java y POO de Global Mentoring.
D. Herencia
Refiere al mecanismo de definir una clase a partir de la definicin
de otra ya existente. Con esto se consigue que una clase herede
todos los atributos y mtodos de sus ancestros.
Hay dos tipos de herencia: Herencia Simple y Herencia Mltiple.
Java slo permite herencia simple la cual refiere a que se puede
definir nuevas clases a partir solo de una clase inicial. Es decir no
est permitido que una clase herede de varias clases padre.
Extends es la palabra reservada que se usa para indicar que una
clase hereda de otra clase ya sea normal o abstracta.
Tambin debemos recordar que las 2 razones ms importantes para
el uso de la herencia son:
Reutilizacin de cdigo
Uso del polimorfismo
CLASE
Una clase es la definicin de una estructura la cual puede
contener propiedades y mtodos (o llamados tambin atributos y
operaciones respectivamente). Esta estructura definida es la que
tendr posteriormente un objeto creado a partir de esta clase.
Fsicamente una clase es un archivo con nombre y extensin
(.java). Dentro de este archivo podemos implementar: Mtodos
miembros y Datos miembros (atributos) que pueden ser de tipo
primitivos o referencias. Un archivo .java al compilar pasa a tener
una extensin .class.
OBJETO
Un objeto es la representacin materializada de la clase. Esta
materializacin se almacena en la memoria del ordenador.
La clase es la definicin general y el objeto es la materializacin
concreta de dicha definicin general.
Ejemplo:
La clase vendra a ser rbol y una instancia podra ser peral
(rbol que produce peras).
El proceso para crear objetos se llama instanciacin y se usa la
palabra new. Ejemplo:
Punto p;
p = new Punto( );
En la primera lnea del ejemplo se declara una variable (p) que es
de tipo Punto. La variable no contiene ningn valor.
En la segunda lnea se crea un objeto de tipo Punto y se devuelve
su referencia (del objeto) la cual es almacenada en la variable p.
Es decir p est almacenando la direccin de memoria del objeto
recin creado.
Es decir, el operador new hace lo siguiente:
1. Reserva espacio en memoria para crear un objeto nuevo.
2. Instancia una clase creando el objeto en la posicin de
memoria que reserv.
3. Devuelve la referencia que apunta al objeto creado.
Esa referencia es la direccin del espacio en memoria que
ocupa el objeto recin creado.
4. Finalmente esa referencia devuelta puede ser almacenada
en una variable.
Utilizar dos veces el operador new con la misma referencia o el
mismo nombre declarado, provoca que haya valores u objetos
que se quedan sin referencia. A eso se le suele llamar basura
digital y por tanto el recolector los elimina.
CONSTRUCTOR
RECOLECCIN DE BASURA
CLASE ABSTRACTA
Una clase abstracta es la definicin de conductas "genricas", es
decir las superclases abstractas definen y pueden implementar
parcialmente la conducta pero gran parte de la clase no est definida
ni implementada.
Recin se concluirn los detalles con subclases especializadas o
clases hijas y recin aqu se terminar o agregar la funcionalidad a
los mtodos abstractos declarados en la superclase abstracta.
Una clase abstracta no se puede instanciar, es decir, no se pueden
crear objetos de una clase abstracta. El objetivo de las clases
abstractas es aplicar herencia lo que finalmente permite la
reutilizacin de cdigo.
Para ms detalle tener en cuenta la siguiente nota:
Hay ocasiones, cuando se desarrolla una jerarqua de clases en
que algn comportamiento est presente en todas ellas pero se
materializa de forma distinta para cada una. Por ejemplo,
pensemos en una estructura de clases para manipular figuras
geomtricas. Podramos pensar en tener una clase genrica, que
podra llamarse FiguraGeometrica y una serie de clases que
extienden a la anterior que podran ser Crculo, Polgono, etc.
Podra haber un mtodo dibujar dado que sobre todas las figuras
puede llevarse a cabo esta accin, pero las operaciones
concretas para llevarla a cabo dependen del tipo de figura en
concreto (de su clase). Por otra parte la accin dibujar no tiene
sentido para la clase genrica FiguraGeometrica, porque esta
clase representa una abstraccin del conjunto de figuras
posibles.
Para resolver esta problemtica Java proporciona las clases y
mtodos abstractos. Un mtodo abstracto es un mtodo
declarado en una clase para el cual esa clase no proporciona la
INTERFACES
Las interfaces son un tipo de clase especial es decir una interfaz es
una clase puramente abstracta.
En una interfaz se indican y definen variables y mtodos pero estos
no se implementan es decir se indica el que pero no el cmo, sus
mtodos estn vacos no hacen nada. Esto es con el objetivo de
obligar a otros a implementar los mtodos de la interface pero
sujetndose a cumplir con sus cada una de sus firmas. Con esto se
establece un protocolo entre clases.
Si esta interfaz contiene datos miembros, estos son siempre static
final porque una interfaz nunca puede ser instanciada (no tiene
constructor), de tal modo para acceder a alguno de sus datos
miembros basta con colocar el nombre de la interfaz seguido del
punto y el nombre del dato miembro (o el atributo). Si en sus datos
miembros no se especifica static final, por defecto el compilador
asume que as son.
Para indicar que una clase implementa una o ms interfaces, se usa
la palabra implements y ya con eso el compilador se encarga de
verificar que la clase actual declare e implemente todos los mtodos
declarados en la interfaz.
Con el uso de interfaces se puede "simular" la herencia mltiple que
Java no soporta.
La notacin que indica que se trata de una interfaz es la siguiente:
<< interface >>
A continuacin tenemos una clase simpleClass heredando de una
sencilla interfaz llamada simpleInterface.
EN RESMEN
Visto los conceptos de interfaces, clases abstractas y clases
concretas, vemos que tenemos 3 niveles de abstraccin:
1. Primero las interfaces --> 100% abstractas
2. Segundo las clases abstractas --> no se sabe, depende como lo
decida el programador.
3. Tercero las clases concretas --> 100 % concretas.
Mayor informacin:
http://codejavu.blogspot.com/2013/05/interfaces-en-java.html
2.3 PROGRAMACIN
La experiencia demuestra que la mejor manera de desarrollar y
mantener un programa extenso es construirlo a partir de pequeas
piezas es decir aplicar el concepto de divide y vencers.
MODIFICADORES DE ACCESO
a. public
b. private
Es el nivel de acceso ms restringido.
Solo lo pueden ver elementos de la misma clase.
c. protected
Permite a la propia clase y las subclases que accedan a los
miembros. Es decir slo tendrn acceso aquellos que se
encuentren en su rbol de herencia.
d. Vaco o sin modificador:
O tambin llamado modificador de acceso de paquete. Lo podrn
ver otras clases que se encuentren en el mismo paquete.
Ms informacin: http://soft-mas.com/encapsulamiento-en-java/
misin tiene que ver con el control de flujo: se deja de ejecutar cdigo
secuencialmente y se pasa al cdigo que invoc al mtodo. Esta
sentencia tambin est profundamente relacionada con los mtodos,
ya que es la sentencia que le permite devolver al mtodo un valor.
PALABRA static
a. Variables static
Ver ejemplo:
Una variable static es una variable que pertenece a una clase mas
no a una instancia de dicha clase, es decir no hay una copia para
cada objeto creado sino que hay una sola copia que es compartida
por todos los objetos creados de esa clase.
Cuando se crean objetos de una clase que contiene campos o
atributos static, todos los objetos de esa clase comparten una copia
de los atributos static de esa clase. Por lo tanto cuando el objeto
mediante un mtodo set modifica dicho campo static, cambia el
valor para todos las instancias de esa clase.
b. Mtodos static
Algunas veces un mtodo realiza una tarea que no depende del
contenido de ningn objeto. Estos mtodos son llamados mtodos
estticos o mtodos de clase. Es decir este tipo de mtodos se
asocian a la clase ms no al objeto.
Dado que los mtodos estticos tienen sentido a nivel de clase ms
no a nivel de objeto, los mtodos estticos no pueden acceder a
datos que no sean estticos.
Para entender el uso y funcionamiento de un mtodo static por
ejemplo podemos calcular la raz cuadrada de 900 con una llamada
al mtodo static:
Math.sqrt(900)
Y para imprimir en consola escribimos:
System.out.println(Math.sqrt(900));
Y se mostrar en pantalla 30.
Como vemos no hubo necesidad de crear un objeto Math antes de
llamar al mtodo sqrt.
Otro mtodo static que pertenece a Math es pow:
pow(3,2); devuelve 3^2 =9
Constantes PI y E de la clase Math:
PALABRA final
a. final en la declaracin de un atributo
Cualquier atributo o campo declarado con la palabra final es
constante, es decir su valor no puede modificarse despus de
inicializar el campo.
VARIABLES
a. Variables Locales
Dentro del cuerpo de un mtodo se puede declarar ms variables
para usarlas dentro del mtodo.
Estas variables son variables locales y viven slo mientras el
control permanezca dentro del mtodo.