Windows7

Páginas: 10 (2403 palabras) Publicado: 1 de agosto de 2012
Clases y objetos en C++
Introduccion
A lo largo del curso nos hemos encontrado con varias situaciones en las que era necesario trabajar con datos para los que no exist´ un tipo predefinido adecuado. Por ıa ejemplo, programas que deb´ procesar n´meros racionales, naipes en un juego de carıan u tas, fichas de clientes, listas de nombres, etc. La soluci´n que hemos adoptado hasta el o momento esdefinir un nuevo tipo, normalmente una estructura (struct), y definir funciones y procedimientos que procesaran tales estructuras. Esta soluci´n presenta varios o inconvenientes que ilustraremos a continuaci´n. o Supongamos que vamos a escribir un programa C++ en el que necesitamos procesar fechas. C++ carece de un tipo predefinido adecuado para representar las fechas, de manera que decidimos definir untipo TFecha de la siguiente manera: struct TFecha { int dia; int mes; int anyo; }; Adem´s de definir la estructura TFecha, debemos definir funciones y procedimientos que a soporten operaciones b´sicas sobre este tipo. Por ejemplo, podemos incluir en nuestro a programa las siguientes declaraciones: // operaciones basicas para el tipo TFecha bool laborable(const TFecha f); bool festivo(const TFecha f);void manyana(TFecha& f); 1 // 1..31 // 1..12 // 2000...2999

E.T.S.I. Telecomunicaci´n o

Laboratorio de Programaci´n 2 o

void ayer(TFecha& f); int dias_entre(const TFecha f1, const TFecha f2); Ser´ deseable que una vez que hemos definido el tipo TFecha y sus operaciones b´sicas, ıa a este nuevo tipo se pudiera emplear como si fuera un tipo predefinido de C++. Por desgracia, esto no es as´La soluci´n adoptada presenta una serie de inconvenientes. ı. o En primer lugar, no hay forma de prohibir a otros programadores el acceso a los componentes de la estructura que implementa el tipo TFecha. Cualquier programador puede acceder de forma directa a cualquier campo y modificar su valor. Esto puede hacer los programas m´s dif´ a ıciles de depurar, pues es posible que estos accesos directosa la estructura no preserven la consistencia de los datos. Por ejemplo, un programador puede escribir una funci´n como la siguiente: o void pasado_manyana(TFecha& f) { f.dia= f.dia+2; } Es f´cil ver que la funci´n pasado_manyana puede dar lugar a fechas inconsistentes como a o el 30 de febrero de 2002. El programador ha olvidado que “pasado ma˜ana” puede ser “el n mes que viene” o incluso “el a˜oque viene”. Si todos los accesos directos a los campos n de TFecha los realiza el programador que defini´ el tipo y nos encontramos con una fecha o inconsistente, el error debe estar necesariamente localizado en alguna de las operaciones b´sicas del tipo. a Otro problema que se deriva de permitir el acceso directo a la estructura es que los programas se vuelven m´s dif´ a ıciles de modificar.Supongamos que decidimos alterar la estructura interna del tipo TFecha modificando el tipo del campo mes, a˜adiendo un tipo n enumerado para los meses: enum TMes {enero, febrero,..., noviembre, diciembre}; struct TFecha { int int }; Si otro programador hab´ escrito una funci´n como la siguiente: ıa o 2 dia; anyo; // 1..31 // enero...diciembre // 2000...2999 TMes mes;

Clases y objetos en C++

voidmes_que_viene(TFecha& f) { f.mes= (f.mes % 12 ) + 1; } ´sta dejar´ de compilar. Si todos los accesos directos a TFecha se han realizado en las e a operaciones b´sicas, s´lo ´stas necesitan ser modificadas. a o e Finalmente, otro inconveniente de definir un nuevo tipo mediante una estructura y una serie de operaciones b´sicas es la falta de cohesi´n. No hay forma de ver el tipo a o TFecha como untodo, como un conjunto de valores y una serie de operaciones b´sicas a asociadas. En concreto, no hay forma de establecer expl´ ıcitamente la relaci´n entre el tipo o TFecha y sus operaciones b´sicas. Suponemos que la funci´n festivo es una operaci´n a o o b´sica del tipo TFecha simplemente porque tiene un argumento de este tipo. Pero, ¿c´mo a o sabemos si pasado_manyana es o no una operaci´n...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Windows7
  • Windows7
  • windows7
  • Implementacion De Windows7
  • Windows7 P1
  • Instalacion de windows7
  • novedades de windows7
  • TIC windows7

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS