Examen de junio de Informática Industrial (04/05)

Documentos relacionados
ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Enero 2016

3.- Desarrollar las clases Pluma, Agenda y Movil escribiendo la menor cantidad de código posible sin por ello perder claridad.

, , , Indicar la salida por pantalla (2 puntos-20 minutos) Indicar la impresión por pantalla del siguiente programa:

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015

3. Indicar la salida por pantalla del último for de la función main dado el siguiente código c++: (2 puntos-20 minutos)

Prof. Dr. Paul Bustamante

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Instituto Tecnológico de Celaya

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

3.- Resolución a) Salida por pantalla A B B says Ladra! C C says Ladra! D

CURSO 2º GRUPO Junio 2011

1. Juego del Ahorcado

Prof. Dr. Paul Bustamante

3. Indicar la salida por pantalla (2 puntos-10 minutos)

Variantes del conceptos de clases(1/2)

Capítulo IV: UML estructural.

Examen. Programación II

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Clases abstractas e interfaces en Java

Tema: Plantillas en C++.

HERENCIA. TCuenta. - int numcuenta - string nomcliente - double saldo - double tipointeres

Prof. Dr. Paul Bustamante

POO PROGRAMACIÓN ORIENTADA A OBJETOS

Impresión por pantalla

La forma general que tiene un condicional (una pregunta) es la siguiente:

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e

Introducción general al Lenguaje C (2010/2011)

Pauta control 2 CC10B

Escuela Politécnica Superior de Elche

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Examen de Fundamentos de Computadores y Lenguajes

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Estructuras de Datos Declaraciones Tipos de Datos

UML dinámico y de implementación. (C-305)

Prof. Dr. Paul Bustamante

Introducción a C++ Índice

2. Problema de Algoritmia (5 puntos - 15 minutos)

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Autor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Prof. Dr. Paul Bustamante

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Capitulo 3. Programación Estructurada

Prof. Dr.Paul Bustamante

Seminario C++ Introducción a la programación orientada a objetos. Parte IV v Cristina Cachero Pedro J. Ponce de León

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Estructuras de control selectivas

Polimorfismo de tipo (en la herencia)

Métodos de Ordenamiento

2. Problema de Algoritmia (5 puntos - 15 minutos)

Construcciones del Lenguaje Java

Contenido. P á g i n a 1

Java interface y extensibilidad

Introducción a Java LSUB. 30 de enero de 2013 GSYC

INSTITUTO TECNOLOGICO DE VILLAHERMOSA

Programación Estructurada. Sesión 2:El lenguaje de programación C

2ª Parte: Problemas (5 puntos sobre 10)

Cátedra I Informática Autor I Carlos Bartó

Tema 3. Herencia. Programación Avanzada. Jorge Badenas

Introducción a la Programación orientada a objetos con C++

1. (0.5 puntos) Indicar y justificar claramente cuál es el valor final de los datos miembro x, y, z.

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Herencia y polimorfismo

3. Indicar la salida por pantalla (2 puntos-15 minutos)

Prof. Dr. Paul Bustamante

Agustín J. González ELO329

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno

Tema: Funciones y Procedimientos en C#.

Examen concurrencia Nov 2011

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Soluciones Ejercicios Tema 1

Derechos de Acceso: COMPOSICION

TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS

Prof. Dr. Paul Bustamante

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Sobre Carga de Operadores

APUNTES PROII 2º PARCIAL.

Práctica 11e. Práctica 11e. José M. Ordax

Cálculo del histograma de una imagen

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Funciones: Pasos por Referencia Recursividad

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

8- LEX-Expresiones regulares

Transcripción:

3 Indicar y explicar el resultado de la ejecución del siguiente código: (10 minutos) ÆLQFOXGHÃLRVWUHDPK!Ã ÆLQFOXGHÃPDWKK!Ã FODVVÃYHFWRUÃ ^Ã SXEOLFÃ YHFWRULQWÃQ GRXEOHÃY 18//Ã double operator[](double ind); ayhfwru^ghohwhã>@ãydoruhv`ã SULYDWHÃ LQWÃQXPÃ GRXEOHÃYDORUHVÃ `Ã YHFWRUYHFWRULQWÃQGRXEOHÃYÃ ^Ã YDORUHVÃ ÃQHZÃGRXEOH>Q@Ã QXP QÃ IRULQWÃL LQLYDORUHV>L@ Y>L@Ã `Ã double vector::operator [](double ind) ^Ã GRXEOHÃWHPSÃ LQWÃVXSLQIÃ Ã LQI LQWIORRULQGÃHQWHURÃUHGRQGHDGRÃDEDMRÃ VXS LQWFHLOLQGÃHQWHURÃUHGRQGHDGRÃDUULEDÃ LILQI!QXPLQI QXPÃ LIVXS!QXPVXS QXPÃ LILQILQI Ã LIVXSVXS Ã LILQIVXSÃ WHPS VXSLQGYDORUHV>LQI@LQGLQIYDORUHV>VXS@Ã HOVHÃWHPS YDORUHV>LQI@Ã UHWXUQÃWHPSÃ `Ã YRLGÃPDLQYRLGÃ ^Ã GRXEOHÃYDO>@ ^`Ã YHFWRUÃPLYHFWRUYDOÃ IRULQWÃL LLÃ cout<<mivector[i*0.2]<<endl; `Ã

4. Ejercicio de programación (45 minutos) El código adjuntado corresponde a la funcion main y a la clase colorrgb que se utilizan en una sencilla base de datos de figuras geométricas. Todas las figuras geométricas heredan de la clase abstracta REMHWR*HRPHWULFR la cual a demás de la interfaz común incluye la información de la posición de su centro de gravedad y el color de la figura. Esta interfaz tiene los siguientes métodos: void pedir() void imprimir() double area() void setcolor(colorrgb) colorrgb getcolor() Se pide: 1.-Representar gráficamente el diagrama de clases. 2.-Escribir el codigo de la clase objetogeometrico. 3.-Escribir el codigo de las clases circulo, cuadrado y triangulo. Nota: Se valorará especialmente respetar el correcto encapsulamiento, evitar repetir código, y la construcción correcta de los objetos. #include <iostream.h> class colorrgb float r,g,b; colorrgb(float mr,float mg, float mb )setcolor(mr,mg,mb); void setcolor(float mr, float mg, float mb) if(mr>1.0f)mr=1.0f; if(mg>1.0f)mg=1.0f; if(mb>1.0f)mb=1.0f; if(mr<0.0f)mr=0.0f; if(mg<0.0f)mg=0.0f; if(mb<0.0f)mb=0.0f; r=mr;g=mg;b=mb; void getcolor(float &mr,float &mg,float&mb)mr=r;mg=g;mb=b; ; void main() objetogeometrico *lista[100]; int num=0,sel=0; while((sel!=4)&&(num<100)) cout<< \n1.-circulo\n2.-cuadrado ; cout<< \n3.-triangulo\n4.-salir"<<endl ; cin>>sel; switch(sel) case 1: lista[num]=new circulo; break; case 2: lista[num]=new cuadrado; break; case 3: lista[num]=new triangulo; break; case 4: cout<<"se imprimira ahora la informacion"<<endl; break; default: cout<<"seleccion Erronea"<<endl; if((sel>0)&&(sel<4)) lista[num]->pedir(); num++; double area=0; for(int i=0;i<num;i++) lista[i]->imprimir(); area+=lista[i]->area(); cout<<"area Total:"<<area;

5. Ejercicio del Proceso Unificado (50 minutos) Para la aplicación informática de una sala de cine, se desea que un taquillero introduzca el número de localidades que desea un comprador y se le aplica el mejor descuento para el espectador. En esta primera versión se considera que las monedas pueden ser EUROS, DOLARES y LIBRAS. Por defecto, se considerará que el dinero se expresa en EUROS y el precio de butaca es de 5¼ÃLas políticas de ventas a introducir, en esta primera iteración, son: a- Si el día de la semana es miércoles se le aplicará un descuento del 50%. b- En cualquier día de la semana, la compra de tres entradas será al precio de dos. Esta política se aplica para número de localidades que sea múltiplo de tres. El arquitecto del programa ha realizado un primer borrador del diagrama de clase de diseño. Obviamente no está toda la información para la codificación. : Vista VentaLocalidades(Dinero, float) : VentaLocalidades getprecio(int) metodofabricacionprecios(fecha&, float) : IPrecioLocalidades getpreciototal(int, Dinero) Vista VentaLocalidades VentaLocalidades() getprecio() <<interface>> IPrecioLocalidades <<abstract>> getpreciototal() <<static>> metodofabricacionprecios() Fecha ismiercoles() DiaDelEspectador DiaDelEspectador() <<virtual>> getpreciototal() DosXTres DosXTres() <<virtual>> getpreciototal() Dinero cantidad : float eltipomoneda : TipoDinero operator=() setcantidad() getcantidad() settipo gettipo <<typedef>> TipoDinero

a) Implementar la clase Dinero (por defecto se considera que el tipo de moneda es el EURO). Dinero cantidad : float eltipomoneda : TipoDinero Dinero(valor : float, eltipo : TipoDinero) Dinero(elValor : Dinero&) operator=(elvalor : Dinero&) : Dinero& setcantidad(lacantidad : float) : void getcantidad( : void) : float settipodinero(eltipo : TipoDinero) : void gettipodinero( : void) : TipoDinero b) Para las estrategias de los precios se ha utilizado un interfaz, de manera que las políticas de ventas se puedan variar en el futuro. Realizar su implementación. <<interface>> IPrecioLocalidades <<abstract>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero <<static>> metodofabricacionprecios(hoy : Fecha&, descuento : float) : IPrecioLocalidades* DiaDelEspectador DiaDelEspectador(descuento : float) <<virtual>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero DosXTres DosXTres() <<virtual>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero c) Implementar la clase de Venta de Localidades VentaLocalidades eldiasemana : Fecha elpreciounitario : Dinero ppreciolocalidades : IPrecioLocalidades * VentaLocalidades(elPrecio : Dinero, descuento : float) getprecio(numerolocalidades : int) : Dinero

Resolución examen Ejercicio 3 Ejercicio 4 class objetogeometrico protected: double x,y; colorrgb color; objetogeometrico(double px=0, double py=0):x(px),y(py),color(0,0,0) virtual double area() =0; virtual void pedir() cout<<"introduce el CG: "; cin>>x>>y; virtual void imprimir() cout<<"cg: "<<x<<", "<<y<<endl; colorrgb getcolor()return color; void setcolor(colorrgb col)color=col; ; class circulo:public objetogeometrico double radio; circulo(double rad=0,double px=0,double py=0) :objetogeometrico(px,py),radio(rad) void pedir() void imprimir()cout<<"circulo"<<endl; double area()return 34.0;; ; class cuadrado:public objetogeometrico double radio; cuadrado(double rad=0,double px=0,double py=0) :objetogeometrico(px,py),radio(rad) void pedir() void imprimir()cout<<"cuadrado"<<endl; double area()return 34.0;; ; class triangulo:public objetogeometrico double radio; triangulo(double rad=0,double px=0,double py=0) :objetogeometrico(px,py),radio(rad) void pedir() void imprimir()cout<<"triangulo"<<endl; double area()return 34.0;; ; LQG LQI VXS 62/8&,Ï1 0 0 1 1 0,2 0 1 2 0,4 0 1 3 0,6 0 1 4 0,8 0 1 5 1 1 1 6 1,2 1 1 6 1,4 1 1 6 1,6 1 1 6 1,8 1 1 6 2 1 1 6

Ejercicio 5 a) Implementación de la clase dinero Dinero cantidad : float eltipomoneda : TipoDinero Dinero(valor : float, eltipo : TipoDinero) Dinero(elValor : Dinero&) operator=(elvalor : Dinero&) : Dinero& setcantidad(lacantidad : float) : void getcantidad( : void) : float settipodinero(eltipo : TipoDinero) : void gettipodinero( : void) : TipoDinero #ifndef _DINERO_INC_ #define _DINERO_INC_ typedef enum EURO, DOLAR, LIBRA TipoDinero; class Dinero TipoDinero eltipomoneda; float cantidad; : eltipomoneda(euro), cantidad(0) Dinero(float valor, TipoDinero eltipo): eltipomoneda(eltipo),cantidad(valor) Dinero(Dinero &elvalor) eltipomoneda = elvalor.eltipomoneda; cantidad = elvalor.cantidad; Dinero& operator= (Dinero &elvalor) eltipomoneda = elvalor.eltipomoneda; cantidad = elvalor.cantidad; return(*this); ; void setcantidad(float lacantidad)cantidad=lacantidad; float getcantidad(void)return cantidad; void settipodinero(tipodinero eltipo)eltipomoneda=eltipo; TipoDinero gettipodinero(void)return eltipomoneda; #endif b) Implementación de las diferentes políticas <<interface>> IPrecioLocalidades <<abstract>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero <<static>> metodofabricacionprecios(hoy : Fecha&, descuento : float) : IPrecioLocalidades* DiaDelEspectador DiaDelEspectador(descuento : float) <<virtual>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero DosXTres DosXTres() <<virtual>> getpreciototal(numerolocalidades : int, elpreciounitario : Dinero) : Dinero

#ifndef _OFERTAS_TAQUILLA_INC_ #define _OFERTAS_TAQUILLA_INC_ #include "Dinero.h" #include "Fecha.h" class IPrecioLocalidades virtual Dinero getpreciototal(int numerolocalidades, Dinero elpreciounitario) = 0; static IPrecioLocalidades *metodofabricacionprecios(fecha &, float); ; class DiaDelEspectador : public IPrecioLocalidades float eldescuento; friend class IPrecioLocalidades; DiaDelEspectador(float descuento): eldescuento(descuento) virtual Dinero getpreciototal(int numerolocalidades, Dinero elpreciounitario) Dinero elvalortotal; elvalortotal.setcantidad(elpreciounitario.getcantidad()*numerolocalidades*eldescuento); elvalortotal.settipodinero(elpreciounitario.gettipo); return (elvalortotal); ; class DosXTres : public IPrecioLocalidades friend class IPrecioLocalidades; DosXTres() virtual Dinero getpreciototal(int numerolocalidades, Dinero elpreciounitario) Dinero elvalortotal; int multiplosdetres = 0; for(int i=1;i<=numerolocalidades;i++) if( i%3 == 0) multiplosdetres++; int localidadessueltas = numerolocalidades - (multiplosdetres*3); elvalortotal.setcantidad(elpreciounitario.getcantidad()* (localidadessueltas+(multiplosdetres*2))); elvalortotal.settipodinero(elpreciounitario.gettipo); return (elvalortotal); ; #endif #include "includes/ventalocalidades.h" IPrecioLocalidades * IPrecioLocalidades::metodoFabricacionPrecios (Fecha &hoy, float descuento = 0) if ((hoy.ismiercoles() == true ) && (descuento > 100/3) ) return new DiaDelEspectador(descuento); else return new DosXTres; c) Implementación de la VentaTaquilla VentaLocalidades eldiasemana : Fecha elpreciounitario : Dinero ppreciolocalidades : IPrecioLocalidades * VentaLocalidades(elPrecio : Dinero, descuento : float) getprecio(numerolocalidades : int) : Dinero

#ifndef _VENTA_LOCALIDADES_INC_ #define _VENTA_LOCALIDADES_INC_ #include "Fecha.h" #include "Dinero.h" #include "OfertasTaquillas.h" class VentaLocalidades Fecha eldiasemana; Dinero elpreciounitario; float eldescuento; IPrecioLocalidades *ppreciolocalidades; VentaLocalidades(Dinero elprecio, float descuento) : elpreciounitario(elprecio),eldescuento(descuento) Dinero getprecio(int numerolocalidades) ppreciolocalidades = IPrecioLocalidades::metodoFabricacionPrecios(elDiaSemana,elDescuento); Dinero eldinero = ppreciolocalidades->getpreciototal(numerolocalidades,elpreciounitario) ; delete ppreciolocalidades; return(eldinero); ; #endifã