martes, 8 de julio de 2008

Prefinal, martes 8 de Julio de 2008

Cuestionario Guía

1 )¿Qué es una clase? explicar y ejemplificar .
2 )¿Que es un objeto? explicar y ejemplificar.
3)¿Cuáles son las relaciones entre clases?.
4) Pensar, explicar y justificar un ejemplo de cada una.
5) ¿Cuál es la diferencia entre un evento externo y otro temporal?.
6) ¿Un sistema de compras y ventas de productos tiene los mismos eventos
en todas las empresas?.
7) ¿Qué eventos puede tener el sistema del punto 6?. (Graficar en casa con DCU)
8) Pensar un ejemplo para aplicar el patrón singleton.




lunes, 7 de julio de 2008

Codificación en C++ del Patrón Singleton

Con el patrón singleton nos aseguramos que exista una sola instancia de la clase y podemos acceder a esta de forma global. Siempre debemos respetar el objetivo de la programación orientada a objetos y no colocar variables e instrucciones sueltas en diferentes partes del programa, esto quiere decir que el objetivo del patrón no puede estar disperso sino concentrado en la codificación de la clase.


La clase debe tener un método y una propiedad estática

(Estatico= en C++ static, podemos llamar a cualquier método o usar una propiedad sin tener la necesidad de crear un objeto, por ejemplo:

class CAuto
{
int codigoAuto;
public:
static void m_arrancar();

};

void m_arrancar()
{
cout << "El auto arranca" <<; }

//podemos invocar el método m_arrancar() sin tener que crear el //objeto por ejemplo:

CAuto::m_arrancar(); // así de simple sin tener que crear un objeto.

*tener en cuenta las restricciones de la utilización de static :


Volviendo al tema del patrón singleton, un ejemplo en C++

#include
#include


class CPrograma
{
public:
static CPrograma * VerificarInstancia();
ProbamosInstancia();

~CPrograma(){ cout << "Acá se destruye el programa";
}

protected:
// Constructor
CPrograma() {}
private:
static CPrograma * m_pVerificar;


};


CPrograma * CPrograma::m_pVerificar = 0;


CPrograma * CPrograma::VerificarInstancia()
{

if (!CPrograma::m_pVerificar)
{

cout << "El Objeto Programa se cargó con exito"<<>
CPrograma::m_pVerificar = new CPrograma();
return CPrograma::m_pVerificar;
}
else
{
cout << "El Administrador no permite cargar el programa dos veces" <<>
}


}


CPrograma::ProbamosInstancia()
{
cout << "Acá podemos agregar el codigo para la ejecución del programa" <<>
cout << "Recordar que el patrón singleton permite la creación de un solo objeto" <<>
system("calc.exe");

}



int main()

{
//CPrograma Oprograma = new CPrograma(); // da error porque no se puede crear
//un objeto con el acceso protegido al constructor

CPrograma * OPrograma = CPrograma::VerificarInstancia();
CPrograma * O1Programa = CPrograma::VerificarInstancia(); //Se intenta crear un nuevo objeto
//y el patrón singleton lo impide
OPrograma->ProbamosInstancia();

delete OPrograma;
system("pause");
return 0;

}



martes, 1 de julio de 2008

¿Cómo se clasifican los patrones?

Podemos clasificar a los patrones según el propósito que tienen en tres grupos principales
  1. Patrones de creación.
  2. Patrones estructurales.
  3. Patrones de comportamiento.

1) Los patrones de creación son aquellos que se utilizan para la creación de instancias de las clases y nos plantean soluciones documentadas a algunos problemas.
Patrones de creación: Singleton, Abstract Factory. Factory Method

2) Los patrones estructurales son aquellas soluciones documentadas para las relaciones entre clases, conbinación y formación de estructuras mayores. podemos mencionar a Adapter, Composite, Decorador. Facade. Proxy.

3) Los patrones de comportamiento son aquellas soluciones documentadas para la cooperación entre clases y la interacción de las mismas.
Adapter, Composite, Decorador. Facade. Proxy.






patrones de diseño

Patrones de diseño

Los patrones de diseño son soluciones documentadas a problemas clásicos surgidos en la construcción de sistemas orientados a objetos. Un patrón es una buena solución documentada a un problema comúm.
Un patrón tiene un nombre; describe una solución independiente del lenguaje con diagramas UML y pseudo código (También se suele ejemplificar en lenguajes populares como C++, Java y Smaltalk)
y finalmente informa de consecuencias en la aplicación del patrón (costos y beneficios, ya que en algunos casos, ciertos patrones son mutuamente excluyentes, y la aplicación de uno u otro varía en función del contexto el criterio del programador)
Por Diego Ruiz