Metodología MVC

Embed Size (px)

DESCRIPTION

Metodología MVC

Text of Metodología MVC

Coordinacin del rea de Programacin

Metodologa usando MVC y POO con C++

Coordinacin del rea de Programacin

Esquema Estructuras de Control Introduccin

Anlisis Diseo Desarrollo Prueba

Coordinacin del rea de Programacin

Introduccin de Control Estructuras

Programar es elaborar un producto (en este caso es un software), y por tanto, Es preciso cumplir una serie de etapas de anlisis y diseo que permitan el logro de los requerimientos indicados por el cliente. Adems, en la medida que se hacen cada vez ms complejos los programas, un buen diseo permitir lograr ms rpidamente la solucin.

Coordinacin del rea de Programacin

AnlisisEntradas Salidas

Proceso

Para lo cual es importantsimo LEER las veces que sea necesario el planteamiento del problema y si es posible consultar al cliente o usuario final

Coordinacin del rea de Programacin

Anlisis

Entradas: Con qu datos se cuenta o qu se conoce en el enunciado?

Estructuras de Control

Salidas: Cul es el requerimiento o qu se desea?Proceso: A groso modo cmo lograr la salida teniendo una entrada dada (frmulas, lgica).Para consultar al cliente es recomendable usar datos de prueba, los cuales permitirn aclarar las dudas sobre el planteamiento del problema

Coordinacin del rea de Programacin

Anlisis usando Tabla de Prueba Estructuras de Control En los encabezados de las columnas de dicha

tabla deben ir los identificadores de los valores de entradas, de los intermedios y de las salidas. En las filas deben ir los valores que podran tomar las entradas, y los resultados que produciran en las variables intermedias y de salidas.Dicha tabla es posible que sea ms entendible por el cliente que un diseo ms avanzado o la programacin como tal

Coordinacin del rea de Programacin

Enunciado

Estructuras estudiantes de una seccin su de Control Se conoce de cada uno de loscedula y nota final. Se desea conocer por cada estudiante su condicin, sabiendo que si tiene nota mas de 80 es Excelente, entre 60 y 80 ambos inclusive es Bueno, entre 48 y 59 ambos inclusive es Suficiente, entre 30 y 48 es Deficiente y sino es Malo. Adems, por la seccin se quiere saber el porcentaje de aprobados y el porcentaje de aplazados.

Coordinacin del rea de Programacin

Entradas: cdula (long) y nota (float) Salidas: Por estudiante -> Condicion Estructuras de Control Por Seccion: Porc. Aprobados y Porc. Aplazados Proceso: Condicion: si (nota > 80) Excelente sino si (nota >= 60) Bueno sino si (nota >= 48) Suficiente sino si (nota > 30) Deficiente sino Malo PorcAprob = cont_aprob * 100 / Cont_Tot PorcAplaz = cont_aplaz * 100 / Cont_Tot Cont_Tot = cont_aprob + cont_aplaz

Coordinacin del rea de Programacin

Entradas

Parte 2 del Anlisiscedula 1111 2222 nota 90 40

Estructuras de ControlCondicinExcelente Deficiente Suficiente

Salida Clase Menor Valores Intermedios

cont_ cont_ aprob aplaz 1 1

33334444

Salidas por Seccin

Este anlisis Bueno 70 3 Cont_Tot = cont_aprob + cont_aplaz permitir que el PorcAprob = 3 * 100 / 4 = 75% cliente PorcAplaz = 1 * 100 / 4 = 25% diga si vas bien

50

2

Coordinacin del rea de Programacin

Diseo1- Resalta las entidades que participan, las mismas son candidatas a clases

Se conoce de cada uno de los estudiantes de una seccin su cedula y nota final. Se desea conocer por cada estudiante su condicin, sabiendo que si tiene nota mas de 80 es Excelente, entre 60 y 80 ambos inclusive es Bueno, entre 48 y 59 ambos inclusive es Suficiente, entre 30 y 48 es Deficiente y sino es Malo. Adems, por la seccin se quiere saber el porcentaje de aprobados y el porcentaje de aplazados.

2- Los valores de entrada son propiedades o caractersticas de un Estudiante, luego son atributos de la clase menor

cedula y nota sern atributos de la clase Estudiante, pues Seccin no tiene esas carctersticas

Coordinacin del rea de Programacin

Diseo3- La entidad que puede dar respuesta al requerimiento tambin es una clase

Las salidas que se requieren tanto por el Estudiante como por la Seccin, sern valores calculados y por consiguiente mtodos de la clase respectiva. As, Condicin ser un mtodo de la clase Estudiante.

4- Los clculos por la Seccin son mtodos de la clase Seccion

PorcAprob = cont_aprob * 100 / ContTotal PorcAplaz = cont_aplaz * 100 / ContTotal ContTotal = cont_aprob + cont_aplaz if (nota >= 48) cont_aprob++ else cont_aplaz++

5- Este razonamiento es una excelente abstraccin del mtodo Seccion.ProcesarEst()

Coordinacin del rea de Programacin

Diseo

6- Ahora si podemos construir el diagrama de clases. En este caso con relacin de uso y aplicando el patrn MVC

