Vous êtes sur la page 1sur 37

INSTITUTO PLITECNICO NACIONAL

Escuela Superior de Ingeniera Mecnica y Elctrica Unidad Culhuacn

PROGRAMACIN ORIENTADA A OBJETOS (POO)

Grupo: 2EV1 Integrantes de equipo: Garca Espejel Brenda Victoria Miranda Chvez Alan Michel Profesor: Espinosa Hernndez Arturo

ndice
I Construccin de clases y objetos............................................................................................... 3 1.11 Estructuras ................................................................................................................................ 4 1.2 Clases ........................................................................................................................................... 6 1.3 Palabras reservadas ............................................................................................................... 7 1.4 Funciones miembro................................................................................................................. 9 1.4.1 Miembros de una clase ................................................................................................. 9 1.5 Resoluto de mbito............................................................................................................... 11 1.6 Constructor............................................................................................................................... 12 1.7 Destructor ................................................................................................................................. 14 II Template (palabra reservada) ................................................................................................. 16 2.1 Definicin .................................................................................................................................. 16 2.2 Declaracin ............................................................................................................................. 18 III Manejo de plantillas en el mbito de la programacion ................................................ 19 3.1 Turbo C, Borland ..................................................................................................................... 19 IV Anlisis y diseo ............................................................................................................................ 20 4.1 Resolucin de problemas ................................................................................................... 20 4.2 Codificacin explcita .......................................................................................................... 24 V Estructuras ........................................................................................................................................ 25 5.1 Apuntadores a estructuras ................................................................................................. 25 5.2 Reserva dinmica de memoria para los miembros de una estructura ............ 26 VI ALLOC.H .......................................................................................................................................... 27 VII Modelo de los objetos............................................................................................................... 28 VIII Abstraccin .................................................................................................................................. 29 XI Encapsulamiento.......................................................................................................................... 30 X Poliformismo .................................................................................................................................... 31 XI Herencia .......................................................................................................................................... 32 XII Mensajes de un objeto.............................................................................................................. 33 XIII Clase ............................................................................................................................................... 34 XIV Mtodos en las clases.............................................................................................................. 35 XV Estado de un objeto.................................................................................................................. 36 XVII Bibliografa .................................................................................................................................. 37 2

I Construccin de clases y objetos La POO ( Programacin Orientada a Objetos) se puede definir como un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una jerarqua de clases unidas mediante relaciones.. Existen tres importantes partes en la definicin: la programacin orientada a objetos: Utiliza objetos, no algoritmos, como bloques de construccin lgicos. Cada objeto es una instancia de una clase. Las clases se relacionan unas con otras por medio de relaciones de herencia.

Es importante remarcar que si alguna de estas caractersticas no se cumple no se trata de programacin orientada a objetos. La caracterstica ms importante de C++ es implementar clases. As, mientras que un ejemplar de un tipo predefinido lo hemos denominado siempre variable, un ejemplar de una clase lo denominaremos objeto. Por otra parte, si la programacin estructurada se interesaba primero por los procedimientos y despus por los datos, el diseo orientado a objetos se interesa en primer lugar por los datos.

1.11 Estructuras En programacin, una ESTRUCTURA de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulacin. Un dato elemental es la mnima informacin que se tiene en un sistema. Una estructura de datos define la organizacin e interrelacin de estos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones bsicas son: Alta, adicionar un nuevo valor a la estructura. Baja, borrar un valor de la estructura. Bsqueda, encontrar un determinado valor en la estructura para realizar una operacin con este valor, en forma secuencial o binario (siempre y cuando los datos estn ordenados).

Otras operaciones que se pueden realizar son: Ordenamiento, de los elementos pertenecientes a la estructura. Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.

Cada estructura ofrece ventajas y desventajas en relacin a la simplicidad y eficiencia para la realizacin de cada operacin. De esta forma, la eleccin de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operacin sobre los datos. La manera de declarar estas estructuras es fuera de todo bloque del programa principal, se constituye igual que un registro el cual se compone de un conjunto de datos, a continuacin se muestra como debe declararse una estructura. struct <nombre> { campo 1; campo 2; campo n; } variables;

De lo anterior podemos decir que: Nombre se refiere al nombre que se le va a dar al tipo de estructura a crear cuantos campos empleara y de que tipo ser cada uno de estos por lo que el nombre equivale a declarar un tipo especifico de datos, las variables se refiere a que una vez definida la estructura y sus campos estos debern manejarse mediante una variable que corresponda a ese tipo, cada campo deber declararse como se declaran la variable en un programa.

1.2 Clases Una clase es la estructura de un objeto, es decir, la definicin de todos los elementos de que est hecho un objeto. Un objeto es, por lo tanto, el "resultado" de una clase. En realidad, un objeto es una instancia de una clase, por lo que se pueden intercambiar los trminos objeto o instancia (o incluso evento). Una clase se compone de dos partes: Atributos (denominados, por lo general, datos miembros): esto es, los datos que se refieren al estado del objeto. Mtodos (denominados, por lo general, funciones miembros): son funciones que pueden aplicarse a objetos.

Una clase es un tipo definido por el usuario. La definicin de una clase especifica cmo son los objetos de esa clase; esto es, qu atributos definen el estado de cada objeto y qu operaciones permiten variar su estado. Ambos, atributos y operaciones, se denominan miembros de la clase. La definicin de una clase consta de dos partes. La primera est formada por el nombre de la clase precedido por la palabra reservada class. La segunda parte es el cuerpo de la clase encerrado entre llaves y seguido por un punto y coma o por una lista de identificadores, objetos de la clase, separados por comas. class nombreclase { cuerpo de la clase } lista de declaraciones ;

El cuerpo de la clase en general consta de especificadores de acceso (public, protected y prvate), atributos (datos miembro de la clase), mensajes (declaraciones de funciones miembro de la clase) y mtodos (definiciones de funciones miembro de la clase). Un mtodo implcitamente define un mensaje.

1.3 Palabras reservadas En programacin, las palabras reservadas son aquel grupo de identificadores (palabras) que no pueden ser utilizadas por el usuario para nombrar a: variables. funciones. procedimientos. objetosX elementos.

Generalmente esto se debe a que el propio lenguaje de programacin ya las utiliza, por esta razn, las palabras reservadas no pueden ser empleadas como identificadores definidos por el usuario. Las palabras reservadas son identificadores reservados predefinidos que tienen un significado especial y no se pueden utilizar como identificadores en sus programas.

Las palabras reservadas de C son las siguientes: abstract event namespace static as explicit new string base extern null struct bool false object switch break finally operator this byte fixed out throw case float override true catch for params try
7

char foreach private typeof checked goto protected uint class if public ulong const implicit readonly unchecked

continue in ref unsafe decimal int return ushort default interface sbyte

using delegate internal sealed virtual do is short volatile double lock

sizeof void else long stackalloc while enum

1.4 Funciones miembro Las funciones miembro de una clase definen las operaciones que se pueden realizar con sus datos miembro. Desde el punto de vista de la POO, el conjunto de todas estas funciones se corresponde con el conjunto de mensajes a los que los objetos de la clase pueden responder. Para declarar una funcin miembro de una clase en C++, proceda exactamente igual que para declarar cualquier otra funcin Generalmente, el cuerpo de una clase contiene slo los prototipos de sus funciones miembro, realizando las definiciones de las mismas justamente a continuacin en el propio fichero fuente o, lo que es ms comn, en otro fichero fuente. Para definir una funcin miembro fuera del cuerpo de la clase, hay que indicar a qu clase pertenece dicha funcin. Para ello hay que especificar el nombre de la clase antes del nombre de la funcin, separado del mismo por el operador de mbito (::). Esto es as porque puede haber diferentes clases que tengan funciones miembro con el mismo nombre.

1.4.1 Miembros de una clase Los miembros de una clase pueden ser variables de cualquier tipo y funciones, programacin orientada a objetos, a las variables generalmente se denomina datos miembro y a las funciones, funciones miembro de la clase. Los datos miembro constituyen la estructura interna de los objetos de la y las funciones miembro forman lo que se denomina interfaz o medio de acceso la estructura de los objetos. En general los miembros de una clase son los datos y mtodos de los que van a disponer todos los objetos de la misma.

Un ejemplo de cmo declarar una clase de nombre A que no tenga ningn miembro es la siguiente: class <nombreClase> { <miembros> }

Un miembro de una clase puede ser: public; un miembro declarado pblico es accesible en cualquier parte del programa donde el objeto de la clase en cuestin, sea accesible. private; un miembro declarado privado puede ser accedido solamente por las funciones miembro de su propia clase o por funciones amigas (friend) de su clase. En cambio, no puede ser accedido por funciones globales (funciones no miembro) o por las funciones propias de una clase derivada. protected; un miembro declarado protegido se comporta exactamente igual que uno privado para las funciones globales, pero acta como un miembro pblico para las funciones miembro de una clase derivada. En una clase puede haber cero o ms secciones pblicas, privadas o protegidas. Cada seccin de una clase finaliza donde comienza la siguiente. Si inicialmente no se define un especificador de acceso, la primera seccin es tratada como privada y se extiende hasta el primer especificador de acceso, o en su defecto, hasta la llave del final del cuerpo de la clase.

10

1.5 Resoluto de mbito Cualquier funcin miembro de una clase puede acceder a otro miembro de su misma clase. Los miembros privados de una clase, datos o funciones, son locales a la misma y slo pueden ser accedidos por las funciones miembro de su clase o por una funcin friend de la misma. Los miembros pblicos de una clase tambin son locales a la clase. Constituyen la interfaz pblica de la clase y pueden ser accedidos por las funciones miembro de su clase y por cualquier otra funcin del programa que defina un objeto o un puntero a un objeto de esa clase. Dicho de otra forma, un miembro pblico de una clase es local a su clase y slo es accesible:

A travs de un objeto de su clase o de una clase derivada de sta utilizando el operador"." A travs de un puntero a un objeto de su clase o de una clase derivada de sta utilizando el operador "->" A travs del nombre de su clase o de una clase derivada de sta utilizando el operador"::".

11

1.6 Constructor En C++, una forma de asegurar que los objetos siempre contengan valores vlidos es escribir un constructor. Un constructor es una funcin miembro especial de una clase que es llamada automticamente siempre que se declara un objeto de esa clase. Su funcin es crear e inicializar un objeto de su clase. Se puede crear un objeto de cualquiera de las formas siguientes: declarando un objeto global, declarando un objeto local u objeto temporal, invocando al operador new, o llamando explcitamente a un constructor.

Dado que los constructores son funciones miembro, admiten argumentos igual que stas. Cuando en una clase no especificamos ningn constructor, el compilador crea uno por omisin sin argumentos. Un constructor por omisin de una clase C es un constructor que se puede invocar sin argumentos. Si el objeto creado es global, el constructor por omisin inicializa a ceros los datos miembro numricos y a nulos los datos miembro alfanumricos, y si el jeto creado es local, lo inicializa con valores indeterminados (basura). Una forma de asegurar que los objetos siempre contengan valores vlidos y que puedan ser inicializados al momento de la declaracin es escribiendo un constructor: Un constructor es una funcin miembro especial de una clase que es llamada de forma automtica siempre que se declara un objeto de esa clase. Su funcin es crear e inicializar un objeto de su clase. Dado que un constructor es una funcin miembro, admite argumentos al igual que stas.

12

El constructor se puede distinguir claramente, con respecto a las dems funciones miembro de la clase, porque tiene el mismo nombre que el de la clase. Un constructor no retorna ningn valor ni se hereda. Si el usuario no ha creado uno, el compilador crea uno por omisin, sin argumentos. Pueden existir varios constructores, siempre y cuando difieran en los argumentos.

Ejemplo de un constructor en C:

class X { public int x, y; // constructor public CoOrds() { x = 0; y = 0; } }

13

1.7 Destructor De la misma forma que existe una funcin para construir cada uno de los objetos que declaramos, tambin existe una funcin que permite destruir cada objeto construido, liberando as la memoria que ocupa. Esta funcin recibe el nombre de destructor. Un objeto es destruido automticamente al salir del mbito en el que ha sido definido el objeto. Sin embargo, hay una excepcin: los objetos creados dinmicamente por el operador new tienen que ser destruidos utilizando el operador delete, de lo contrario el sistema destruira la variable puntero pero no liberara el espacio de memoria referenciado por ella. A diferencia de lo que ocurra con los constructores, slo es posible definir un destructor. Un destructor es una funcin miembro especial de una clase que se utiliza para eliminar un objeto de esa clase, liberndose la memoria que ocupa. Un destructor se distingue fcilmente porque tiene el mismo nombre que la clase a la que pertenece precedido por una tilde ~. Un destructor no es heredado, no tiene argumentos, no puede retornar un valor (incluyendo void) y no puede ser declarado const ni static, pero s puede ser declarado virtual. Utilizando destructores virtualespodremos destruir objetos sin conocer su tipo (ms adelante trataremos el mecanismo de las funciones virtuales). Cuando en una clase no especificamos un destructor, el compilador crea uno por omisin, pblico. De la misma forma que existe una funcin para construir cada unos de los objetos que declaramos, tambin existe una funcin para destruir cada objeto construido, liberando as la memoria que ocupa. Esta funcin recibe el nombre de destructor. Un objeto es destruido automticamente al salir del mbito en el que ha sido definido. Sin embargo, si se ha creado con el operador new, se debe utilizar el operador delete para destruirlo.

14

El destructor es una funcin miembro especial de una clase que se utiliza para eliminar un objeto de esa clase. El destructor se distingue fcilmente del resto de funciones porque tiene el mismo nombre que la clase precedido del operador tilde ~. El destructor no es heredado, no tiene argumentos ni puede retornar ningn valor. No hace falta llamar al destructor, ya que ste es invocado de forma automtica cuando se destruye el objeto por los medios mencionados anteriormente.

15

II Template (palabra reservada) 2.1 Definicin Las plantillas ("Templates"), tambin denominadas tipos parametrizados, son un mecanismo C++ que permite que un tipo pueda ser utilizado como parmetro en la definicin de una clase o una funcin. Ya se trate de clases o funciones, la posibilidad de utilizar un tipo como parmetro en la definicin, posibilita la existencia de entes de nivel de abstraccin superior al de funcin o clase concreta. Podramos decir que se trata de funciones o clases genricas; parametrizadas (de ah su nombre). Las "instancias" concretas de estas clases y funciones conforman familias de funciones o clases relacionadas por un cierto "denominador comn", de forma que proporcionan un medio simple de representar gran cantidad de conceptos generales y un medio sencillo para combinarlos. Para ilustrarlo intentaremos una analoga: si la clase Helado-de-Fresa representara los helados de fresa, de los que las "instancias" concretas seran distintos tamaos y formatos de helados de este sabor, una plantilla Helado-de - sera capaz de generar las clases Heladode-fresa; Helado-devainilla; Helado-de-chocolate, etc. con solo cambiar adecuadamente el argumento. En realidad respondera al concepto genrico de "Helado-de". Las instancias concretas de la plantilla forman una familia de productos relacionados (helados de diversos sabores). Forzando al mximo la analoga diramos "especialidades". Observe que el mecanismo de plantillas C++ es en realidad un generador de cdigo parametrizado. La conjuncin de ambas capacidades: Generar tipos (datos) y cdigo (algoritmos) les confiere una extraordinaria potencia. Si bien el propio inventor del lenguaje reconoce que a costa de "cierta complejidad", debida principalmente a la variedad de contextos en los que las plantillas pueden ser definidas y utilizadas.

16

La generalidad es una propiedad que permite definir una clase o una funcin sin tener que especificar el tipo de todos o alguno de sus miembros. Esta propiedad no es imprescindible en un lenguaje de programacin orientado a objetos y ni siquiera es una de sus caractersticas. La utilidad principal de este tipo de clases o funciones es la de agrupar variables cuyo tipo no est predeterminado. As el funcionamiento de una pila, una cola, una lista, un conjunto. Las plantillas (templates) nos permiten parametrizar estas clases para adaptarlas a cualquier tipo de dato.

17

2.2 Declaracin La palabra clave template de C++ utiliza una palabra clave especfica template para declarar y definir funciones y templates C++. En estos casos acta como un especificador de tipo y va unido al par de ngulos que delimitan los argumentos de la plantilla: Sintaxis: template void fun(T& ref); // funcin genrica template class C {/*...*/}; // clase genrica

La sintaxis para declarar una plantilla de funcin es parecida a la de cualquier otra funcin, pero se aade al principio una presentacin de la clase que se usar como referencia en la plantilla: template<class|typename <id>[,...]> <tipo_retorno> <identificador> (<lista_de_parmetros>) { // Declaracin de funcin };

18

III Manejo de plantillas en el mbito de la programacion 3.1 Turbo C, Borland Una vez que se llegado al entendimiento de la programacin estructurada as como de la programacin orientada al objeto, se puede observar que, si bien es cierto que ambas ofrecen soluciones a problemas fundamentales tambin es cierto que las soluciones se presentan como casos especializados. De tal manera que aparece lo que se llama generalizacin o programacin genrica y esta, a su vez, nos permite la creacin de plantillas basadas en una lgica operatoria previamente concebida. Con el objetivo de mostrar un ejemplo prctico retomaremos la clase vector del programa de la seccin anterior y crearemos, a raiz del mismo, una plantilla. La plantilla resultante tendr la capacidad para crear vectores de cualquier tipo. La STL (Standard Template Library) viene por defecto con los compiladores C++ (Borland, Turbo C). Esta biblioteca incluye un juego de contenedores genricos, especialmente:

std::vector: vectores (tabla de elementos de tipo T adyacentes en memoria). std::set: conjuntos de elementos de tipo T sin repeticiones y ordenados segn el operador <. std::list: listas encadenadas (acceso en O(n), insercin al inicio y al final de la lista.

19

IV Anlisis y diseo 4.1 Resolucin de problemas La ingeniera de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrnico (E-mail), la WWW y la mensajera instantnea permiten a la gente interactuar en nuevas formas. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usado mtodos de ingeniera de software incluyen a GNU/Linux, el software del transbordador espacial, loscajeros automticos y muchos otros. Un objetivo de dcadas ha sido el encontrar procesos y metodologas, que sean sistemticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software. La ingeniera de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapas comunes a casi todos los modelos de ciclo de vida se pueden son las siguientes:

Anlisis de requisitos: Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere habilidad y experiencia para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del anlisis de requisitos con el cliente se plasma en el documento ERS, Especificacin de Requisitos del Sistema, cuya estructura puede venir definida por varios estndares, tales como CMMI. Asimismo, se define un diagrama entidad/relacin, en el que se plasman las principales entidades que participarn en el desarrollo del software. La captura, anlisis y especificacin de requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales.

20

Especificacin: La especificacin de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del xito de un proyecto de software radicar en la identificacin de las necesidades del negocio (definidas por la alta direccin), as como la interaccin con los usuarios funcionales para la recoleccin, clasificacin, identificacin, priorizacin y especificacin de los requisitos del software. Entre las tcnicas utilizadas para la especificacin de requisitos se encuentran:

Caso de uso, Historias de usuario

Siendo los primeros ms rigurosos y formales, los segundas ms giles e informales.

Arquitectura: La integracin de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto. La arquitectura de sistemas en general, es una actividad de planeacin, ya sea a nivel de infraestructura de red y hardware, o de software. La arquitectura de software consiste en el diseo de componentes de una aplicacin (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseo arquitectnico debe permitir visualizar la interaccin entre las entidades del negocio y adems poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseo arquitectnico describe en general el cmo se construir una aplicacin de software. Para ello se documenta utilizando diagramas, por ejemplo:

Diagramas de clases Diagramas de base de datos Diagrama de secuencia


21

Programacin: Reducir un diseo a cdigo puede ser la parte ms obvia del trabajo de ingeniera de software, pero no necesariamente es la que demanda mayor trabajo y ni la ms complicada. La complejidad y la duracin de esta etapa est ntimamente relacionada al o a los lenguajes de programacin utilizados, as como al diseo previamente realizado.

Prueba: Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema. Una tcnica de prueba es probar por separado cada mdulo del software, y luego probarlo de forma integral, para as llegar al objetivo. Se considera una buena prctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la program, idealmente un rea de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un rea de pruebas, la primera es que est compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evala que la documentacin entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como estn descritas. El segundo enfoque es tener un rea de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qu condiciones puede fallar una aplicacin y que pueden poner atencin en detalles que personal inexperto no considerara.

Documentacin: Todo lo concerniente a la documentacin del propio desarrollo del software y de la gestin del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales tcnicos, etc; todo con el propsito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

22

Mantenimiento: Fase dedicada a mantener y mejorar el software para corregir errores descubiertos e incorporar nuevos requisitos. Esto puede llevar ms tiempo incluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un proyecto4 est dedicado a su mantenimiento. Una pequea parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor parte reside en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su evolucin.

23

4.2 Codificacin explcita La etapa de implementacin (codificacin) traduce los algoritmos del diseo en un programa escrito en un lenguaje de programacin. Los algoritmos y las estructuras de datos realizadas en pseudocdigo han de traducirse codificados en un lenguaje que entiende la computadora: PASCAL, FORTRAN, COBOL, C, C++, C# o Java. La codificacin cuando un problema se divide en subproblemas, los algoritmos que resuelven cada subproblema (tarea o mdulo) deben ser codificados, depurados y probados independientemente. Es relativamente fcil encontrar un error en un procedimiento pequeo. Es casi imposible encontrar todos los errores de un programa grande, que se codific y comprob como una sola unidad en lugar de como una coleccin de mdulos (procedimientos) bien definidos. Las reglas del sangrado (indentaciri) y buenos comentarios facilitan la escritura del cdigo. El pseudocdigo es una herramienta excelente que facilita notablemente la codificacin.

24

V Estructuras 5.1 Apuntadores a estructuras

Al igual que con el resto de tipos de variables, C permite crear variables punteros a estructuras. La forma de declarar estas variables es: struct nombre_estructura *nombre_varible_estructura; Para poder acceder a los elementos individuales de una variable puntero a estructura se utiliza el operador -> (el operador, denominado comunmente flecha, est formado por un signo menos seguido de un signo de mayor, sin ningn espacio en blanco entre ellos). Siguiendo con el ejemplo anterior de las coordenadas, vamos a definir un puntero a una variable de estructura de la siguiente forma: struct coordenada a, b, *p, *q; a.x = 5; a.y = 23; a.z = 10; b = a; p = &b; /* &b nos devuelve la direccin de la estructura b */ p->x = 2; p->y = a.y; p->z = a.z; q = p; /* p y q apuntan a la misma estructura */ Al igual que ocurra en el apartado anterior tambin existe la posibilidad de declarar tablas de estructuras. El formato sera el siguiente: struct nombre_estructura *nombre_varible_estructura[N]; o struct nombre_estructura *nombre_varible_estructura[N][M]; Por supuesto tambin se pueden declarar tablas de punteros a estructuras de ms de dos dimensiones pero al igual que ocurra con la declaracin de tablas de tipos de datos bsicos, no suelen ser muy usadas.
25

5.2 Reserva dinmica de memoria para los miembros de una estructura Existe una segunda manera de almacenar y tratar la informacin sobre la memoria principal y que es mediante la asignacin dinmica de memoria. Este segundo nivel nos da opcin a reservar el espacio que necesitemos en memoria durante la ejecucin del programa permitindonos posteriormente suliberacin, dando la posibilidad de que en otra parte del programa se use en otro momento la misma zona de memoria con un cometido diferente. Los constructores tambin pueden ser utilizados para la asignacin dinmica de memoria justo en el momento de la creacin de los objetos. Esto permite al sistema asignar la cantidad correcta de teora a cada objeto cuando los objetos no son todos del mismo tamao, dando como resultado un ahorro de memoria. La asignacin de memoria a los objetos en el momento de su construccin es conocida como construccin dinmica de objetos. La memoria es asignada con la ayuda del operador new. New en constructores que son utilizados para la construccin de cadenas pertenecientes a objetos. Ejemplo: #include <iostream> #include <string> Using namespace std; Class cadena { Char *nombre; Int longitud; Public: Cadena() //constructor-1 { Longitud = 0; Nombre= new char [longitud +1] }

26

VI ALLOC.H La librera alloc.h Contiene las funciones para obtener y liberar memoria. void *calloc(size_t n_elem, size_t ele_size); Reserva espacio contiguo para n_elem elementos de tamao cada uno ele_size bytes. Devuelve un puntero al bloque o NULL si no hay suficiente espacio. void *malloc(size_t size); Reserva size bytes de memoria. Devuelve un apuntador al comienzo de dicha memoria NULL. void free(void *block); Libera bloques reservados previamente con calloc o malloc.

27

VII Modelo de los objetos Los principios fundamentales para comprender la realidad al crear un programa bajo el paradigma de la orientacin a objetos son los siguientes:

Abstraccin El encapsulamiento La modularidad La herencia El paso de mensajes El polimorfismo Las relaciones entre objetos

28

VIII Abstraccin Denota las caractersticas esenciales que distinguen a un objeto de otros tipos de objetos, definiendo precisas fronteras conceptuales, relativas al observador.

Surge del reconocimiento de similaridades entre ciertos objetos, situaciones o procesos en el mundo real. Decide concentrarse en estas similaridades e ignorar las diferencias. Enfatiza detalles con significado para el usuario, suprimiendo aquellos detalles que, por el momento, son irrelevantes o distraen de lo esencial. Deben seguir el "principio de mnimo compromiso", que significa que la interface de un objeto provee su comportamiento esencial, y nada ms que eso. Pero tambin el "principio de mnimo asombro": capturar el comportamiento sin ofrecer sorpresas o efectos laterales

29

XI Encapsulamiento Encapsulamiento significa clasificar los miembros de una clase en tres categoras: 1. Privados: solamente visibles para esa clase. 2. Protegidos: visibles para esa clase y para sus clases derivadas. 3. Pblicos: visibles para la clase, para sus subclases y para los clientes de la clase, es decir, para todos. Para cada lenguaje de programacin hay sutiles diferencias entre la semntica de estas tres categoras, pero esencialmente el significado de lo que es pblico, privado y protegido es el que te describ. El objetivo del encapsulamiento, al no permtir que un miembro de una clase sea accesible por todo el mundo, es evitar que los usuarios de una clase realicen operaciones no permitidas, como llamar a mtodos que estn pensados solamente para ser utilizados desde dentro de la clase, o asignar arbitrariamente valores a los miembros dato, de tal manera que los objetos tomen un estado corrupto. Digamos que la encapsulacin sirve para: 1. Evitar errores lgicos de programacin. 2. Aislar lo que el usuario de la clase necesita conocer y le es til, de los detalles de implementacin. 3. Impedir que el estado de un objeto (conjunto de valores que toman los miembros dato de ese objeto durante un intervalo de tiempo), sea errneo. 4. Programar de una manera ms elegante y minimalista. 5. Facilitar el uso de la clase al resto de los programadores.

30

X Poliformismo El polimorfismo es una operacin que puede exhibir diferentes comportamientos en diferentes situaciones. El comportamiento depende de los tipos de datos usados en la operacin. Por ejemplo, para dos nmeros la operacin generara su suma. Si los operandos son cadenas de caracteres, entonces la operacin generara una tercera cadena por concatenacin. al proceso de hacer que un operador exhiba diferentes comportamientos en diferentes situaciones se le conoce como sobre carga de operador.

31

XI Herencia La herencia es el proceso por el que los objetos de una clase adquieren las propiedades de los objetos de otras clases. Ello implica el concepto de clasificacin jerrquica. Por ejemplo. El pjaro petirrojo forma parte de la clase pjaro volador la cual forma parte de nuevo de la clase pjaro. El principio que subyace en este tipo de subdivisin es que cada clase derivada comparte caractersticas comunes con la clase de la cual se deriva. En POO, el concepto de herencia suministra la idea de reusabilidad. Esto significa que podemos aadir caractersticas a una clase existente sin modificarla. Ello es posible al derivar una nueva clase a partir de otra existente. La nueva clase tendr las caractersticas confinadas de ambas clases. El verdadero atractivo y potencia del mecanismo de herencia es que permite al programador utilizar una clase que es casi, pero no exactamente, lo que quiere, y adaptar la clase de tal manera que no introdusca efectos laterales e indeseables.

32

XII Mensajes de un objeto Un mensaje en un objeto es la accin de llamado a un objeto, ejemplo: cuando le decimos a un objeto coche, que se ponga en marcha el mensaje es ponte en marcha para ello en la P.O.O. utilizamos el operador punto seguido del mtodo que deseamos invocar. En este ejemplo micoche.ponerseenmarcha( ) pasamos el mensaje y hay que colocar parntesis al final, igual que cualquier llamado de una funcin y dentro del parntesis se colocarn los parmetros correspondientes. Los mtodos permiten a las clases modificar el comportamiento de los objetos. Cambiando los valores de los atributos e interactuando con otros mtodos de la clase que exponga a una determinada funcionabilidad. Para ejemplificar el llamado de un mtodo lo haremos de la siguiente manera: cuenta.depositar( )

33

XIII Clase Una Clase es una declaracin de objetos. Tambin se puede definir como abstracciones de objetos. En trminos generales podemos decir que entre los objetos y las clases existen mtodos y mensajes por tal motivo cuando programamos un objeto y definimos sus caractersticas y funcionalidades en realidad lo que estamos haciendo es un programar una clase. Las propiedades o atributos son caractersticas de los objetos por tanto cuando definimos una propiedad normalmente especificamos su nombre y su tipo.

34

XIV Mtodos en las clases Son la funcionalidad asociada a los objetos, en tanto cuando estemos programando las clases las llamamos mtodos. Los objetos son ejemplares de una clase cualquiera pero cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se crear. A esta accin de crear un objeto a partir de una clase la llamamos INSTANCIA.

Ejemplo: un ejemplo de la clase fraccin

35

XV Estado de un objeto Debemos de recordar siempre, que cuando tenemos un objeto sus propiedades toman valores, ejemplo de ello sera que cuando tenemos un coche la propiedad color tomara un valor en concreto, por ejemplo: rojo, azul, verde, etc. A este valor en concreto se le denominar ESTADO.

Para acceder al estado de un objeto y poder verlo o cambiarlo se necesita un operado llamado punto (.).

36

XVII Bibliografa BRONSON, Gary, J., C++ para ingeniera v ciencias. International Thomson Editores, COHOON, James P. y Davidson, Jack W., Programacin y diseo en C++.Introduccin a la programacin y al diseo orientado a objeto 2a edicin. DEITEL, H.M.; Deitel, P.J. Cmo programar en C/C++, Prentice- Hall. JAMSA, Kris, Aprenda y practique C++, 3a Oxford University Press.

TACKER, Arlen B., Lenguajes de programacin. McGraw-Hill. http://www.aprendercurso.com/curso-poo-c http://www.aprendercurso.com/curso-poo-c

37

Vous aimerez peut-être aussi