lunes, 9 de mayo de 2011

Taller de Programación Orientada a Objetos

*Clase con al menos 3 metodos
*Clase de prueba utilizando junit

public class caja
{
 private double ancho;
 private double altura;
 private double largo;
 public double volumen()
 {
 }
 return ancho*altura*largo;

 public void setAncho(double an) {
 ancho = an;
 }
 public void setAltura(double al){
 altura = al;
 }
 public void setLargo(double l){
 largo = l;
 }
 public double getAncho(){
 return ancho;
 }
 public double getAltura(){
 return altura;
 }
 public double getLargo(){
 return largo;
 }
}

public class Example{
public static void main (String args[]) {
caja primercaja = new caja(); // creación de la caja
primercaja.setancho(4.3);
primercaja.setaltura6.9);
primercaja.setlargo(3);
System.out.println("El volumen es " + primeraja.volumen());
}
}

martes, 3 de mayo de 2011

Clase POO

No hay lonche gratis
'Gratis' nunca fue realmente gratis.
  • Envío 100% gratis-- otra manera de decir que el costo de envío esta incluido en el costo del producto.
  • Compra uno y el segundo es completamente gratis-- otra manera de decir que te dan un 50% de descuento.
  • Muestra gratis-- otra manera de decir que necesitas comprarlo.
  • Llévalo gratis ahorita, y paga después-- Se siente como gratis!, aunque sea por un momento.
 Pero claro, la palabra gratis es mágica. Por eso todo mundo la usa, y por eso todo mundo la busca

Por ejemplo este blog. Lo estas leyendo, gratis, y no tiene anunciantes. Entonces este sí es 100% gratis, o no? Tampoco. Lo estas pagando con tu tiempo, te esta costando tu atención. Y tu tiempo y atención mejoran mi reputación (No, no todo se paga con dinero). Lonche gratis o no, creo que lo interesante de esta discusión son los subsidos cruzados, y la manera en que puedes usar la palabra 'gratis' para generarle valor a tu negocio

jueves, 17 de marzo de 2011

Programación Orientada a Objetos

8. Antipatron de diseño


Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema.
Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores de sistemas para no escoger malos caminos, partiendo de documentación disponible en lugar de simplemente la intuición.

Los antipatrones se consideran una parte importante de una buena práctica de programación. Es decir, un buen programador procurará evitar los antipatrones siempre que sea posible, lo que requiere su reconocimiento e identificación tan pronto como sea posible, dentro del ciclo de vida del software.

Algunos ejemplos de estos serian:
  • Poltergeist
Esta mala práctica se refiere a objetos de un ciclo de vida corto cuya única función suele ser invocar métodos de otros objetos. Esto hace que crezca la dificultad para mantener el sistema. Suelen identificarse por su nombre: “start_”, “manager_”. La solución para evitarlos es eliminarlos y poner su funcionalidad en la clase a la que invocan.

  • Spaghetti Code
Este antipatrón se refiere a un código mal estructurado, ausente de estructuras de control etc… Es frecuente cuando usamos GOTOs, programamos a base de interrupciones o excepciones etc. También es frecuentemente denominado “Código canguro” por lo contiguos saltos que hay que hacer en él para seguir el flujo de ejecución.


Programación Orientada a Objetos

8. Los Patrones de Diseño

Brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares. Debemos tener presente los siguientes elementos de un patrón: su nombre, el problema (cuando aplicar un patrón), la solución (descripción abstracta del problema) y las consecuencias (costos y beneficios).
Los patrones de diseño son relativamente fáciles de comprender, no son nada del otro mundo. Lo que a veces se hace complejo es utilizarlos. Por ello hay que conocerlos bien, especialmente los más importantes, porque realmente facilitan el trabajo, y sobre todo, hacen el código más legible. 

Clasificación:
  • Creacionales: El objetivo de estos patrones es de abstraer el proceso de instanciación y ocultar los detalles de cómo los objetos son creados o inicializados.
  • Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades.
  • Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicación e iteración entre los objetos de un sistema.
Aquí 2 ejemplos de patrones de diseño serían los siguientes:

PATRON COMPOSITE (ESTRUCTURAL)
sirve para construir objetos complejos a partir de otros más simples y similares entre sí, gracias a la composición recursiva y a una estructura en forma de árbol.
Esto simplifica el tratamiento de los objetos creados, ya que al poseer todos ellos una interfaz común, se tratan todos de la misma manera.
diagrama del patrón composite

PATRON BUILDER (CREACIONAL)
Como Patrón de diseño, el patrón builder (Constructor) es usado para permitir la creación de una variedad de objetos complejos desde un objeto fuente (Producto), el objeto fuente se compone de una variedad de partes que contribuyen individualmente a la creación de cada objeto complejo a través de un conjunto de llamadas a interfaces comunes de la clase Abstract Builder.
Builder UML class diagram.svg

martes, 15 de marzo de 2011

Taller de POO

DIAGRAMA UML

Para crear el siguiente diagrama de clases hice uso del software BOUML  que permite definir y generar código en C++, Java, Idl y PHP. Es compati
ble con Unix/Linux/Solaris, MacOS X y Windows, es muy rápido y no requiere mucha memoria para manejar varios miles de clases.



jueves, 24 de febrero de 2011

Crisis del Software



Crisis del software era un término usado en los días tempranos de tecnología de dotación lógica, antes de él estaba un tema establecido. El término fue utilizado para describir el impacto de aumentos rápidos en energía de computadora y la complejidad de los problemas que podrían ser abordados. Esencialmente, refiere a la dificultad de la escritura correcta, comprensible, y comprobable programas de computadora. Las raíces de la crisis del software son complejidad, expectativas, y cambio.
Los requisitos que estaban en conflicto han obstaculizado siempre el proceso del desarrollo del software. Por ejemplo, mientras que los usuarios exigen una gran cantidad de características, los clientes desean generalmente reducir al mínimo la cantidad que deben pagar por el software y el tiempo requeridos para su desarrollo.
El término crisis del software fue acuñado cerca F. L. Bauer en la primera conferencia de la tecnología de dotación lógica de la OTAN adentro 1968 en Garmisch, Alemania. Un uso temprano del término está adentro Edsger Dijkstra's 1972 Concesión de ACM Turing Dé una conferencia, “el programador humilde” (EWD340), publicado en Comunicaciones del ACM. Estados de Dijkstra.

Las causas de la crisis del software fueron ligadas a la complejidad total del proceso del software y a la inmadurez relativa de la tecnología de dotación lógica como profesión. La crisis se manifestó de varias maneras:
  • Proyectos que funcionan el sobre-presupuesto.
  • Proyectos que funcionan en horas extras.
  • El software estaba de baja calidad.
  • El software no resolvió a menudo requisitos.
  • Los proyectos eran unmanageable y código difíciles de mantener.
Vario procesos y metodologías se han convertido sobre las últimas décadas “domestican” la crisis del software, con grados que variaban de éxito. Sin embargo, se conviene extensamente que hay ninguna “bala de plata” que es, ningún acercamiento que prevendrá los sobrantes y las faltas del proyecto en todos los casos. Generalmente proyectos del software que son grandes, complicados, pobre-especificado, e implican aspectos desconocedores, siguen siendo particularmente vulnerables a los problemas grandes, inesperados.

miércoles, 16 de febrero de 2011

Programacion orientada a objetos

DOCUMENTACION EN DOXYGEN

 

El programa que use para hacer la prueba de documentacion de las clases de mi proyecto fue con el Doxygen, lo instale en Windows 7.


Instalado y todo precedemos a montar los archivos de las clases para que nos lo muestre en una pagina HTML.


-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------