miércoles, 23 de febrero de 2011

Especificación Técnica de mi Proyecto (TALLER)

Especificación Técnica.


■Introducción.

El proyecto que he decidido realizar es un Sistema de Administración y Producción de un negocio de artículos de limpieza para el hogar (puede aplicar para otro tipo de negocios también).

■¿En qué consiste el proyecto?

En desarrollar un sistema sencillo y a la vez eficaz que ayude al micro-empresario en la administración de los productos que vende como de la producción de la misma. Se pretende que el sistema tome las ordenes de parte clientes y las notifique si proceden a realizarse tomando en cuenta los materiales y/o productos con los que se cuente, actualizaciones de inventario, de precios y además con estos datos ir generando estadísticas de que tal van las ventas, qué productos se venden más, que productos no se venden, para que así el propietario del negocio tome decisiones en cuanto al futuro del mismo, qué debe seguir vendiendo para obtener más ganancias y seguir subiendo en el mercado o qué debe quitar.


■Ventajas con el uso del Sistema

Entre las ventajas con las que contará el uso de este sistema se encuentran:

►Manejar un inventario de productos bien ordenado y clasificado.
►Mejor administración del negocio al saber las ganancias que se estan obteniendo y/o las perdidas.
►Reducir el tiempo de espera de confirmación de pedido de un cliente.
►Acceso fácil al sistema para desistir de la necesidad de contratar a un profesional.
►Flexibilidad del sistema para adaptarse a distintos tipos de negocios.


■Desarrollo del proyecto.


►Herramientas para el desarrollo del Sistema.

Este proyecto está planeado para desarrollarse de Ubuntu Linux debido a la gran variedad de herramientas de desarrollo y aplicaciones con las que cuenta para hacer más amable el proceso de programación.
El lenguaje en que será programado será Java, debido al sin número de bibliotecas con las que cuenta que pueden ser útiles además que puedes desarrollar las interfaces gráficas con sólo importar una libreria y sin necesidad de instalar paqueter externos cómo en el caso de otros lenguajes de Programación Orientada a Objetos.

►Metodología de Desarrollo

Inicialmente cuento con una clase llamada Producto.
Producto  se encargará de agregar y modificar todo con respecto a estos, nombre, características, precio, etc.
También creo será conveniente tres clases más, Inventario,Orden y Estadística.

Inventario: es dónde se guardarán los materiales y/o productos en existencia inicialmente podría generarse en un .txt ya después se podría trasladar a una base de datos en SQL.

Orden: se encargará de administrar los productos de los clientes y enlazarlos con el inventario, para así dar luz verde a la realización de la venta o si el cliente tiene que esperar para que le sean entregados sus productos.

Estadística: su función será más que nada tomar toda la información que se haya generado de los pedidos y realizará estadísticas acerca de utilidades, perdidas, costos de producir más, etc que el dueño podrá revisar para determinar si debe cambiar algo, seguir igual o idear alguna idea nueva de promoción del negocio.


En la siguiente etapa, cuando ya esten bien estructuradas esas clases iniciales, vendrá la etapa de pruebas para verificar que cada clase, métodos y atributos esten funcionando de manera correcta y eficiente de lo contrario habra que corregir los errores presentados; en el caso en que la base principal del proyecto este funcionando perfectamente, se pudiera hacer una encuesta abierta entre los mismos compañeros de trabajo o que mejor aún, aplicarle tal encuesta personas que esten inmiscuidas en el medio (microempresarios) para ver que otro tipo de proceso sería conveniente agregar y/o optimizar en el sistema en desarrollo ya que finalmente el proyecto será para ellos.

Después en la siguiente y penúltima etapa, será dedicarse a darle apariencia y presentación al sistema una buena interfaz gráfica sencilla que sea de fácil acceso y navegación para la comodidad del usuario que se encargará de manejar el sistema.

Por último, vendría la última etapa, la etapa de de promoción.

¿En qué consistirá tal etapa?
En presentarle el proyecto del sistema a personas que cuenten con su negocio y quieran optimizar el sistema de administración y producción de su negocio, evaluar la situación y el interés del cliente que quiere adquirir el sistema, para adaptarlo a sus necesidades y que pueda utilizarlo en su negocio a la brevedad posible.



■Conclusiones

Como conclusiones, me entusiasma mucho el desarrollo de este proyecto ya que será clave en mi desarrollo como programador, espero concluirlo satisfactoriamente y que pueda ayudar a la sociedad micro-empresarial de la ciudad ya que este sistema está pensado en ellos, en quienes al igual que yo se encuentran en desarrollo y búscan convertirse en grandes productores de lo qué hacen.


Responsable del Proyecto:
Adán de Jesús Silva Cuéllar

Presentacion Proyecto POO 15 FEB

Aquí les adjunto la presentación de mi proyecto.

jueves, 17 de febrero de 2011

Documentación JAVADOC (TALLER)

Aquí está la representación de la documentación de la Clase Producto de mi programa.

Como lo mencione en entradas pasadas, modificaría considerablemente el diseño de mi código y adjunto aquí algo de mi avance:


/**
*This class will control all the atributes of the products that the system is going to
administer.
*/
public class Producto {



   String nombre; // name of product (this is only for tests)
    int numProducto; // id of the product
    float precio; // cost
    int numEscoba; // indicator of avalability for this product
    int numTrapeador; // indicator of avalibity for this product


    Producto(String nombre, int precio){
 this.nombre = nombre;                  // this is for tests
 this.precio = precio;
    }



void asignarExistencia (int e) {

 existencia = e;

    }

    Trapeador trapeador = new Trapeador ( "Trapeador", 16);     // part of the tests
    trapeador.asignarExistencia(100);

    Escoba escoba = new Escoba ( "Escoba", 15);
    escoba.asignarExistencia(100);

Pruebas agregar funcion MAIN





/**This toString will returns a representation of the data of the products.
*/
   public String toString() {
        return "Num. empleado " + numProducto + " Nombre: " + nombre +  //part of the tests
                " Sueldo: " + precio;
    }


/**This method check the availability of the products return true if there 
exists enough products form a sale or return false if there are not 
any more products.
*/


protected boolean disponibilidad(String producto){
 if((producto == "trapeador")&&numTrapeador!=0){
  return true;
 }
 else
 if((producto == "escoba")&&numTrapeador!=0){
  return true;
 }
 else{
  return false;
  
 /*System.out.println("No hay "+producto+"s disponibles");*/
 }
 
 }

}





La compilación y generación del JAVADOC de la clase:


Y aquí el resultado final de la documentación de la clase:
  

Y los detalles de los métodos que contiene la clase hasta el momento.

 


Saludos!! =D

domingo, 13 de febrero de 2011

Documentación y herramientas de desarrollo (CLASE)

Buenas noches, en esta entrada comentaré acerca de la importancia de la documentación de un programa y/o proyecto de programación.

Primero que nada, ¿qué significa documentación?

Bueno, según Wikipedia, se define a Documentación como la ciencia del procesamiento de la información. Integradora y globalizadora, se trata de una ciencia enriquecedora y generalista, de ámbito multidisciplinar o interdisciplinar.

 Ahora bien, en mi opinión la documentación es una herramienta muy útil, ya que gracias a ella podemos tener acceso a sin fin de información que pudiéramos necesitar en algún momento, tanto si fue algo que hicimos hace tiempo y necesitamos volver a repasarlo o que alguien mas la haiga compartido para ayudar a quien se encuentre atorado en "x" problema. Además que si en un determinando momento tienes que abandonar el proyecto que estas realizando, la documentación que hallas desarrollado al inicio de este servirá para que el programador que ocupe tu lugar, continue desarrollando el proyecto en base a la filosofía original que documentaste al principio de este.

En el ámbito de la programación la documentación juega un papel crucial para aquellos que estamos desarrollándonos en esta profesión, nos permite conocer variadas herramientas para implementar en nuestros programas y así facilitarnos el desarrollo de estos como también adaptar estrategias o seguir consejos o experiencias por parte de otros programadores que realizan tales documentaciones de sus trabajos y proyectos para ayudar a otros que apenas empezamos o aquellos que ya saben pero quieren desarrollarse aún más.

Bien, ahora la herramienta que utilizaré para la documentación de mi proyecto será JAVADOC


Y para ello me basaré, en el tutorial que proporciona el mismo JAVA, localizado en la siguiente liga:

http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html

La metodología que pretendo practicar para la documentación de mi proyecto es hacerlo cada que considere que tal avance ya no sufriría modificaciones, que ya tenga algo "seguro" para así poder documentarlo.

Además encontré una herramienta muy útil para hacer la documentación de Java también, se llama DrJava pueden descargarlo y ver más información sobre esta herramienta aquí:

http://www.drjava.org/

Y si lo instalan el procedimiento para crear tu JAVADOC esta aquí:


http://www.drjava.org/docs/quickstart/ch04s02.html



Es todo por esta entrada saludos, y que tengan muy buenas noches :)

jueves, 10 de febrero de 2011

Herencia en mi Proyecto (TALLER)

Buenos días, aquí les muestro los códigos de mi programa ya con las modificaciones y relaciones de herencia agregados.


Clase Material.

package pooproyect;

public class Material{   //clase papa 

    private materiales m;       // caracteristicas
    private canticad q;         // de productos
    private costo c;            //y materiales

    private escoba e;           //productos que se fabrican
    private trapeador t;        // en la fabrica

    public void escoba() {
    
 private int popotillo; 
 private int paloplastico;     // materiales para fabricar escobas
 private int palomadera;
 private int alambre;
    
 
    }

    public void trapeador(){

 private int algodon;
 private int fregona;
 private int paloplastico;        // materiales para fabricar trapeadores
 private int palomadera;
 private int alambre;

    }

}




Clase Orden.

package pooproyect;

public class Orden extends Material{

    private Int ejemplares; //numero de ejemplares requeridos
    

public void estandar(){
  
 //El cliente elegira la cantidad de productos que desea de acuerdo al
        //estandard de la fabrica

    }


public void personalizado(){
    
 /*El cliente podra elegir los materiales que desea para el producto que
 quiere adquirir*/

    }

}



Clase Producto

package pooproyect;


    public class Producto extends Orden { /*relacion de herencia con orden, 
ya que las estadisticas que se encarga de calcular esta clase, provienen 
directamente de las ordenes o pedidos que realizen los clientes*/

    private String escoba;  //son los productos que se venden
    private STring trapeador;
 

    public void costo(){ //encargada de realizar las estadisticas

    private int ventas; //cantidad de ventas
    private int unitario; //costo por fabricar producto
    private int precio; //precio final
    private int utilidades; //ganancia total en el pedido 
    private int perdida; //perdida total en el pedido



    }
}



Eso fue lo que considere de a cuerdo a las sugerencias que me dio la Dra. Elisa, si hay alguna pregunta, aclaracion, duda, comentario o sugerencia comenten :3

Saludos!

martes, 8 de febrero de 2011

Herencia en mi proyecto. (CLASE)

Bien, en esta entrada les explicaré las relaciones de herencia que existen entre clases y atributos en mi proyecto.

Platicando con la Doctora Elisa en clase, me hizo algunas observaciones que creyó debo modificar en el diseño de mi proyecto para la mejor implementación del mismo, en la entrada posterior a esta correspondiente al Taller, adjuntaré el código ya con las modificaciones implementadas, además de las relaciones de herencia de las mismas clases.

Entre las modificaciones que hice fue que opte por tener solo 2 productos fijos en venta, en lugar de "n" como estaba contemplado al principio por lo que elimine la clase Inventario y cree otra llamado Material, que es donde están declarados ambos productos y que tiene como atributos los materiales de los mismos, para ahí administrarlos, y la Clase Producto que anteriormente tenia como propósito agregar productos que la empresa quisiera vender, ahora la dejare encargada de realizar las puras estadísticas de los productos que se fabrican y vendieron. La idea de estas modificaciones fue para que pudieran existir relaciones de herencia ya que las Estadísticas de los Productos dependen de las Ordenes de estos por parte de los clientes, y las Ordenes dependen del inventario de materiales o productos con los que se cuenten para poder así realizar una venta exitosa.

Ahora en relación a esta entrada de la 3ra semana, por sugerencia de la Doctora, opte por agregar nuevos atributos a mis clases para que puedan tener una verdadera relación de herencia.

Lo que entendí por herencia, fue que es una relación entres dos o mas clases que tienen características en común pero cada una tiene una función diferente, pero que dicha función solo puede ser realizada por la interacción entre sus atributos propios con el atributo que tienen en común con la otra clase ya sea la clase padre o alguna clase hermana.







La primera relación de herencia que considere en mi proyecto ería en la clase Orden, la clase Material seria el papa ya que dependiendo de los materiales que existan seran las ordenes exitosas que se podran realizar. En dicha clase Orden agregue 2 atributos, Productos Estandarizados y Productos Personalizados (estos vendrian siendo hermanos). Los productos estandarizados, poseen como característica principal a diferencia de sus hermanos que tienen completamente definidas y estandarizadas sus medidas, formas, colores, etc. mientras que los Personalizados, se hacen de a cuerdo al gusto del cliente, siguen siendo escobas y trapeadores, pero el cliente decide si lo quiere de algún cierto material en específico o de algún tamaño en específico por si lo quieren para algún niño o etc. cada uno cuenta con características propias pero siguen teniendo una en común que los relaciona estrechamente y es que ambos siguen siendo Productos fabricados por materiales específicos.




 
Producto Estándar                                                 Producto Personalizado




La segunda relación de herencia, sería en la clase Productos, que seria hijo de la clase Orden, ya que ahi es donde se van a controlar las estadisticas de los productos vendidos datos que provienen de la Clase Orden, ya que ahi es donde se hacen los pedidos.

miércoles, 2 de febrero de 2011

Clases declaradas (Código) (TALLER)

Aquí adjunto el código dónde est­án declaradas las clases que mencioné en la entrada anterior, que pretendo usar para el desarrollo de mi proyecto. Compilan pero obviamente al ejecutar no arrojan nada al no contener la función main.



Clase productos:

package pooproyect;
import java.util.Scanner;


public class Producto{

    private String productos;
    private Scanner teclado;


    public void agregar() {

    /*aquí se agregan los productos que se fabrican, se guardan y 
    se modifican*/
    }


} 



Clase inventario:

package pooproyect;

public class Inventario{

    private Materiales m;
    private Canticad q;
    private Costo c;

    public void registrar() {

    /*como metodos, agregaria funciones para poder agregar materiales 
      junto con su cantidad que fue adquirica y cuanto costo cada pieza.*/
    }

}



Clase Orden:

package pooproyect;

public class Orden{

    private Int ejemplares; //numero de ejemplares requeridos
   

    public void buscar(){

    /*De acuerdo a la cantidad de productos requerida verificará el
inventario y decidirá si se puede proceder con la producción de tal producto
o si se cancela por la falta de algún material */
    }
 
}



Clase Costos:

package pooproyect;

public class Costo{

    private int ventas; //cantidad de ventas
    private int unitario; //costo por fabricar producto
    private int precio; //precio final
    private int utilidades; //ganancia total en el pedido
    private int perdida; //perdida total en el pedido

    public void calculos(){

    /*despues de llenar la encuesta con los datos anteriores
    se hara un calculo que pueda pronosticar si el producto
    dejo una buena utilidad o solo causo perdidas*/

    }

}




Es mi avance por el momento, para cualquier duda comenten a ver qué  les pareció, y sugieran o hagánme observaciones si notan que hay algo que omití, debo cambiar o mejorar, como anteriormente lo he dicho, siempre es bueno tener segundas opiniones para que algo que quieras hacer te pueda salir más que bien ;)

Saludos a todos! 

Adán Silva 

martes, 1 de febrero de 2011

Clases necesarias para el desarrollo de mi proyecto (CLASE)

En base a la idea que tengo para el desarrollo de mi simulador de sistema de producción, comenzaré a estructurarlo usando las siguientes clases, aceptaré comentarios y/o sugerencias por si se me pasa alguna clase que pueda ser productiva para hacer mi simulador más completo, pero por lo que he investigado la función de las siguientes clases cumplen la tarea elemental de tal sistema:


1° Clase. Productos. Esta clase será la encargada de administrar los productos que se busquen producir, lo más seguro es que tales productos sean escobas, trapeadores y recogedores por lo pronto. (Al final de la entrada explico por qué elegí tales productos).


2° Clase. Inventario. Aquí se administrarán todo lo que es materia prima, todos los materiales necesarios para la fabricación de tales productos, el administrador del sistema se encargará de cargar y actualizar estos datos cada que se quiera acceder al sistema para ordenar una producción de tales productos.


3° Orden. Al tener productos y materia prima, la clase orden se encargará de los pedidos y cantidades de productos que se buscan fabricar, analizará si se cuenta con la materia prima necesaria y dará luz verde para el proceso de producción, o por lo contrario, si no se cuenta con lo necesario rechazará tal orden.


4° Clase. Costos. Esta clase se encargará de analizar el presupuesto con el que se dispone para la realización de productos y generará estimaciones de las posibles ganancias o pérdidas que llegue a tener el producto dependiendo de la demanda que haya tenido. Esto, en la vida real es crucial para determinar si la empresa tendrá futuro en el mercado o si de a tiro no "pegará".


Pensaba nombrar también una clase Producción, pero este sistema es sólo un simulador, deduje que para poder incluir tal clase debería poder contar con el sistema automatizado encargado del completo ensamblaje del producto, pero en este caso que no se puede tal cosa, lo hice pensando en un micro-empresario que por lo regular fabrica productos hechos a mano, así el proceso terminaría cuando el sistema diera luz verde para empezar la producción ya lo demás sería complementario para que el propietario tuviera una idea de si le convendrá seguir fabricando tales productos o deberá innovar con algo nuevo para aumentar la demanda y por ende los ingresos para que así, su micro-empresa pueda ir creciendo y desarrollándose.


Si tienen algún comentario de retroalimentación u opiniones será bien recibido :)


Tengan una excelente mitad de semana y cuídense del frío :S


Hasta luego!


Adán Silva