01) gonzáles, l. a. (2000). “introducción” en info 161. lenguajes de programación...

Upload: niko-lawson

Post on 06-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

,uhjkj

TRANSCRIPT

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    1

    PROGRAMACION ORIENTADA A OBJETOS. TABLA DE CONTENIDOS 1 INTRODUCCIN. 1.1 DISEO DIRIGIDO POR RESPONSABILIDAD

    2 CLASES 2.1 CREACIN DE OBJETOS DE UNA CLASE. 2.2 FUNCIONES EN LNEA. 2.3 CONSTRUCTORES. 2.4 DESTRUCTORES. 2.5 FUNCIONES AMIGAS. 2.6 EJERCICIOS. 3 MS CONCEPTOS SOBRE ORIENTACIN A OBJETOS 3.1 RELACIONES. 3.1.1 RELACIN UN - TIPO - DE (A - KIND - OF RELATIONSHIP) 3.1.2 RELACIN ES UN(A) (IS - A RELATIONSHIP) 3.1.3 RELACIN PARTE - DE 3.1.4 RELACIN TIENE - UN 3.2 HERENCIA 3.3 HERENCIA MLTIPLE 3.3.1 CLASES ABSTRACTAS 3.3.2 EJERCICIOS 4 HERENCIA EN C++ 4.1 TIPOS DE HERENCIA. 4.2 CONSTRUCCIN 4.3 DESTRUCCIN 4.4 HERENCIA MLTIPLE. 4.5 POLIMORFISMO 4.6 CLASES ABSTRACTAS 5 SOBRECARGA DE OPERADORES 6 TIPOS GENRICOS 7 TIPOS GENRICOS (TMPLATE EN C++)

    mlopezCuadro de texto01) Gonzlez, L. A. (1988). Introduccin en INFO 161. Lenguajes de programacin: Programacin orientada a objetos. Chile: Valdivia, pp. 1 -6.

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    2

    1 Introduccin. Envo de Flores Si mando flores a una dama tengo las siguientes alternativas. Alternativas 1. Lo hago directamente envindole un mensaje a Margarita la florista. 2. Usando otro objeto intermedio, por ejemplo Gertrudis, la secretaria. El objeto Margarita y el objeto Gertrudis tienen mtodos que entienden el mensaje. El objeto Margarita tiene mtodos que permiten realizar la accin. Si le pido a mi jefe Lalo que mande flores, probablemente no lo har porque no tiene el mtodo. En POO, la accin se inicia mediante la transmisin de un mensaje (paso de mensajes) a un agente (objeto) responsable de la accin. El mensaje tiene codificada la peticin y se acompaa de informacin adicional. Si el objeto receptor acepta el mensaje, significa que tiene los mtodos para llevarla a cabo. El objeto receptor realiza la accin. Si hubiese ido donde la florista Rosa el resultado habra sido el mismo, porque Margarita y Rosa pertenecen a la misma clase. Esta clase la podemos llamar Florista.

    Todos los objetos de una misma clase tienen los mismos mtodos. Probablemente Margarita pedir dinero y entregar una boleta, porque ese mtodo los usan todos los comerciantes, o sea la clase florista pertenece a una clase mayor llamada Comerciante y el objeto Margarita, conoce los mtodos de la clase florista y todos los mtodos de la clase comerciante Dicho de otra forma la clase florista hereda mtodos de una clase jerrquicamente superior. Otros comerciantes son los panaderos, fotocopiadores, etc. Los comerciantes son humanos, como otro tipo de profesiones. Los Humanos son mamferos, Los mamferos son animales, Los animales son objetos materiales.

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    3

    Ejemplos de clases y subclases.

    Herencia.- Las clases se pueden organizar en forma jerrquica por herencia. Una subclase heredar los mtodos de una superclase. Una superclase abstracta se usa solo para crear subclases no posee objetos. Un problema, los mamferos dan a luz cras vivas. La ornitorrinco Orni es mamfero y pone huevos. As que necesitamos mtodo que codifiquen excepciones para anular mtodos de las superclases. Enlaces de Mtodos. Un mtodo se busca en la clase del objeto, si no se encuentra se busca en la superclase y as sucesivamente hasta que se encuentra. Una vez que se encuentra se ejecuta o de lo contrario emite un mensaje de error. Volviendo al ejemplo. El hecho que yo no conozca con exactitud los mtodos que usar Margarita, se conoce como ocultamiento de la informacin. Resolver un problema complejo usando tcnicas tradicionales, puede volverse muy engorroso, puesto que obliga a conocer variables, registros o parmetros que se usan anteriormente y de igual forma con el cdigo que viene. Para resolver ese problema, se usan: Procedimientos, Procedimientos y funciones permiten ocultar mtodos, permite reutilizacin. Sin embargo la informacin la pueden ocultar slo parcialmente.

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    4

    Por ejemplo, un procedimiento para manejar una pila. Interfaz visible. Rutinas, iniciar, sacar, meter y tope. Se pude usar arreglo, punteros, listas enlazadas etc. Los datos de la pila no pueden ser locales, deben ser compartidos, entonces deben ser globales. Supongamos un arreglo de nombre pila_de_datos. Problemas. Todos los programadores deben saber este nombre para no crear otro igual. Los nombres iniciar, sacar, meter y tope son ahora reservados. Mdulos. La programacin modular resuelve los problemas anteriores permitiendo dividir los mdulos en dos partes, una parte privada y otra pblica. La parte privada es slo accesible Por las rutinas al interior del mdulo. Problemas. Que pasa si otros usuarios desean mantener ms de una pila. La programacin modular no permite hacer la instanciacin de otros ejemplares. Tipo de Datos Abstracto. Tipo definido por el programador. Conjunto de valores (podra ser infinito) y nmero de operaciones primitivas. Los usuarios pueden crear variables para el tipo definido. Ejemplo, definir una pila como TDA y las operaciones iniciar, sacar, meter y tope, como las nicas operaciones vlidas para pila. Los mdulos se usan como implantacin de TDA. El TDA es un concepto. Para construir un TDA se debe ser capaz de: 1. Exportar una definicin de tipo 2. Proporcionar un conjunto de operaciones. 3. Proteger los datos asociados, de tal manera que slo se puedan usar con las operaciones establecidas. 4. Crear mltiples ejemplares del tipo. Los mdulos estn dirigidos hacia los puntos 2 y 3. Los objetos son tipos abstractos de datos. Programacin Orientada a Objetos (POO). La POO agrega ideas nuevas al concepto de TDA. Ellas son: Paso de mensajes. Cambio de enfoque entre hacerlo uno mismo invocando el mtodo apropiado o que el objeto lo haga por uno. Sobrecarga de nombres Reutilizacin de software. Mecanismos de herencia y polimorfismo (mtodos que pueden ser aplicados a diferentes objetos)

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    5

    1.1 Diseo Dirigido por Responsabilidades Qu es POO? Respuesta tpica: clases, herencia, etc., sintaxis del lenguaje. Importante, delegacin de responsabilidades. Esta tcnica se llama diseo dirigido por responsabilidades. Una tcnica til es el uso de tarjetas CRC (Clases, Responsabilidad, Colaboradores), como se muestra en la Figura:

    Algunas reglas Usar nombre pronunciables. Usar el subrayado _ (underline) para separar palabras dentro de un nombre o usar la primera letra mayscula. Ejemplo Ordenador_de_lista u OrdenadorDeLista Usar adecuadamente las abreviaturas, por ejemplo ordlist no es un buen ejemplo, sin embargo IDuser Podra ser una abreviatura al nmero de identificacin de usuario. No usar dgitos que confundan al lector por ejemplo 0 y O, 1 y l, 2 y Z, 5 y S, etc. Usar claramente variables boolianas, por ejemplo Impresora Lista es mejor que Estado Impresora. Un ejemplo es e l de cajeros automticos:

  • Material compilado con fines acadmicos, se prohbe su reproduccin total o parcial sin la autorizacin de cada autor.

    6

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice