Estas preguntas la maestra nos las dio en el inicio del semestre:
¿Cuales son los sintomas de un mal diseño?
R= Rigidez, Fragilidad, Inmovilidad, Viscosidad.
¿En que consiste cada uno?
R=
Rigidez: Tendencia del software a ser dificil de cambiar, incluso en las cosas mas sencillas.
Fragilidad: Tendencia que tiene el software a romperse por muchos sitios cada vez que se cambia algo.
Inmovilidad: La resistencia del software a ser reutilizado en otros proyectos o parte de otros proyectos.
Viscosidad: La dificultad de mantener la filosofia del diseño original.
¿Que causa el deterioro del diseño?
R= Requisitos cambiantes.
¿Que se puede hacer?
R= Deben ser controladas las dependencias entre modulos de una aplicacion. Este control consiste en la creación de "cortafuegos" de dependencias.
jueves, 24 de noviembre de 2011
Preguntas Guía
Pruebas Unitarias
En clase julio, sergio, daysi y yo realizamos una prueba unitaria sobre el buscaminas, la cual expuse ante al grupo y esta prueba es la siguiente:
Hicimos otra prueba pero no la terminamos ya que el tiempo de la actividad fue muy corto para terminarlo.
Etiquetas:
Actividades en el Salón
Diagramas de Secuencia
Etiquetas:
Actividades en el Salón
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
Cafe
Prueba Bebidas
Te
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:
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 Personaje
Clase PersonajeAtacable
Clase Princesa
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
Clase Capturable
Clase Congelable
Clase Curable
Clase Mago
Clase Ogro
Clase Personaje
Clase PersonajeAtacable
Clase Princesa
Clase Principe
Tambien autogeneramos en Pyton, pero la documentacion tecnica la realizamos en java, asi que nos basamos en estas autogeneraciones.
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
Clase clasemoto
y el resultado de mi programa es el siguiente:
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:
martes, 8 de noviembre de 2011
Autogeneracón de Codigo
El codigo que genere, de acuerdo a mi diagrama fue el siguiente:
Clase Administrador
Clase Cliente
Clase Mascota
Clase Negocio
Estos codigos autogenerados, no difieren mucho del codigo que yo tenia, solamente en los metodos get y set, que son para obtener y modificar el valor de las variables.
Saludos :)
Clase Administrador
/** * Class Administrador */ public class Administrador { // // Fields // private void Bienvenida; // // Constructors // public Administrador () { }; // // Methods // // // Accessor methods // /** * Set the value of Bienvenida * @param newVar the new value of Bienvenida */ private void setBienvenida ( void newVar ) { Bienvenida = newVar; } /** * Get the value of Bienvenida * @return the value of Bienvenida */ private void getBienvenida ( ) { return Bienvenida; } // // Other methods // }
Clase Cliente
/** * Class Cliente */ public class Cliente { // // Fields // private void Nombre; private void Apellido_Paterno; private void Apellido_Materno; private void Direccion; private void Telefono; // // Constructors // public Cliente () { }; // // Methods // // // Accessor methods // /** * Set the value of Nombre * @param newVar the new value of Nombre */ private void setNombre ( void newVar ) { Nombre = newVar; } /** * Get the value of Nombre * @return the value of Nombre */ private void getNombre ( ) { return Nombre; } /** * Set the value of Apellido_Paterno * @param newVar the new value of Apellido_Paterno */ private void setApellido_Paterno ( void newVar ) { Apellido_Paterno = newVar; } /** * Get the value of Apellido_Paterno * @return the value of Apellido_Paterno */ private void getApellido_Paterno ( ) { return Apellido_Paterno; } /** * Set the value of Apellido_Materno * @param newVar the new value of Apellido_Materno */ private void setApellido_Materno ( void newVar ) { Apellido_Materno = newVar; } /** * Get the value of Apellido_Materno * @return the value of Apellido_Materno */ private void getApellido_Materno ( ) { return Apellido_Materno; } /** * Set the value of Direccion * @param newVar the new value of Direccion */ private void setDireccion ( void newVar ) { Direccion = newVar; } /** * Get the value of Direccion * @return the value of Direccion */ private void getDireccion ( ) { return Direccion; } /** * Set the value of Telefono * @param newVar the new value of Telefono */ private void setTelefono ( void newVar ) { Telefono = newVar; } /** * Get the value of Telefono * @return the value of Telefono */ private void getTelefono ( ) { return Telefono; } // // Other methods // /** * @return char */ public char ingresar_Nombre( ) { } /** * @return char */ public char Ingresar_App( ) { } /** * @return char */ public char Ingresar_Apm( ) { } /** * @return char */ public char Ingresar_Dir( ) { } /** * @return int */ public int Ingresar_tel( ) { } }
Clase Mascota
/** * Class Mascota */ public class Mascota extends Cliente { // // Fields // private char NombredeMascota; private char Edad_de_Mascota; private char SexodeMascota; private char Raza; // // Constructors // public Mascota () { }; // // Methods // // // Accessor methods // /** * Set the value of NombredeMascota * @param newVar the new value of NombredeMascota */ private void setNombredeMascota ( char newVar ) { NombredeMascota = newVar; } /** * Get the value of NombredeMascota * @return the value of NombredeMascota */ private char getNombredeMascota ( ) { return NombredeMascota; } /** * Set the value of Edad_de_Mascota * @param newVar the new value of Edad_de_Mascota */ private void setEdad_de_Mascota ( char newVar ) { Edad_de_Mascota = newVar; } /** * Get the value of Edad_de_Mascota * @return the value of Edad_de_Mascota */ private char getEdad_de_Mascota ( ) { return Edad_de_Mascota; } /** * Set the value of SexodeMascota * @param newVar the new value of SexodeMascota */ private void setSexodeMascota ( char newVar ) { SexodeMascota = newVar; } /** * Get the value of SexodeMascota * @return the value of SexodeMascota */ private char getSexodeMascota ( ) { return SexodeMascota; } /** * Set the value of Raza * @param newVar the new value of Raza */ private void setRaza ( char newVar ) { Raza = newVar; } /** * Get the value of Raza * @return the value of Raza */ private char getRaza ( ) { return Raza; } // // Other methods // /** * @return char */ public char IngresarNMas( ) { } /** * @return char */ public char Ingresaredad( ) { } /** * @return char */ public char IngresarSexo( ) { } /** * @return char */ public char IngresarRaza( ) { } }
Clase Negocio
/** * Class Negocio */ public class Negocio { // // Fields // private char Productos; private int Precio; // // Constructors // public Negocio () { }; // // Methods // // // Accessor methods // /** * Set the value of Productos * @param newVar the new value of Productos */ private void setProductos ( char newVar ) { Productos = newVar; } /** * Get the value of Productos * @return the value of Productos */ private char getProductos ( ) { return Productos; } /** * Set the value of Precio * @param newVar the new value of Precio */ private void setPrecio ( int newVar ) { Precio = newVar; } /** * Get the value of Precio * @return the value of Precio */ private int getPrecio ( ) { return Precio; } // // Other methods // /** * @return char */ public char Ingresarprod( ) { } /** * @return char */ public char EliminarProd( ) { } /** * @return int */ public int EditarPrecio( ) { } }
Estos codigos autogenerados, no difieren mucho del codigo que yo tenia, solamente en los metodos get y set, que son para obtener y modificar el valor de las variables.
Saludos :)
Etiquetas:
Taller POO 2° Entrega
domingo, 6 de noviembre de 2011
Retroalimentación por Pares
En esta actividad mi compañero Luis Solis y yo, realizamos un diagrama en umbrello y el resultado fue este:
La verdad esque el no me hablo de su proyecto porque no sabia que hacer de proyecto y por consecuencia no tenia nada en su blog. Yo le hable de mi proyecto pero solo me escucho y me dijo que era un buen proyecto, y que tenia que utilizar base de datos, entonces dije en que lio me estoy metiendo, pero tambien pense, es cosa de que investigue y me ponga a trabajar :)
miércoles, 2 de noviembre de 2011
Interfaz Gráfica
Estas son algunas de las interfaces de mi Proyecto:
Esta es la Bienvenida del Programa.
Después de dar click en el botón bienvenidos, se abre esta pantalla, la cuál es el menu principal de mi programa.
Supongamos, que dimos click en el botón Cliente, entonces abre otra pantalla con el siguiente menú, que es para dar de alta un cliente o bien para buscar uno de los ya mencionados.
Entonces dimos click en Nuevo Cliente, y abre la pantalla donde se ingresan los datos del cliente, si el cliente tiene una mascota, entonces se da click en Ingresar Paciente, para dar de alta a su mascota.
Y está es la pantalla donde se ingresan los datos de la mascota, quise hacer los datos de una forma muy general, ya que el cliente se desesperara si empezamos a preguntar tantos datos. Después de ingresar estos datos damos click en Guardar o bien en Cancelar si asi lo desea.
Esta es la Bienvenida del Programa.
Después de dar click en el botón bienvenidos, se abre esta pantalla, la cuál es el menu principal de mi programa.
Supongamos, que dimos click en el botón Cliente, entonces abre otra pantalla con el siguiente menú, que es para dar de alta un cliente o bien para buscar uno de los ya mencionados.
Entonces dimos click en Nuevo Cliente, y abre la pantalla donde se ingresan los datos del cliente, si el cliente tiene una mascota, entonces se da click en Ingresar Paciente, para dar de alta a su mascota.
Y está es la pantalla donde se ingresan los datos de la mascota, quise hacer los datos de una forma muy general, ya que el cliente se desesperara si empezamos a preguntar tantos datos. Después de ingresar estos datos damos click en Guardar o bien en Cancelar si asi lo desea.
Al dar click en Guardar o Cancelar en la pantalla anterior, automaticamente abre nuevamente el menú de clientes y entonces damos click en Buscar Clientes y abre esta Pantalla, donde se busca el cliente por el nombre y se puede eliminar o Editar sus datos. Al dar Click en Menú regresa al menu Principal.
Elegí estas pantallas, porque es como el corazon de mi proyecto, es lo más importante y en lo que mas me estoy basando.
Patrones de Diseño
Un Patron es un modo definido de operación o comportamiento, es una guía de diseño.
Hay 3 tipos de patrones:
- Creación: Mecanismos para la creación de objetos.
- Estructura: Mecanismo de relación entre entidades.
- Comportamiento: Mecanismos de comunicación entre clases.
El patron que yo utilizaria en mi proyecto es de el de Fachada, este es un tipo de patrón de estructura y su proposito es simplificar el sistema através de una interfaz general.
Pienso que aplicaria en mi proyecto, porque tiene que ser algo muy general, sin darle tantas vueltas o tantos click´s para llegar al punto que queremos.
Otro sería el de Observador, este define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
Podría aplicarse en mi proyecto, porque unos objetos dependen de otros, por ejemplo al abrir una ventana, se debe cerrar la ventana pasada.
Referencias
Eventos, Excepciones y Errores
Un evento es un suceso, algo que pasa o tiene lugar..estos se pueden ver como una interaccion.
Los eventos de mi proyecto son los siguientes:
Las excepciones y errores se refieren a Violaciones de una restricción y desviación de lo correcto respectivamente.
Las excepciones y errores de mi proyecto, las muestra la siguiente tabla:
Los eventos de mi proyecto son los siguientes:
Las excepciones y errores se refieren a Violaciones de una restricción y desviación de lo correcto respectivamente.
Las excepciones y errores de mi proyecto, las muestra la siguiente tabla:
Referencias
Diagramas de Secuencia
Los diagramas de Secuencia de mi Proyecto son los siguientes:
1.- Muestra el ingreso de un nuevo cliente.
2.- Este diagrama muestra el alta de un cliente y también del paciente.
3.- Este ultimo diagrama muestra la eliminación de un Cliente y si es el caso un paciente.
1.- Muestra el ingreso de un nuevo cliente.
2.- Este diagrama muestra el alta de un cliente y también del paciente.
3.- Este ultimo diagrama muestra la eliminación de un Cliente y si es el caso un paciente.
jueves, 27 de octubre de 2011
Herencia :)
La herencia en mi proyecto aplica en las clases Cliente y Mascota, como ya lo habia mencionado en la entrada de herencia en Programación Orientada a Objetos, Ya que Mascota es un tipo de Cliente.
Este es el codigo de Mascota, tiene algunos Metodos, que pertenecen a esta clase.
Este Codigo es el de la clase padre, Cliente.
Aqui los metodos de Cliente tambien se usaran en Mascota, ya que no puede haber ninguna mascota sin Dueño, y este dueño necesita los datos que se ingresan en la clase cliente, Pero tambien puede llegar alguna persona, que solo necesite de algun producto, entonces tambien se necesitan estos datos.
Saludos :)
Este es el codigo de Mascota, tiene algunos Metodos, que pertenecen a esta clase.
public class Mascota extends Cliente{ //Atributos private static String nombre; private static String raza; private static String nacimiento; private static String sexo; // Constructor public Mascota(){ ingresarnom(); ingresarra(); ingresarnac(); ingresarsex(); } //Metodos public String ingresarnom() { return nombre; } public String ingresarra() { return raza; } public String ingresarnac() { return nacimiento; } public String ingresarsex() { return sexo; } public static void main(String[] args){ char opc ; int opc1 ; Mascota altanom, altara, altanac, altasex ; altanom = new Mascota(); altara = new Mascota(); altanac = new Mascota(); altasex = new Mascota(); Scanner leer = new Scanner(System.in); Scanner in = new Scanner(System.in); //nombre System.out.println("\nNombre: "); opc = leer.next().charAt(0); nombre = altanom.ingresarnom(); //Raza System.out.println("\nRaza "); opc = leer.next().charAt(0); raza = altara.ingresarra(); //Sexo System.out.println("\nSexo: "); opc = leer.next().charAt(0); sexo = altasex.ingresarsex(); //fecha de nacimiento System.out.println("\nFecha de Nacimiento: "); opc = leer.next().charAt(0); nacimiento = altanac.ingresarnac(); } }
Este Codigo es el de la clase padre, Cliente.
public class Cliente { //Atributos private static String nombre; private static String apellidop; private static String apellidom; private static String telefonoh; private static String telefonoc; private static String email; private static String domicilio; // Constructor public Cliente(){ ingresarnom(); ingresarapp(); ingresarapm(); ingresarth(); ingresartc(); ingresarem(); ingresardom(); } public String ingresarnom() { return nombre; } public String ingresarapp() { return apellidop; } public String ingresarapm() { return apellidom; } public String ingresarth() { return telefonoh; } public String ingresartc() { return telefonoc; } public String ingresarem() { return email; } public String ingresardom() { return domicilio; } public static void main(String[] args){ char opc ; int opc1 ; Cliente altanom, altaapp, altaapm, altath, altatc, altaem, altadom; altanom = new Cliente(); altaapp = new Cliente(); altaapm = new Cliente(); altath = new Cliente(); altatc = new Cliente(); altaem = new Cliente(); altadom = new Cliente(); Scanner leer = new Scanner(System.in); //nombre System.out.println("\nNombre: "); opc = leer.next().charAt(0); nombre = altanom.ingresarnom(); //apellido Paterno System.out.println("\nApellido Paterno: "); opc = leer.next().charAt(0); apellidop = altaapp.ingresarapp(); //Apellido Materno System.out.println("\nApellido Materno: "); opc = leer.next().charAt(0); apellidom = altaapm.ingresarapm(); //Telefono casa System.out.println("\nTelefono fijo: "); opc1 = leer.nextInt(); telefonoh = altath.ingresarth(); //Telefono movil System.out.println("\nTelefono movil: "); opc = leer.next().charAt(0); telefonoc = altatc.ingresartc(); //email System.out.println("\ne-mail: "); opc = leer.next().charAt(0); email = altaem.ingresarem(); //Direccion System.out.println("\nDireccion:"); opc = leer.next().charAt(0); domicilio = altadom.ingresardom(); } }
Aqui los metodos de Cliente tambien se usaran en Mascota, ya que no puede haber ninguna mascota sin Dueño, y este dueño necesita los datos que se ingresan en la clase cliente, Pero tambien puede llegar alguna persona, que solo necesite de algun producto, entonces tambien se necesitan estos datos.
Saludos :)
Etiquetas:
Taller POO 2° Entrega
Documentación Técnica
La Documentacion Tecnica es el material que explica las caracteristicas y las operaciones de un sistema. Está documentacion es importante ya que es más facil para el usuario entender el sistema que esta utilizando.
Es muy facil generar la documentación Técnica, ya que se genera automaticamente con ayuda de algunas herramientas como: Sandcastle, Javadoc, Doxygen, Sphinx, etc.
En mi caso, Generare la documentacion Tecnica de mi proyecto con Javadoc, entonces les explicare como generarla en esta herramienta.
Despues de que hice los diagramas en Umbrello, segui algunos pasos para generar el codigo de mi diagrama, esté codigo aparece con comentarios especiales, me refiero a que no son como los que siempre usamos: /* Comentario */, estos comentarios son:
/**
*Comentario
*/
Tambien se ponen algunas palabras reservadas, estás explican la semántica del texto, En este Link, aparecen algunas de estas palabras reservadas.
Para Generarla, entramos en el simbolo del sistema, y escribimos:
"javadoc nombre.java"
con nombre, me refiero a el nombre de nuestro archivo previamente comentarizado, y entonces asi de facil se genera la nuestra documentación Técnica.
Diagrama de clases y tarjetas CRC
Un Diagrama de clases es un tipo de diagrama estático que describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos.
El diagrama de clases de mi Sistema es el siguiente:
Las tarjetas CRC
- Son una metodología para el diseño de programas orientados a objetos.
- CRC son las iniciales de clase, responsabilidad y colaboración.
- Resumen las responsabilidades de una clase antes de pasar a realizar el diagrama.
Las tarjetas CRC representan objetos; la clase a la que pertenece el objeto se puede escribir arriba, las responsabilidades u objetivos que debe llevar a cabo el objeto se pueden escribir a la izquierda, y la derecha las clases que se relacionan con dicho objeto.
Herencia
¿Que es la Herencia?
En mi proyecto utilizare la herencia en:
Es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. Esta facilita la creación de objetos a partir de otros ya existentes, obteniendo métodos y atributos similares a los ya existentes.
La herencia es uno de los mecanismos mediante el cual una clase se deriva de otra.
En mi proyecto utilizare la herencia en:
En este caso Cliente hereda Mascota, porque Mascota es un tipo de cliente.
Si el Cliente asiste a la veterinaria solo por algun producto, se llena algun formato en donde se guardan sus datos, pero si va para atender a su mascota de igual manera se llena el formato de los datos del cliente y aparte los de la mascota; Por eso Decidi tener herencia en esta Clase.
Saludos :)
Referencias
miércoles, 21 de septiembre de 2011
Caso Biblioteca
En el salon de Clases realizamos esta actividad llamada Caso biblioteca, donde tenemos que identificar los casos de uso, las clases y si relaciona herencia.
La redaccion del caso es la siguiente:
Usuario hereda Alumno y Empleado
Libro hereda Libros de Consulta y Libros para x cosa (ejemplo: leer)
Este Caso Biblioteca, lo realize de manera individual, me sirvio mucho, porque me es mas facil identificar las clases, los atributos y los metodos, al igual que los casos de uso, lo que aun se me complica un poco es la herencia, pero todo lleva su tiempo.
Saludos :)
La redaccion del caso es la siguiente:
La universidad X tiene un sistema de información que le maneja el catálogo de biblioteca y los préstamos.
• El usuario ingresa con un nombre (matrícula, # de nómina) y contraseña (nip asignado por biblioteca).
• Puede buscar dentro del catálogo aquellos libros que le interesan; se le despliegan los datos bibliográficos (incluida imagen).
– Considerar que el libro no siempre está disponible: prestado, en reparación, en encuadernación, apartado, etc.
• También se puede sacar los libros prestados
– Siempre y cuando el usuario no tenga muchas multas.
– Si los libros son de consulta, no se pueden sacar.
– El tiempo de préstamo es diferente si se trata de un alumno de licenciatura, maestría, doctorado o un maestro.
• El usuario ingresa con un nombre (matrícula, # de nómina) y contraseña (nip asignado por biblioteca).
• Puede buscar dentro del catálogo aquellos libros que le interesan; se le despliegan los datos bibliográficos (incluida imagen).
– Considerar que el libro no siempre está disponible: prestado, en reparación, en encuadernación, apartado, etc.
• También se puede sacar los libros prestados
– Siempre y cuando el usuario no tenga muchas multas.
– Si los libros son de consulta, no se pueden sacar.
– El tiempo de préstamo es diferente si se trata de un alumno de licenciatura, maestría, doctorado o un maestro.
Casos de Uso
Clases
- Clase: Universidad
- Atributos: Biblioteca, Prestamos, Usuario
- Metodo: Desplegar lista de libros, Elegir Usuario
- Clase: Usuario
- Atributo: Nombre, Contraseña
- Metodo: Eligir Alumno o Empleado
- Clase: Cátalogo
- Atributo: Libros
- Metodo: Buscar libros, Sacar Libros.
Usuario hereda Alumno y Empleado
Libro hereda Libros de Consulta y Libros para x cosa (ejemplo: leer)
Este Caso Biblioteca, lo realize de manera individual, me sirvio mucho, porque me es mas facil identificar las clases, los atributos y los metodos, al igual que los casos de uso, lo que aun se me complica un poco es la herencia, pero todo lleva su tiempo.
Saludos :)
Etiquetas:
Actividades en el Salón
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
FROM Customers
ORDER BY ContactName ASC
Ejercicio C, el resultado a generar fue este:
donde tecleamos lo siguiente:
SELECT MIN ('2')
FROM Customers
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 customersWHERE CompanyName > 'a'
Prueba 5.- SELECT CompanyName, ContactName
FROM customersWHERE CompanyName > 'g'
AND ContactName > 'g'
Esto fue lo que realizamos en el taller de Programacion orientada a objetos.
lunes, 12 de septiembre de 2011
Herencia
En el salon realizamos una Actividad donde identificamos la herencia en algunas Aplicaciones, estás son:
SIASE y Facebook
La herencia qe encontramos en el SIASE fue:
Usuario - hereda: Maestro y Alumno.
Carreras - hereda: IAS e ITS.
Tipo de Inscripcion - hereda: Materia y Laboratorio.
Encuestas - hereda: Calidad y Verano.
Cuotas - hereda: Interna y Externa.
La herencia identificada en el Facebook fue:
Eventos - hereda: Cumpleaños y Actividades
Mensajes -hereda: Chat e Inbox
Cuentas - hereda: Comun o Fan
Publicaciones - hereda: Comentarios, like, etiquetas
Notas - hereda: Borradores y Notas de Amigos
Configuracion -hereda: Cuenta y Provacidad
Esta actividad la realizamos en Equipo, y al final de debatir entre nosotros, decidimos las herencias, la verdad esque no somos muy expertos en esto, pero al paso del tiempo iremos aprendiendo más; Eso esperamos.
Saludos :)
Etiquetas:
Actividades en el Salón
Conceptos
Dentro de está materia aplicaremos diferentes conceptos, que son importantes saberlos, algunos de estos son:
OOSAD
Sus siglas en Ingles, Office Support System Analysis and Design. El objetivo es describir un sistema de manera formal, mediante un lenguaje propio, tomando en cuenta tanto los aspectos técnicos, como organizativos y humanos de un organismo. Adicionalmente aporta los principios de funcionamiento y una ética que permiten llevar a cabo la transición de una forma exitosa.
OMG
Sus siglas son: Object Management Group. Este es un consorcio a nivel internacional que integra a los principales representantes de la industria de la tecnología de información OO. Tiene como objetivo central la promoción, fortalecimiento e impulso de la industria OO. Ademas propone y adopta por consenso especificaciones entorno a la tecnología OO.
OOP
UML
Estas Siglas en ingles significan: Unified Modeling Language (Lenguaje Unificado de Modelado), esté es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema software orientado a objetos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir.
OOSAD
Sus siglas en Ingles, Office Support System Analysis and Design. El objetivo es describir un sistema de manera formal, mediante un lenguaje propio, tomando en cuenta tanto los aspectos técnicos, como organizativos y humanos de un organismo. Adicionalmente aporta los principios de funcionamiento y una ética que permiten llevar a cabo la transición de una forma exitosa.
OMG
Sus siglas son: Object Management Group. Este es un consorcio a nivel internacional que integra a los principales representantes de la industria de la tecnología de información OO. Tiene como objetivo central la promoción, fortalecimiento e impulso de la industria OO. Ademas propone y adopta por consenso especificaciones entorno a la tecnología OO.
OOP
Segun sus siglas en Inglés, Esto es Programación Orientada a Objetos, es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución.
Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan acciones que realizan. Todas las propiedades y métodos comunes a los objetos se agrupan en clases. Una clase es un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.
OOSE
Estas siglas significan: Orientado a objetos de ingeniería de software y es un lenguaje de modelado de objetos y metodología. Es la primera metodología orientada a objetos de diseño a emplear casos de uso para impulsar el diseño de software. OOSE incluye los requisitos, un análisis, un diseño, una implementación y un modelo de pruebas.
Estas siglas significan: Orientado a objetos de ingeniería de software y es un lenguaje de modelado de objetos y metodología. Es la primera metodología orientada a objetos de diseño a emplear casos de uso para impulsar el diseño de software. OOSE incluye los requisitos, un análisis, un diseño, una implementación y un modelo de pruebas.
Referencias:
lunes, 5 de septiembre de 2011
Caso de Uso (Buscaminas)
Esta es una actividad que realizamos en el salon de clases, se trata de definir los casos de uso para el juego "Buscaminas".
Casos de Uso:
De principio fue, un tanto dificil ya que apenas empezabamos a practicar esto, pero cuando la maestra nos entrego nuestro trabajo, entonces entendimos más algunos conceptos .
Casos de Uso:
De principio fue, un tanto dificil ya que apenas empezabamos a practicar esto, pero cuando la maestra nos entrego nuestro trabajo, entonces entendimos más algunos conceptos .
Etiquetas:
Actividades en el Salón
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.
Entonces una INTERFACE es: Definir una clase en general, sin especificaciones.
Puntos Importantes:
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.
- 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
domingo, 4 de septiembre de 2011
Esqueleto de Clases
El esqueleto de Clases de mi Proyecto es:
Primera Clase
Segunda Clase
Tercera Clase
Cuarta Clase
Por lo pronto es el esqueleto que tengo en mente, si hay mas clases, atributos o metodos, los ire añadiendo.
Saludos :)
Primera Clase
Segunda Clase
Tercera Clase
Cuarta Clase
Por lo pronto es el esqueleto que tengo en mente, si hay mas clases, atributos o metodos, los ire añadiendo.
Saludos :)
Etiquetas:
Taller POO 1° Entrega
Suscribirse a:
Entradas (Atom)