Como se pide la condicin del estudiante, esa es una salida por la clase menor o clase parte, por lo tanto debe ser una relacin de usoMEstudiante - cedula : long - nota : float + MEstudiante() + MEstudiante(c:long,n:float) + SetCedula (c: long): void + SetNota (n: float) : void + GetCedula (): long + GetNota(): float + Condicion(): stringMSeccion - cont_aprob: int - cont_aplaz: int + MSeccion() + PorcAprob():float + PorcAplaz(): float + ContTotal (): int + ProcesarEst (e: MEstudiante): void

Coordinacin del rea de Programacin

Diseo

En el patrn MVC mejorado, la Vista y el Modelo no se comunican directamente, solo a travs del Controlador Se encarga de las operaciones de entrada y salida

MODELOSe encarga de la lgica en s del problema

VISTA

CONTROLADOR

Se encarga de controlar y comunicar el Modelo con la Vista

Coordinacin del rea de Programacin

Diseo

En Programacin orientada a objeto, todo debe estar en funcin de objeto por ello, aplicaremos el patrn MVC

MEstudiante - cedula : long - nota : float + MEstudiante() + SetCedula (long): void + SetNota (n: float) : void + GetCedula (): long + GetNota(): float + Condicion(): string

En el patrn de diseo MVC a esta parte del diagrama de clases se le coloca una M delante del nombre porque corresponden al Modelo.

MSeccion - cont_aprob: int - cont_aplaz: int + MSeccion() + PorcAprob():float + PorcAplaz(): float + ContTotal (): int + ProcesarEst (e: MEstudiante): void

Coordinacin del rea de Programacin

DiseoVEstudiante

+ VEstudiante() + LeerCedula() : long + LeerNota() : float + ImprimirEstudiante (c: long, cond: string) : void VSeccion

En MVC esta parte del diagrama de clases corresponde a la Vista por eso le pondremos una V delante del nombre

+ VSeccion() + ImprimirSeccion(porc_aprob:float, porc_aplaz: float):void

Coordinacin del rea de Programacin

Controlador - mestud : MEstudiante - mseccion: MSeccion - vestud : VEstudiante - vseccion : VSeccion + Controlador() + ProcesarSeccion() : voidEn MVC esta parte del diagrama de clases corresponde al Controlador, que es quien tiene la lgica que iba en el cuerpo principal o main

#include #include #include "Controlador.h" //Incluye la clase Controlador using namespace std;

int main(){ Controlador control;control.ProcesarSeccion(); return 0; }Quedando el cuerpo principal del programa solo con la llamada al Controlador

Coordinacin del rea de Programacin

Diagrama de Clases CompletoMestudiante- cedula: long - nota: float +MEstudiante() +MEstudiante(long, float) + SetCedula(c:long): void + SetNota(n: float): void + GetCedula(): long + GetNota( ):float + Condicion():string+ VSeccion() + ImprimirSeccion (porc_aprob: float, porc_aplaz: float): void

VEstudiante VSeccion+ VEstudiante() + LeerCedula(): long + LeerNota(): float + ImprimirEstudiante (c: long, cond: string): void

MSeccion - cont_aprob: int - cont_aplaz: int + MSeccion() + ProcesarEst(e: MEstudiante): void + ContTotal(): int + PorcAprob(): float + PorcAplaz(): float Controlador - mestud: MEstudiante - vestud: VEstudiante - mseccion: MSeccin - vseccion: Vseccin + Controlador() + ProcesarSeccion(): void

Coordinacin del rea de Programacin //Interfaz Clase MEstudiante #ifndef MESTUDIANTE_H #define MESTUDIANTE_H #include using namespace std; class MEstudiante{ private: long cedula; float nota; public: MEstudiante(); MEstudiante(long, float); void SetCedula(long); void SetNota(float); long GetCedula(); float GetNota(); string Condicion(); }; #endif //Implementacin clase Mestudiante #include "MEstudiante.h" MEstudiante :: MEstudiante(){} MEstudiante :: MEstudiante(long c, float n){ cedula = c; nota = n; } void MEstudiante :: SetCedula(long c){ cedula = c; void MEstudiante :: SetNota(float n) { nota = n; } float MEstudiante :: GetNota() } long MEstudiante :: GetCedula(){ { return nota; return cedula; } } string MEstudiante :: Condicion(){ if (nota > 80) return " Excelente "; else if (nota >= 60) return " Bueno "; else if (nota >= 48) return " Suficiente "; else if (nota > 30) return " Deficiente "; else return " Malo ";

Coordinacin del rea de Programacin //Interfaz clase Mseccin #ifndef MSECCION_H #define MSECCION_H #include "MEstudiante.h" class MSeccion { private: int cont_aprob, cont_aplaz; public: MSeccion(); void ProcesarEst(MEstudiante e); float PorcAprob(); float PorcAplaz(); int ContTotal(); }; #endif//Implementacin clase Mseccin #include "MSeccion.h" MSeccion :: MSeccion(){ cont_aprob = cont_aplaz = 0; } void MSeccion :: ProcesarEst(MEstudiante e){ if (e.GetNota() >= 48) ++cont_aprob; else ++cont_aplaz ; } float MSeccion :: PorcAprob(){ if (ContTotal() == 0) return 0; else return cont_aprob*100 / ContTotal(); } float MSeccion :: PorcAplaz(){ if (ContTotal() == 0) return 0; else return cont_aplaz*100 / ContTotal(); }

int MSeccion :: ContTotal(){ return cont_aprob + cont_aplaz; }

Coordinacin