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 (: