Mostrando entradas con la etiqueta Puntos Extras. Mostrar todas las entradas
Mostrando entradas con la etiqueta Puntos Extras. Mostrar todas las entradas

miércoles, 23 de noviembre de 2011

Patrones de Diseño

En la clase hicimos un pequeño programa llamado Starbuzz en el cual utilizamos cuatro clases llamadas, bebidacafeinada, Cafe, Pruebabebidas y Te.

La codificación de cada una de ellas es la siguiente:

Bebida Cafeinada

import java.util.*;

public abstract class bebidacafeinada {

 
 public final void preparaReceta(){
  hervir();
  poner();
  servir();
  agregarCondimentos();
 }

 
 public abstract void poner();
 public abstract void agregarCondimentos();
  

 public void hervir() {
  System.out.println("Hirviendo Agua");
 }
 
 public void servir (){
  System.out.println("Sirviendo");
 }

 
}

Cafe

import java.util.*;

public class Cafe extends bebidacafeinada{

 
 public void poner() {
  System.out.println("Poniendo Cafe");
  
 }

 
 public void agregarCondimentos() {
  System.out.println("Agregando Azucar y Leche");
  
 }

}

Prueba Bebidas

public class pruebabebidas {
 
public static void main(String[] args) {
 
Te mite = new Te();
Cafe miCafe = new Cafe();

System.out.println("Preparando Te");
mite.preparaReceta();

System.out.println("\nPreparando Cafe");
miCafe.preparaReceta();
 }

}

Te

public class Te extends bebidacafeinada{

 
 public void poner() {
  System.out.println("Poniendo Te");

  
 }

 
 public void agregarCondimentos() {
  System.out.println("Agregando Limon");

  
 }

}

Al compilar y correr estas clases nos muestra un menu de lo que se hace cuando se prepara un Cafe y cuando se prepara un Te, para esto utilizamos un patron de diseño el cual nos ayuda para maximizar la reutilizacion de codigo.

El resultado de este patron es el siguiente:

Documentación Tecnica (Ogro y Principe)

Estas son las Documentaciones tecnicas que genere con el comando javadoc nombre.java:

Clase Atacable

 Clase Capturable

 Clase Congelable

 Clase Curable


Clase Mago
 

Clase Ogro


Clase Personaje


Clase PersonajeAtacable



 Clase Princesa


Clase Principe



Autogeneracion de Codigo (ogro y principe)

Esta es la Autogeneracion de los codigos que realize en clase junto con mi compañero David.

Clase Atacable

/**
 * Interface Atacable
 */
public interface Atacable {

  //
  // Fields
  //

  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   * @param        a
   */
  public void atacar( Atacable a );


  /**
   * @param        intensidad
   */
  public void recibirAtaque( int intensidad );


}

Clase Capturable


/**
 * Interface Capturable
 */
public interface Capturable {

  //
  // Fields
  //

  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   */
  public void capturar(  );


  /**
   */
  public void liberar(  );


}

Clase Congelable


/**
 * Interface Congelable
 */
public interface Congelable {

  //
  // Fields
  //

  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   */
  public void congelar(  );


}

Clase Curable


/**
 * Interface Curable
 */
public interface Curable {

  //
  // Fields
  //

  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   * @return       int
   */
  public int curar(  );


}

Clase Mago

import java.util.*;


/**
 * Class Mago
 */
public class Mago extends Personaje {

  //
  // Fields
  //

  
  //
  // Constructors
  //
  public Mago () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   * @param        c
   */
  public void lanzarHechizo( Congelable c )
  {
  }


  /**
   * @param        c
   */
  public void curar( Curable c )
  {
  }


}

Clase Ogro

import java.util.*;


/**
 * Class Ogro
 */
public class Ogro extends PersonajeAtacable implements Capturable, Congelable {

  //
  // Fields
  //

  private boolean congelado = false;
  
  //
  // Constructors
  //
  public Ogro () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  /**
   * Set the value of congelado
   * @param newVar the new value of congelado
   */
  private void setCongelado ( boolean newVar ) {
    congelado = newVar;
  }

  /**
   * Get the value of congelado
   * @return the value of congelado
   */
  private boolean getCongelado ( ) {
    return congelado;
  }

  //
  // Other methods
  //

  /**
   * @param        c
   */
  public void capturar( Capturable c )
  {
  }


  /**
   */
  public void capturar(  )
  {
  }


  /**
   */
  public void liberar(  )
  {
  }


  /**
   */
  public void congelar(  )
  {
  }


}

Clase Personaje


/**
 * Class Personaje
 */
public class Personaje {

  //
  // Fields
  //

  private String nombre;
  
  //
  // Constructors
  //
  public Personaje () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  /**
   * Set the value of nombre
   * @param newVar the new value of nombre
   */
  private void setNombre ( String newVar ) {
    nombre = newVar;
  }

  /**
   * Get the value of nombre
   * @return the value of nombre
   */
  private String getNombre ( ) {
    return nombre;
  }

  //
  // Other methods
  //

}

Clase PersonajeAtacable


/**
 * Class PersonajeAtacable
 */
public class PersonajeAtacable extends Personaje implements Atacable {

  //
  // Fields
  //

  static private int DEFAULT_VIDA = 100;
  private int vida;
  
  //
  // Constructors
  //
  public PersonajeAtacable () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  /**
   * Get the value of DEFAULT_VIDA
   * @return the value of DEFAULT_VIDA
   */
  private int getDEFAULT_VIDA ( ) {
    return DEFAULT_VIDA;
  }

  /**
   * Set the value of vida
   * @param newVar the new value of vida
   */
  private void setVida ( int newVar ) {
    vida = newVar;
  }

  /**
   * Get the value of vida
   * @return the value of vida
   */
  private int getVida ( ) {
    return vida;
  }

  //
  // Other methods
  //

  /**
   * @param        cuanta
   */
  public void restarVida( int cuanta )
  {
  }


  /**
   * @param        a
   */
  public void atacar( Atacable a )
  {
  }


  /**
   * @param        intensidad
   */
  public void recibirAtaque( int intensidad )
  {
  }


}

Clase Princesa


/**
 * Class Princesa
 */
public class Princesa extends Personaje implements Capturable {

  //
  // Fields
  //

  private String status = "libre";
  
  //
  // Constructors
  //
  public Princesa () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  /**
   * Set the value of status
   * @param newVar the new value of status
   */
  private void setStatus ( String newVar ) {
    status = newVar;
  }

  /**
   * Get the value of status
   * @return the value of status
   */
  private String getStatus ( ) {
    return status;
  }

  //
  // Other methods
  //

  /**
   */
  public void capturar(  )
  {
  }


  /**
   */
  public void liberar(  )
  {
  }


}

Clase Principe

import java.util.*;


/**
 * Class Principe
 */
public class Principe extends PersonajeAtacable implements Curable {

  //
  // Fields
  //

  
  //
  // Constructors
  //
  public Principe () { };
  
  //
  // Methods
  //


  //
  // Accessor methods
  //

  //
  // Other methods
  //

  /**
   * @return       Mago
   */
  public Mago invocarMago(  )
  {
  }


  /**
   * @param        o
   */
  public void atacar( Ogro o )
  {
  }


  /**
   * @param        c
   */
  public void rescatar( Capturable c )
  {
  }


  /**
   * @return       int
   */
  public int curar(  )
  {
  }


}

Tambien autogeneramos en Pyton, pero la documentacion tecnica la realizamos en java, asi que nos basamos en estas autogeneraciones.

Clase Moto

Este es el codigo que realice en esta actividad:

Clase Moto

import java.util.*;
 
public class Moto {
 
    public static void main(String[] args){
        
        claseMoto nueva = new claseMoto("1446759");
          
        int opc = 0;
        do{
          
           System.out.print("\nMenu de Moto:");
           System.out.println("\n1.Encender la moto");
           System.out.println("\n2.Apagar");
           System.out.println("\n3. Acelerar");
           System.out.println("\n4.Frenar");
          
            
           opc = (new Scanner(System.in)).nextInt();
          
           switch(opc){
               case 1: System.out.println("La moto esta encendida " + nueva.encender());
               break;
               case 2: System.out.println("La moto esta apagada " + nueva.apagar());
               break;
               case 3: System.out.println("\n"); nueva.acelerar(); 
               break;
               case 4: System.out.println("\n"); nueva.frenar();
               break;
               default: System.out.println("Selecciona otra Opcion");      
                      }
        }while(opc != 4);
   }
}

Clase clasemoto

public class claseMoto {
      
 //Atributos
     private int placa;
        private int estado;
        private int velocidad;
        private int vidabateria;
          
        //Constructor
        public claseMoto(String placa){
            this.placa = 1446759;
            this.estado = 0;
            this.velocidad = 0;
            this.vidabateria = 100;
        } 
          
        //Metodos
        public int verPlaca(){
            return placa;
        }
          
        public int encender(){
           estado = estado + 1;
           return estado;
        }
        public void vidaBateria(){
         vidabateria = vidabateria - 1;
            
        }
          
       
        public int apagar(){
            
            estado = 0;
             return estado;
            }
          
        public void acelerar(){
            if(estado==1){velocidad = (velocidad + 20);
            System.out.println("La velocidad es " + velocidad);}
            else System.out.println("No se puede acelerar");
        }
          
        public void frenar(){
         if (estado==1){velocidad = (velocidad - 20); }
          System.out.println("La velocidad es " + velocidad);
        }
}

y el resultado de mi programa es el siguiente:

viernes, 16 de septiembre de 2011

SQL

Esta actividad que realizamos, se trata de hacer varios ejercicios donde practiquemos los comandos básicos y las consultas a multiples tablas, en SQL, que es un lenguaje que se utiliza para hacer consultas a una base de datos.

Estos ejercicios los realizamos en la siguiente pagina: 

Ejercicio A. Es generar el siguiente resultado: 

 

esté, lo genere escribiendo:
SELECT City,CompanyName FROM Customers WHERE city LIKE 'ber%'

Ejercicio B.  El resultado generado es :

Donde el codigo que escribi fue:
SELECT CompanyName,ContactName
FROM Customers
ORDER BY ContactName ASC

Ejercicio C, el resultado a generar fue este:

donde tecleamos lo siguiente:
SELECT   MIN ('2')
FROM     Customers

Ejercicio D, fue probar las consultas que venian en la pagina ya mencionada, y estas pruebas fueron:

Prueba 1.- SELECT * FROM customers

Prueba 2.- SELECT CompanyName, ContactName FROM customers


Prueba 3.- SELECT * FROM customers WHERE companyname LIKE 'a%'





Prueba 4.- SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'a'


Prueba 5.-  SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'g'
AND ContactName > 'g'


Esto fue lo que realizamos en el taller de Programacion orientada a objetos.

lunes, 5 de septiembre de 2011

Interfaces en Java

¿Que es una Interface?
 
 Una plantilla que define métodos acerca de lo que puede o no hacer una clase.

Ejemplo:
Se define la interface Animal, entonces decimos que todos los animales comen y respiran, pero cada animal puede que coma o respire diferente. Entonces en la interface decimos lo que puede hacer un animal, pero si especificar ya que algunos lo hacen de forma diferente.

interface 

void comer();
int respirar;

class Perro implements Animal{
public void comer(){//cómo come el perro
}

public int respirar(){//cómo respira el perro
}
}


Entonces una INTERFACE es: Definir una clase en general, sin especificaciones.

Puntos Importantes:
  • Los métodos de una Interface son Abstractos, es decir, General. y son Públicos.
  • Los métodos de una Interface NO deben ser estáticos (Sin cambios).
  • Como los métodos son abstractos, no deben marcarse finales.
  • Una Interface puede extender una o mas interfaces.
  • No puede extender o heredar nada que no sea interface.
  • No puede implementar nada.
  • Se pueden usar Polimórficamente.
Referencias
1.- 
2.- 


martes, 23 de agosto de 2011

Crisis del Software

*PUNTOS EXTRAS

La Crisis del Software

La crisis del software es un término usado cuando el software creado no satisface las necesidades ni requerimientos del cliente y excede los presupuestos y horarios de tiempo establecidos.
El término se adjudica a F. L. Bauer, aunque ya había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer (El programador humilde).

Causas de la crisis del Software

A principios de los años 60, la potencia computacional de las maquinas era bastante limitada por eso desde nuestro punto de vista los programas hechos eran simples.En estos años se usaban los lenguajes de bajo nivel para la creación del software. A finales de estos años la potencia computacional empezo a aumentar y por ende tambien los lenguajes y fue entonces que se empezo a crear el Software como producto, pero aparecieron diferentes problemas, como:
-Exceder la estimacion de costes.
-Entregas retrasadas.
-Mantenimiento complicado.
Se desarrollaba software de mala calidad y lo principal era el enfoque dado al proceso de desarrollo de software.

Soluciones
-Ingenieria de 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.
Esta ingenieria busca software de calidad y se incorpora al proceso de nuevos modelos de desarrollo y modificacion de ciclos de vida etc., que hacen que el desarrollo de software sea mucho mas metodológico y estructurado, disminuyendo así notablemente fallos y correcciones costosas.




 Espero que esta información les sirva para saber un poco mas sobre este tema que es muy interesante.

Saludos :)