jueves, 30 de junio de 2011

Puntos Extras(Clase)Interfaces

¿Que es una interfaz?
Una interfaz es una clase completamente abstracta (una clase sin implementación). Por ejemplo:
Si no estuviésemos interesados en conocer la posición de una Figura, podríamos eliminar por completo su implementación y convertir Figura en una interfaz:
public interface Figura
{
public double area ();
}
 
Caracteristicas:
  • En Java las interfaces se declaran con la palabra reservada "interface"  de manera similar a como se declaran las clases abstractas.
  • En la declaracion de una interfaz lo unico que puede aparecer son declaraciones de métodos( su nombre y asignatura, sin su implementacion) y definiciones de constantes simbólicas.
  • Una interfaz no encapsula datos, solo define cuales son los métodos que han de implementar los objetos de aquellas clases que implementan la interfaz. 
  • public class Circulo implements Figura
    {
    private double radio;
    public Circulo (double radio)
    {
    this.radio = radio;
    }
    public double area ()
    {
    return Math.PI*radio*radio;
    }
    }
    public class Cuadrado implements Figura
    {
    private double lado;
    public Cuadrado (double lado)
    {
    this.lado = lado;
    }
    public double area ()
    {
    return lado*lado;
    }
    }
     
  • En Java para indicar que una clase implementa una interfaz se utiliza la palabra reservada "implements".
  • La clase debe entonces implementar todos los metodos definidos por la interfaz o declararse a su vez, como una clase abstracta( lo que no suele ser especialmente util):
abstract class SinArea implements Figura
{
}
Herencia múltiple de interfaces
Una clase puede implementar varios interfaces simultáneamente, pese a que, en Java, una clase sólo puede heredar de otra clase (herencia simple de implementación, múltiple de interfaces).
public abstract class Figura
{
public abstract double area ();
}
public interface Dibujable
{
public void dibujar ();
}
public interface Rotable
{
public void rotar (double grados);
}
public class Circulo extends Figura
implements Dibujable
...
public class Cuadrado extends Figura
implements Dibujable, Rotable
...
 
Referencias:
 Saludos (:

Ejercicio de Herencia (Clase)

Identificar herencias en:

  • Buscaminas 

  • SIASE
Aquí mostramos los casos de uso.
Y aquí están las herencias de las clases usuario, inscripción,encuesta y beca


    miércoles, 29 de junio de 2011

    CASOS DE USO. (clase)

    Funcionalidades del Sistema.

    Buscaminas.

    Actor: Jugador
    Descripción: Encontrar todas las minas durante un tiempo sin descubrir ninguna.
    Casos

    Actividad 3.(Clase). Identificar las clases, atributos y metodos para iTunes, SIASE y Software de eleccion.

    Para esta actividad si nos fue un poco dificil identificar cada diseño de clases de los sistemas a continuacion les doy una breve explicacion a cada elemento.

    Clases:  
    • Implementación de un tipo de dato.
    • Definición de propiedades y operaciones
    Caracteristicas de los Objetos.
    Propiedad= atributo de un objeto
    Método = funcionalidad de un objeto

    Para iTunes serian lo siguiente:
     Para SIASE serian los sieguientes:
    Para Angry Birds

    Syntax Highlighter para el Blog

    Ejemplo de muestra.
    Referencia Blog

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class GUI extends JFrame implements ActionListener{
    private JLabel l1, l2, l3, l4,l5;
    private JTextField campo;
      private JButton ac;
    private String a, b,x,x1;
    private int e, f,f1;
    private double g,g1;
      protected Calculo c;
    
    public GUI(){
    super ("Calcular costos");
    this.ac();
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setSize(250,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    } 

    martes, 28 de junio de 2011

    Actividad 2. Puntos extras(Clase)-Casos de Sistemas Fallidos (Crisis del Software)

    ¿QUE ES?
    Termino usado cuando el software que se desarrolla:
    • No satisface las necesidades y requerimientos del cliente.
    • Excede los horarios y presupuestos de tiempo establecido. 
    SINTOMAS.
    • Baja calidad de productos de software.
    • tiempo y presupuesto inicial excedido.
    • confiabilidad cuestionable.
    • Altos requerimientos de personal para desarrollo y mantenimiento.
    Como bien sabemos la complejidad del Software producido y demandado se incrementa constantemente, el software es requerido en la acutalidad para ejecutar las tareas demandantes de hoy. 

    CAUSAS DE LA CRISIS DEL SOFTWARE
    Una de las principales causas de todo esto, si no la principal, era el enfoque dado al proceso de desarrollo de software. Para que nos hagamos una idea, el conjunto de las fases de análisis y diseño abarcaban el 8% del tiempo total de desarrollo de software. Además casi el 80% de los errores se producían en estas dos fases, con lo que se incrementaba el coste de corrección de errores conforme evolucionaban las fases de manera bestial. Con estos indicadores estaba claro que algo estaba fallando y que el proceso de desarrollo de software necesitaba un cambio radical.

    INGENIERÍA DEL SOFTWARE, LA SOLUCIÓN.
    La Ingeniería del Software, es una disciplina que intenta racionalizar el proceso de desarrollo de software y establecer unas pautas a seguir para el desarrollo que minimicen tiempo, esfuerzo, y coste de desarrollo y maximicen la calidad del software.Para hacernos una idea mas concreta de lo que abarca la Ingeniería del Software (cosa que nos ayudará a entender porque fue la solución a esta Crisis del Software), debemos de centrar nuestra explicación en que la I.S busca principalmente software de calidad.
    Software de Calidad: Es aquel software que cumple los requisitos funcionales y de rendimiento establecidos previamente y consta de unos estándares de desarrollo bien documentados. Además todos sus factores de calidad deben cumplirse y tener un buen seguimiento durante todo el proceso de desarrollo (características operativas, capacidad de soportar cambios y adaptabilidad a nuevos entornos). Y por último, se incorporan al proceso nuevos modelos de desarrollo y modificación del ciclo de vida, nuevos paradigmas de programación, etc.…que hacen que el desarrollo de software sea mucho mas metodológico y estructurado, disminuyendo así notablemente fallos y correcciones costosas.

    METODOLOGIA DE ANALISIS Y DISEÑO
    El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software que comprende cuatro grandes fases: concepción, elaboración, construcción y transición.
    Actualmente se encuentra en una etapa de madurez el enfoque Orientado a Objetos (OO) como paradigma del desarrollo de sistemas de información. El Object Management Group (OMG) es un consorcio a nivel internacional que integra a los principales representantes de la industria de la tecnología de información OO. El OMG tiene como objetivo central la promoción, fortalecimiento e impulso de la industria OO. 
    Una de las especificaciones más importantes es la adopción en 1998 del Lenguaje de Modelado Unificado o UML (del inglés Unified Modeling Language) como un estándar, que junto con el Proceso Unificado están consolidando la tecnología OO.
    Análisis Orientado a Objetos (OOA por sus siglas en inglés de Object Oriented Analysis) "es un método de análisis que examina los requerimientos desde la perspectiva de las clases y objetos encontrados en el vocabulario de del dominio del problema". 
    Diseño Orientado a Objetos "es un método de diseño abarcando el proceso de descomposición orientado a objetos y una notación para representar ambos modelos lógico y físico tal como los modelos estáticos y dinámicos del sistema bajo diseño".
    En cuanto a las metodologías OO, diremos que hay un gran número de métodos orientado a objetos actualmente.Algunas de las metodología más conocidas y estudiadas hasta antes del UML según [Jacobson 1992] son:
    • Object-Oriented Design (OOD), Booch.
    • Object Modeling Technique (OMT), Rumbaugh.
    • Object Oriented Analysis (OOA), Coad/Yourdon.
    • Hierarchical Object Oriented Design (HOOD), ESA.
    • Object Oriented Structured Design (OOSD), Wasserman.
    • Object Oriented Systems Analysis (OOSA), Shaler y Mellor.
    • Responsibility Driven Design (RDD), Wirfs-Brock, entre otros.
    Actualmente las metodologías más importantes de análisis y diseño de sistemas han confluido en lo que se es el UML, bajo el respaldo del Object Management Group. 
    Referencias:
    Espero  que sea util esta informacion.
    Saludos (:

    Reporte 2. Programa en un lenguaje Orientado a Objetos(Taller)

    Buen día compañeros aqui les muestro el sistema de funcionamiento de un auto, donde tenemos:
    Clase Principal: Auto
    Atributos: Velocidad
    Metodos: acelerar, desacelerar

    Ya que vimos mas a fondo estos temas ahora si lo podemos aplicar en codigo, es realizado en lenguaje Java.
    import javax.swing.*;
    
    public class Auto
    {
    private int velocidad;
    //contructor
    public Auto( int velInicial )
    { 
    velocidad = velInicial;
    }
    //obterner    
    public int  getVelocidad ()
    {
    return velocidad;
    }
    //consegir
    public void setVelocidad(int velInicial )
    {
    velocidad = velInicial;
    }
    public void acelerar( int velacelerada )
    {
    velocidad += velacelerada;
    }
    public void desacelerar( int veldesacelerada )
    {
    velocidad -= veldesacelerada;
    }
    public static void main( String args[ ] )
    {
    Auto auto1=new Auto(100);
    System.out.println("La velociada incial es: " + auto1.getVelocidad() );
    auto1.acelerar(50);
    System.out.println("La velociada Aumentada es: " + auto1.getVelocidad() );
    }
    } 
    Captura de Pantalla












    Saludos (:

    Poyecto. Herramientas

    Reporte 1.
    Buen día compañeros bueno esta entrada es para mostrar algunas de las herramientas que nos seran utiles para algunos de nuestros proyectos, estas son enfocadas a ubuntu  que es en el ambiente de trabajo en que desarrollaran la mayoria de los proyectos.
      
    Datos sobre Herramientas:
    Instalacion de Ubuntu:
    Para instalar Ubuntu solo requieres  descargarlo desde esta página, que además contiene como instalarse mediante cd o usb.

    Emacs(editor)
    Tambien utilizaremos un editor de textos para realizar nuestro codigo, algunos optan por utilizar este mismo desde terminal o bien el editor en si. 

     Para abrir desde la terminal seria de la siguiente manera ingresas en la terminal: emacs -nw nombrearchivo.extension(nombre con el que sera guardado)
    te mostrara la siguiente pantalla y aqui ya podras trabajar desde la terminal. 

    Lenguajes: 
    Los lenguajes que podremos utilizar son los siguientes:
    • Objective -C
    • C++
    Es una extensión del lenguaje C, a través de la cual se le proporciona de programación orientada a objetos. Su sintaxis es la misma solo que hay excepciones segun las funciones que van con POO.
    Para instalarlo ingresamos en la terminal 
    sudo apt-get update
      Despues teclearemos para instalarlo:
    sudo apt-get install g++
    • Python 
    Es muy fácil de aprender ya que su sintaxis es muy sencilla y ligera lo cual le otorga muchos puntos a favor.
    Otra de las características es que cuenta con un soporte bastante completo en la web y librerías que facilitan el desarrollo de aplicaciones.
    Es muy utilizado en las interfaces CGI. 
    Python viene completamente cargado en Ubuntu, para verificar su existencia basta con entrar a la Terminal e ingresar: 
    which python
    • Java
    En mi caso yo utilizare este lenguaje para desarrollar mi proyecto.
    Para comenzar a utilizar Java necesitamos instalar el Java Development Kit (JDK), este incluye el compilador y el runtime para probar nuestras aplicaciones. Lo podemos encontrar en el Botón de inicio de Linux - Ubuntu Software Center y buscar por java jdk o en su defecto si prefieren hacerlo desde la terminal colocando lo siguiente:
    sudo apt-get install openjdk-6-jdk
    En mi caso ya lo he instalado solo les mostrare la version que tengo de java y el jdk ya esta instalado.

    JDK: Es una herramienta que nos permite compilar, ejecutar, generar documentación, etc. 
    Bueno a parte de estas hay otras herramientas mas que nos menciono la Dra. Sara Garza que son:
    Herramientas Case (Computer Aided Software Engineering)
    Son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en términos de tiempo y de dinero. Esta es mas utilizada para el desarrollo de diagramas UML.
    Diagramas UML. 
    Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. 
    Podemos instalar diversas herramientas para generar diagramas UML, dos de ellas son Bouml y Umbrello.
    Umbrello
    Primero Entramos al menú APPLICATIONS, despues al programa UBUNTU SOFTWARE CENTER ya en la ventana teclear en la caja de busqueda "UMBRELLO" y dar click en "install".


    Referencias
    Herramienta Case
    UML 
    Tutoriales
    Tutorial Python
    C++
    Objective -C
    Espero les sirvan estas herramientas y si hay alguna mas que que puedan aportar seria de mucha ayuda para mi y para los demas proyectos.
    Saludos (:

    lunes, 27 de junio de 2011

    ACTIVIDAD 1. DEFINICION DE PROYECTO(Clase)

    Buen día compañeros.

    Esta entrada sera solo de la definicion de mi proyecto lo que he pensado hacer es un sistema de facturacion este es era enfocado a un negocio familiar pero ya que son pocas días para la entrega de este solo tendra pocas funcionalidades. La idea es tener un sistema que pueda manipular una base de datos en un pequeño negocio de costura en lugar de utilizar excel.

    Para su programacion utilizare el lenguaje Java ya que es un lenguaje orientado a objetos y  Java cuenta con las librerías para elaborar interfaces gráficas, ventanas, etc. 
    La factura solo contara con:
    • el nombre del producto
    • numero de pieza
    • cantidad de articulos que se compraran
    • el precio del articulo 
    conforme lo vaya desarrollando vere si podemos agregar alguna otro campo.

    Bueno esta es una pequeña descripcion de lo que sera mi proyecto espero poder lograr mi objetivo si tienen alguna aportacion que me pueda servir o alguna herramienta mas que pueda utilizar me seria muy util.

    Vanessa Salazar 1535031