ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

GRUPO N° 1 PRÁCTICAS DE LENGUAJES DE PROGRAMACIÓN

swebas2308Informe6 de Julio de 2020

2.150 Palabras (9 Páginas)206 Visitas

Página 1 de 9

[pic 1][pic 2][pic 3]

[pic 4][pic 5]

[pic 6]

[pic 7]

[pic 8]


GRUPO N° 1

PRÁCTICAS DE LENGUAJES DE PROGRAMACIÓN II

Presentado por:

RECONOCIMIENTOS

El autor de este trabajo reconoce con gratitud a los creadores de los lenguajes C, C++ y otras personalidades y autores de libros de programación Bjarne Stroustrup, Dennis Ritchie, Herb Sutter, Herb Sutter, James Gosling, James Gosling, Brian Kernighan, Brian Kernighan, Ken Thompson.

PALABRAS CLAVES

Clases abstractas, interfaces, funciones virtuales, reemplazo, overriding y refinamiento.

ÍNDICE

1.        RESÚMEN        1

2.        INTRODUCCIÓN        1

3.        MARCO TEÓRICO        3

3.1        Arreglos de Objetos        3

3.2        Funciones amigas        3

3.3        Clases amigas        4

3.4        Miembros static        4

3.5        Sobrecarga de operadores        4

4.        EXPERIENCIAS DE PRÁCTICA        4

4.1        Hacer arreglos de objetos en su proyecto elegido.        4

4.2        Agregar funciones amigas, una clase(s) amiga(s) y clase(s) parcialmente amiga(s).        5

4.3        Agregar métodos y atributos estáticos.        5

4.4        Diseñar y agregar operadores sobrecargados a su proyecto.        5

5.        CONCLUSIONES DE LA PRÁCTICA:        5

6.        CUESTIONARIO        6

7.        BIBLIOGRAFÍA        6


ÍNDICE DE TABLAS Y FIGURAS

Figura N° 1: Diagrama de Clases        3

Figura N° 2: código de función        4

 


  1. RESÚMEN

En la vida real existen clases sin elementos, por ejemplo, la clase animal no posee elementos, en cambio las clases descendientes como perro o vaca si los poseen, ese es el objetivo de tener calase abstractas, poseer definiciones de un tipo que sirve para especificar características para clases derivadas. Una clase abstracta no instancia objetos, las clases abstractas se convierten en tales debido a que incluyen un método virtual puro, una abstractas tiene por lo menos un método virtual puro; los métodos son virtuales puros al igualarlos a 0 en la declaración, la definición del método no se hace en la clase base, para cada clase derivada de una clase abstracta que no implemente dicho método se convierte siempre en abstracta también.

Para cuando una clase solo especifica métodos virtuales puros, estos se denominan clases completamente abstractas, en Lenguaje Java reciben el nombre de interfaces, las interfaces son un contrato de programación con el usuario, se usan para hacer herencia múltiple y no modificar de forma directa la clase de la cual se hereda, de esta manera se hace una extensión del código sin necesidad de modificar la clase original, al igual que una clase abstracta los descendientes se vuelven abstractas si no implementa los métodos virtuales puros.

Al hacer herencia se hereda todo lo incluido en la clase base, pero para poder anular los métodos de la clase base de forma específica se hace usos de los métodos virtuales. Las funciones virtuales permiten que clases derivadas de una misma base (clases hermanas) puedan tener diferentes versiones de un método. Se utiliza la palabra-clave virtual para avisar al compilador que un método será polimórfico y que en las clases derivadas existen distintas definiciones del mismo. En respuesta, el "Linker" utiliza para ella una técnica especial, enlazado retrasado. La declaración de virtual en un método de una clase, implica que esta es polimórfica, y que probablemente no se utilizará directamente para instanciar objetos, sino como super-clase de una jerarquía.

El reemplazo y refinamiento se implementa en los métodos de las clases derivadas, en el reemplazo se anula el método de la clase base usando la misma firma que el método de la clase base, en el caso del refinamiento se invoca al método de la clase base en la clase derivada y se le agrega funcionalidad.

  1. INTRODUCCIÓN

Existe un fenómeno muy claro que nos permite entender la complejidad de los procesos de clasificación y la forma como los seres humanos conceptualizamos y clasificamos al conocimiento y a los grupos de objetos que pretendemos entender y clasificar. Organizar conceptualmente y subclasificar objetos nos lleva al punto donde existen clases que no deben tener objetos y donde su utilidad práctica solo existe para mejorar la organización del árbol de clasificación y así determinar mejor cada grupo de clasificación, este tipo de clases no poseen en si objetos si se lleva a cabo una subtificación, los objetos que pertenecen también a los subtipos y por ende dicha clase de objetos existe o pertenece a una subclase y por lo tanto tenemos una clase sin objetos pero con una conceptualización superior necesaria para la creación de las subclases.

Adicionalmente en Lenguaje C++ existe el concepto de clase completamente abstracta, las clases abstractas como tales podían tener atributos, los cuales serían manipulados por los objetos de las clases derivadas mediante herencia; por el contrario, una clase completamente abstracta no los posee, y en su lugar solo posee las declaraciones de un conjunto de métodos virtuales puros. Imaginemos a una clase que únicamente posee como miembros métodos virtuales puros, esto hace que sea una clase que especifica un conjunto de operatividad de forma muy genérica, lo cual nos lleva a pensar si dicha clase está realmente incluida dentro de la jerarquía de herencia, ya que aparentemente solo está ubicada allí para proporcionar formas de implementar de forma obligatoria métodos que deberán ser detallados en cada subclase de forma particular.

Contrariamente a una clase normal, una clase completamente abstracta no aporta ni atributos ni estado, al estar constituida por miembros que son todos métodos virtuales puros son clases que solo aportan modelamiento de comportamiento, el cual no necesariamente se encuentra completamente especificado para todas las clases de la jerarquía.

Si lo vemos desde un punto de vista funcional una clase completamente abstracta resulta ser un compromiso de implementación de un conjunto de operatividad en las clases derivadas de ésta.

Al aplicar los mecanismos de herencia en Programación Orientada a Objetos tenemos la posibilidad de recibir una copia de todo lo existente en la clase base, de esta forma la clase derivada recibe dichos recursos y agrega otros adicionales; que sucede si por el contrario la operatividad de un método se necesita implementado de una manera distinta  a la que se tiene en la clase base, o por el contrario la operatividad de la clase base se necesita implantar de forma distinta en cada una de las clases que descienden de ella en la jerarquía de clases. Para resolver este problema podemos hacer que un método sea virtual, lo que implica que cada clase derivada de la clase base recibe una copia de los atributos y métodos de la clase superior, pero en el caso de los métodos que están declarados como virtuales pueden crear su propia definición e implantación sin perjuicio de otras clases. El declarar en una clase superior de la jerarquía un método como virtual alerta al enlazador que las clases descendientes tienen cada una versión particular del método por lo cual el enlace de dichos métodos se hace en tiempo de ejecución con una técnica que es conocida como enlace tardío. Al usar la declaración de un método virtual estamos indicando que dicho método tendrá un comportamiento polimórfico y que en las clases derivadas existirán diferentes versiones del mismo, lo que nos permite de plano la existencia del polimorfismo. Se entiende que los métodos en las clases derivadas tienen la misma firma que el método en la clase base, y que los métodos en las clases derivadas hacen un solapamiento del método de la clase base u override, la versión de la clase base podría ser también un método virtual puro con lo que no tendría definición en la clase base.

...

Descargar como (para miembros actualizados) txt (13 Kb) pdf (274 Kb) docx (388 Kb)
Leer 8 páginas más »
Disponible sólo en Clubensayos.com