PDF de programación - Capítulo VI: DOO (Parte I)

Imágen de pdf Capítulo VI: DOO (Parte I)

Capítulo VI: DOO (Parte I)gráfica de visualizaciones

Publicado el 19 de Enero del 2019
487 visualizaciones desde el 19 de Enero del 2019
1,1 MB
83 paginas
Creado hace 9a (07/11/2014)
Capítulo VI: DOO
(Parte I)

[email protected] (C-305)

DOO

 AOO (describir) & DOO (solución)
 Implementar las especificaciones con eficiencia y fiabilidad
 Herramientas: Diagramas de interacción & DCD (en paralelo)
 DOO

 Aplicar principios de asignación de responsabilidades
 Aplicar patrones



RequisitosDiseñoImplementaciónPruebaIntegraciónPruebas de sistemaIteración iRequisitosDiseñoImplementaciónPruebaIntegraciónPruebas de sistemaIteración i+14 semana (por ejemplo)El sistema crece encada iteracióntiempoRequisitosDiseñoImplementaciónPruebaIntegraciónPruebas de sistemaRequisitosDiseñoImplementaciónPruebaIntegraciónPruebas de sistemaIteración iRequisitosDiseñoImplementaciónPruebaIntegraciónPruebas de sistemaIteración i+14 semana (por ejemplo)El sistema crece encada iteracióntiempo Procedimiento DOO

 Pasos

1.

Identificar las clases que participan en la solución del paquete
1. Primera vez en el Modelo del dominio.

1. De relaciones semánticas a asociaciones de “necesito conocer”.
Ingeniería inversa de la iteración anterior.

2.

2. Asignar las responsabilidades con los diagramas de interacción.

1. Create()
2. Acceso (setX(), getX())
3. Mensaje a multiobjetos se mandan al contenedor

3. Dibujar DCD

1.

Indicar las visibilidades y las asociaciones



 Ahora se emplea toda la notación de UML

Visibilidad

 Para utilizar un servicio se requiere la visibilidad del objeto

receptor (el emisor manda un mensaje al receptor)
1. De atributo: la más empleada en POO <<association>>
2. De parámetro: el receptor es pasado como un argumento

3.

<<parameter>>
Local: se declara el receptor en algún servicio del emisor
<<local>>

4. Global: el receptor es declarado global. Uso del patrón GoF

Singleton. <<global>>

 Navegabilidad flujo de los datos con visibilidad
 De atributo se refleja con la asociación, el resto se

representa con una relación de dependencia

Ejemplo de visibilidades



Del DOO hacia la Programación

 Modelo de

Implementación:

entrada DCD y

los

diagramas de interacción.

 Trabajo no trivial. Menos productivo en caso de no

utilizar el UP (guía de principio a fin).

 Transformación

 Definiciones de las clases desde los DCDs

 Definiciones de

los métodos desde

los diagramas de

interacción.

 XP (eXtreme Programming)

 Código de test, luego código de producción

 De la menos a la más acoplada

Ejemplo: Respuesta en frecuencia (1)

Ejemplo 2.2
Diseñar una aplicación que entregue la respuesta en frecuencia de los filtros analógicos
lineales. Una vez capturado el circuito eléctrico, se pasará a determinar cual es la
función de transferencia en el dominio de la frecuencia y se presentará la respuesta en
frecuencia en diagrama de Bode.
Ejemplo 2.4
Determinar las características para la aplicación de Respuesta en Frecuencia enunciada
en el ejemplo 2.2. Utilícese un esquema de dos niveles.













Captura del circuito

Interacción con el usuario para determinar el circuito analógico
Determinar la FDT del circuito lineal.

Análisis en frecuencia

Parámetros de la respuesta en frecuencia (Rango de frecuencia, intervalo en el
cálculo, lineal o en décadas)
Presentación gráfica del diagrama de Bode.



Ejemplo: Respuesta en frecuencia (2)

Actores: Ingeniero electrónico Descripción: El ingeniero elige el tipo de filtro lineal e introduce los valores de los componentes analógicos, luego elige los parámetros de la respuesta en frecuencia y la aplicación le devolverá la respuesta en frecuencia en un diagrama de Bode Precondiciones: El ingeniero conoce y sabe todos los parámetros del filtro lineal y de la respuesta en frecuencia. Poscondiciones: Se presentará en diagrama de Bode la respuesta en frecuencia del filtro capturado Curso normal: 1.0.El ingeniero introduce el circuito eléctrico (mirar caso de uso incluido de capturar el circuito) 2.0. La aplicación pide el rango de frecuencias y el intervalo aplicado en la determinación de la respuesta en frecuencia. Además se le solicitará si desea una presentación en decibelios o lineal. 3.0. La aplicación calcula la FDT del circuito y determina la respuesta en frecuencia. 4.0. Los resultados son presentados en un diagrama de Bode (módulo/argumento). Curso alternativo: 1.1 El circuito es capturado desde un fichero de descripción de componentes electrónicos tipo * CIR Excepciones: 3.0.E.1 Hay algún error de desbordamiento o de división por cero en el cálculo de la respuesta en frecuencia. Se le notificará del error matemático al usuario Inclusiones: Captura del circuito Prioridad: Máxima. Núcleo del sistema. Frecuencia de uso: Podría ser casi continuo. Reglas de negocio: Requerimientos especiales: Suposiciones de partida: Notas y documentos: Documento de adquisición de los circuitos Ejemplo: Respuesta en frecuencia (3)

Ejemplo: Respuesta en frecuencia (4)

Ejemplo: Respuesta en frecuencia (5)

Ejemplo: Respuesta en frecuencia (6)

Ejemplo: Respuesta en frecuencia (7) (Cód. Test)

cin >> eleccion;

void VistaFrecuenciaELAI::introducirCircuito(void){
cout << "Elegir entre:\n1.Filtro paso bajo primer orden.\n2.Filtro paso alto";



}
void VistaFrecuenciaELAI::introducirParametrosRespFr(void){


int eleccion;
elTipo = eleccion == 1 ? LF_1 : HF_1;
cout << "\nValor de la resistencia: "; cin
cout << "\nValor del condensador: "; cin >> condensador;
elCoordinador.ponerCircuito(elTipo,resistencia,condensador);

cout << "\nCual es la frecuencia inicial [Hz]: "; cin >> frecInicial;

>> resistencia;



cout << "\nCual es la frecuencia final [Hz]: "; cin >> frecFinal;
cout << "\nCual es el intervalo empleado para el cálculo [Hz]: ";
cin >> frecIntervalo;
elCoordinador.ponerParamResFr(frecInicial,frecFinal,frecIntervalo);
//Visualizar los resultados
std::vector<double> elVectorModulo;
elCoordinador.getModuloRespFr(elVectorModulo);

for (unsigned i =0; i<elVectorModulo.size(); i++)

cout << "Pulsar cualquier tecla para finalizar";

std::cout<<elVectorModulo[i]<<std::endl;



}
void main(void){



VistaFrecuenciaELAI laVista;
laVista.introducirCircuito();

laVista.introducirParametrosRespFr();


}


Ejemplo: Respuesta en frecuencia (8) (Cód. Prod.)


#include "FiltroLineal.h"
#include "RespuestaFrecuencia.h"

class CoordinadorFrecELAI
{



public:



FiltroLineal *pFiltro;
RespuestaFrecuencia *pRespFr;



};

int ponerCircuito(tipoFiltro ,float , float );
int ponerParamResFr(float,float,float);
int getModuloRespFr(std::vector<double> &);
~CoordinadorFrecELAI()
{if(pFiltro) delete pFiltro; if(pRespFr) delete pRespFr;}

pFiltro = new FiltroLineal(elTipo,resistencia,condensador);
return(0);

if (pFiltro == NULL) return (-1);
pRespFr = new RespuestaFrecuencia(frInicio,frFinal,frIntervalo,pFiltro);
return(0);

#include "../../include/Dominio/CoordinadorFrecELAI.h"
int CoordinadorFrecELAI::ponerCircuito(tipoFiltro elTipo,float resistencia, float condensador){


}
int CoordinadorFrecELAI::ponerParamResFr(float frInicio,float frFinal,float frIntervalo){



}
int CoordinadorFrecELAI::getModuloRespFr(std::vector<double> &elVectorModulo){



}

if (pRespFr == NULL) return (-1);
pRespFr->getModuloRespFr(elVectorModulo);
if(pFiltro) delete pFiltro;
if(pRespFr) delete pRespFr;
return (0);

Ejemplo: Respuesta en frecuencia (9) (Cód. Prod.)

#ifndef _POLINOMIO_INC_
#define _POLINOMIO_INC_
#include <vector>

class Polinomio
{
std::vector<double> coeficientes;
public:
Polinomio(){}
Polinomio(unsigned grado, double *pCoef){
for (unsigned i=0;i<=grado; i++)

}
double getCoeficiente(unsigned n)
{return( coeficientes[n]));}
};
#endif /*Polinomio.h*/

coeficientes.push_back(*(pCoef+i));

#ifndef _FDT_INC_
#define _FDT_INC_
#include "Polinomio.h"
class FDT
{
unsigned grado;
Polinomio numerador;
Polinomio denominador;
public:
FDT(unsigned n, double *pNum, double *pDen):
grado(n),numerador(n,pNum),denominador(n,pDen){}
unsigned getGrado(void){return grado;}
double getCoefNum(unsigned n)
{return n<=grado ? numerador.getCoeficiente(n) : 0;}
double getCoefDen(unsigned n)
{return n<=grado ? denominador.getCoeficiente(n) : 0;}
};
#endif /*FDT.h*/

Ejemplo: Respuesta en frecuencia (10) (Cód. Prod.)

tipoFiltro elTipo;
FDT *pFDT;

#include "FDT.h"
typedef enum{LF_1,HF_1} tipoFiltro;

class FiltroLineal
{


public:



};

FiltroLineal(tipoFiltro, float, float);
unsigned getGradoFiltro(void){return pFDT->getGrado();}
double getCoefNum(unsigned n)
{return pFDT != NULL ? pFDT->getCoefNum(n) : 0;}
double getCoefDen(unsigned n)
{return pFDT != NULL ? pFDT->getCoefDen(n) : 0;}
~FiltroLineal(){if(pFDT) delete pFDT;}

#include "../../include/Dominio/FiltroLineal.h"
FiltroLineal::FiltroLineal(tipoFiltro tipo, float resistencia, float condensador)
{



pFDT = new FDT(1,numerador,denominador);
}

elTipo = tipo;
double numerador[2]; double denominador[2];
if (elTipo == LF_1) {

}
else{

}
denominador[0]= 1;denominador[1]=resistencia*condensador;

numerador[0]=0; numerador[1]=resistencia*condensador;

numerador[0]=1; numerador[1]=0;

Ejemplo: Respuesta en frecuencia (11) (Cód. Prod.)

#include <vector>
#include "FiltroLineal.h"
class RespuestaFrecuencia
{



public:



};

float freInicio, freFinal, freIntervalo;
std::vector<double> modulo;
std::vector<double> argumento;
double calcularModulo(float,FiltroLineal *);
double calcularArgumento(float,FiltroLineal *);

RespuestaFrecuencia(float,float,float,FiltroLineal *);
float getFrInicio(void){return freInicio;}
float getFrFinal(void){return freFinal;}
float getFrIntervalo(void){return freIntervalo;}
void getModuloRespFr(std::vector<double> &elVectorModulo)


{elVectorModulo =
  • Links de descarga
http://lwp-l.com/pdf14894

Comentarios de: Capítulo VI: DOO (Parte I) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad