jueves, 30 de junio de 2011

Puntos extras - Interfaces

Interfaces

Los métodos abstractos son útiles cuando se quiere que cada implementación de la clase parezca y funcione igual, pero necesita que se cree una nueva clase para utilizar los métodos abstractos.

Los interfaces proporcionan un mecanismo para abstraer los métodos a un nivel superior.


Un interface contiene una colección de métodos que se implementan en otro lugar. Los métodos de una clase son publicstatic y final.

Un interface es parecido a una clase abstracta en Java, pero con las siguientes diferencias:
  • Todo método es abstracto y público sin necesidad de declararlo. Por lo tanto un interface en Java no implementa ninguno de los métodos que declara.
  • Las varibles del interface serán las variables miembro de la clase.
  • Un interface se implementa (implements) no se extiende (extends) por sus subclases.
  • Una clase puede implementar más de un interfaz en Java, pero sólo puede extender una clase. Es lo más parecido que tiene Java a la herencia múltiple, que de clases normales está prohibida.
  • Podemos declarar variables del tipo de clase del interfaz, pero para inicializarlas tendremos que hacerlo de una clase que lo implemente.

Ejemplo:


public interface VideoClip {
         // comienza la reproduccion del video    
         void play();
         // reproduce el clip en un bucle 
         void bucle();
         // detiene la reproduccion
         void stop();
         }


Las clases que quieran utilizar el interface VideoClip utilizarán la palabra implements y proporcionarán el código necesario para implementar los métodos que se han definido para el interface:


class MiClase implements VideoClip {
         void play() {
             <código>
             }
         void bucle() {
             <código>
             }
         void stop() {
             <código>
             }


Al utilizar implements para el interface es como si se hiciese una acción de copiar-y-pegar del código del interface, con lo cual no se hereda nada, solamente se pueden usar los métodos.



Referencias:










Taller - Programa de Ejemplo

Hacer un ejemplo que trate sobre programación orientado a objetos, el ejercicio seria sobre un programa de un Auto.

Clase: Auto
Atributos: velocidad
Metodos: Acelerar, Desacelerar
Objetos: Instancia de una clase

Programa:

  1. import javax.swing.*;  
  2.   
  3. public class Auto  
  4. {  
  5. private int velocidad;  
  6. //contructor  
  7. public Auto( int velInicial )  
  8. {   
  9. velocidad = velInicial;  
  10. }  
  11. //obterner      
  12. public int  getVelocidad ()  
  13. {  
  14. return velocidad;  
  15. }  
  16. //consegir  
  17. public void setVelocidad(int velInicial )  
  18. {  
  19. velocidad = velInicial;  
  20. }  
  21. public void acelerar( int velacelerada )  
  22. {  
  23. velocidad += velacelerada;  
  24. }  
  25. public void desacelerar( int veldesacelerada )  
  26. {  
  27. velocidad -= veldesacelerada;  
  28. }  
  29. public static void main( String args[ ] )  
  30. {  
  31. Auto auto1=new Auto(100);  
  32. System.out.println("La velociada incial es: " + auto1.getVelocidad() );  
  33. auto1.acelerar(50);  
  34. System.out.println("La velociada Aumentada es: " + auto1.getVelocidad() );  
  35. }  
  36. }   

miércoles, 29 de junio de 2011

Clase - Ejercicio

Caso de Uso
Un caso de uso es una descripción de los pasos o las actividades que deberán realizarse para llevar a cabo algún proceso. Los personajes o entidades que participarán en un caso de uso se denominan actores.


Buscaminas
Descripción:  El juego se basa en un tablero con casillas ocultas en cuyo interior se reparten un número de minas. El resto de las casillas guardan información sobre el número de minas vecinas a ellas. El objetivo del juego es descubrir todas las casillas sin minas. Si se abre una casilla con mina hay explosión y se pierde el juego.

Diagrama de caso de uso del Buscaminas:




Ejemplo:

Clase - Ejercicio

Ejercicio 1
  • Identificar clases, atributos y métodos para:
    * iTunes
    * SIASE
    * Angry birds, ibooks o software de su eleccion

SIASE


En la pagina de SIASE, entrar a tu cuenta, esa seria una CLASE, las opciones que aparecen al entrar a tu cuenta, son los ATRIBUTOS que serian: kardex, datos personales, horario, etc... y los METODOS, es solo la informacion que aparece al entrar a cada opcion, no se puede cambiar informacion, porque el sistema no te deja






martes, 28 de junio de 2011

Taller - Selección e instalación de herramientas

Proyecto: Selección e instalación de herramientas


Para Empesar un proyecto, se necesitan las Herramientas necesarias y el Lenguaje de Programacion a Utilisar.



Lenguajes de programacion:
Java
Utilisare el lenguaje Java, ya que tengo algo de conocimiento sobre el lenguaje, aparte, es el mas comun en usar para la programacion orientada a objetos, asi que es lo mas viable que encontre.


Para realizar el proyecto, una de las principales herramientas que instale fue el kit Java Development Kit (JDK) para poder compilar y ejecutar código en java, se puede descargar desde "Terminal" o desde "Centro de Software de Ubuntu".
Instalar JDK  desde Terminal: 
"sudo apt-get install openjdk-6-jdk"



Herramientas: 

Ubuntu
Descargar Ubuntu, se puede Descargar desde la Pagina Principal de Ubuntu.

Después de instalar Ubuntu, descarge e instale las herramientas que utilizaré para programar en el 
Lenguaje "Java".
Para Descargar enUbuntu las Herramientas necesarias se usa en Terminal:

"sudo apt-get install (nombre programa o archivo)"


Emacs 23
Tambien, Instalar Emacs 23, Editor de texto, se puede instalar Emacs desde "Terminal" o desde "Centro de Software de Ubuntu".




MySQL
Instalar "Cliente de Mysql" y "Servidor MySQL" desde "Centro de Software de Ubuntu", para poder trabajar en Base de datos en Java. 

MySQL en la Terminal:
Tambien se puede Instalar MySQL desde "Terminal" o desde "Centro de Software de Ubuntu".

Umbrello


Instalar Umbrello(UML) para hacer Diagramas de Clases sobre el proyecto, se puede Descargar desde "Centro de Software de Uubuntu" o desde la "Terminal".



Referencias:
Instalar Ubuntu
Tutorial Java
Comandos para Ubuntu

Puntos Extras - Casos de sistemas fallidos y Metodología de análisis y diseño

Crisis del Software

El termino "crisis del software" se acuño en 1968, en la primera conferencia por la OTAN sobre el desarrollo de software y con el se visualizaron los problemas que surgían en el desarrollo de sistemas de software. En la misma conferencia se utilizo por primera vez el termino "ingeniería del software".

Síntomas de una crisis del software ....
  • Uno de los principales problemas en el desarrollo de software de hoy, es que muchos proyectos empiezan la programación tan pronto se definen y concentran mucho de su esfuerzo en la escritura de código.
  • Últimamente el desarrollo de software se a echo lento. El estudio de este fenómeno es importante porque la existencia de software científico libre facilita que cualquier laboratorio del mundo puede desarrollar ciencia libre usando este software como herramienta de trabajo. 
  • Algunos síntomas que indican que el software se encuentra en un periodo de crisis son:
    -Baja calidad del software.
    -Tiempo y presupuesto excedido.
    -Confiabilidad cuestionable.
    -Altos Requerimientos de personal para desarrollo y mantenimiento.
 
Factores de influencia sobre la crisis del software...
Para poder llevar el estado del proceso del software como un estado de crisis, los críticos han destacado ciertas características que han permitido esta postura del software respecto a otras etapas de su corta historia. Algunos de esos factores son:

  • Aumento del poder computacional.
  • Reproducción del costo del hardware.
  • Rápida obsolescencia de hardware y software.
  • Incremento en el numero de usuarios de los sistemas de software
  • Personal desarrollando y mantenimiento diferente

Posibles causas de la crisis del software
Hay varias razones que pueden ser propuestas como causa de la crisis. No son mutuamente excluyentes; de echo, es posible que la verdadera causa sea una mezcla de todas ellas.
Sin embargo, todas tienen en común que son causadas por el método de valorar los avances científicos el mecanismo actual de financiación de la actividad científica.
Las causas de la crisis del software fueron vinculadas a la complejidad en general del proceso del software como una profesion.

La crisis se manifestó de diferentes maneras:

  • Proyectos gestionados con un sobre-presupuesto.
  • Proyectos gestionados con sobre tiempo.
  • Software de baja calidad.
  • El software a menudo no satisfacía los requerimientos deseados.
  • Los proyectos fueron inmanejables, con un código difícil de mantener.


Referencias:
www.cs.buap.mx/~mgonzalez/crisis.ppt
http://www.slideshare.net/mario21ic/crisis-del-software



Metodología de análisis y diseño





Análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de softwareque modela un sistema como un grupo de objetos que interactúan entre sí. Este enfoque representa un dominio en términos de conceptos compuestos por verbos y sustantivos, clasificados de acuerdo a su dependencia funcional.
En este método de análisis y diseño se crea un conjunto de modelos utilizando una notación acordada como, por ejemplo, el lenguaje unificado de modelado (UML). ADOO aplica técnicas de modelado de objetos para analizar los requerimientos para un contexto - por ejemplo, un sistema de negocio, un conjunto de módulos de software - y para diseñar una solución para mejorar los procesos involucrados. No está restringido al diseño de programas de computadora, sino que cubre sistemas enteros de distinto tipo. 
Las metodologías de análisis y diseño más modernas son casos de uso guiados a través de requerimientos, diseño, implementación, pruebas, y despliegue.
El lenguaje unificado de modelado se ha vuelto el lenguaje de modelado estándar usado en análisis y diseño orientado a objetos.


Referencias:
http://es.wikipedia.org/wiki/An%C3%A1lisis_y_dise%C3%B1o_orientado_a_objetos

lunes, 27 de junio de 2011

Clase - Descripción de proyecto

Proyecto: Tienda de Abarrotes

Quiero hacer una programa de una Tienda de Abarrotes, tendrá varias opciones, tendrá una interfaz gráfica y usara base de datos.

Mi programa hará lo que un hace Inventario o almacén de una Tienda de Abarrotes, que tenga un menú, con una lista de productos que describa cada producto que haya en la tienda, que muestre un inventario con los productos ya acomodados en su lugar, una opción de ver las ventas que se han echo, y se usaran base de datos, tratar que se pueda implementar en una computadora comun.

Es un proyecto que seleccione de varios que estuve pensando, puede ser un proyecto algo largo, pero no tan difícil.

Si es necesario, que tenga una interfaz gráfica, que sea de fácil manejo para el cliente.

Intentare hacer el proyecto con el lenguaje de Java, es algo complejo de usar, pero es el lenguaje mas viable a lo que haré de proyecto, aparte, lo e usado antes, aunque no mucho, pero pienso que no sera tan difícil de aprender, ya que hay demasiados tutoriales o libros que me hablen sobre ese lenguaje, y podre aprender rápido en poco tiempo si es posible.

El programa lo intentare hacer lo menos complejo posible, para que las personas que no tienen mucho conocimiento con el manejo de la computadora no se les haga tan difícil.

Puede ser un programa que pueda ser útil para personas que busquen algo parecido, y lo puedan usar ya sea en un negocio local.