presentación1

17

Upload: rokr02

Post on 26-Jul-2015

229 views

Category:

Documents


0 download

TRANSCRIPT

Los fundamentos de la programación orientada a objeto

La organización de una aplicación en OOP se realiza mediante estructuras de código.

Una estructura de código contiene un conjunto de procedimientos e información que ejecutan una serie de procesos destinados a resolver un grupo de tareas con un denominador común. Una aplicación orientada a objetos tendrá tantas estructuras de código como aspectos del programa sea necesario resolver.

Concepto

Un objeto es una agrupación de código, compuesta de propiedades y métodos, que pueden ser manipulados como una entidad independiente. Las propiedades definen los datos o información del objeto, permitiendo consultar o modificar su estado; mientras que los métodos son las rutinas que definen su comportamiento. Un objeto es una pieza que se ocupa de desempeñar un trabajo concreto dentro de una estructura organizativa de nivel superior, formada por múltiples objetos, cada uno de los cuales ejerce la tarea particular para la que ha sido diseñado.

Ejemplos

Concepto

Una clase no es otra cosa que el conjunto de especificaciones o normas que definen cómo va a ser creado un objeto de un tipo determinado; algo parecido a un manual de instrucciones conteniendo las indicaciones para crear el objeto.

Los términos objeto y clase son utilizados en OOP con gran profusión y en contextos muy similares, por lo que para intentar aclarar en lo posible ambos conceptos, diremos que una clase constituye la representación abstracta de algo, mientras que un objeto constituye la representación concreta de lo que una clase define.

La clase determina el conjunto de puntos clave que ha de cumplir un objeto para ser considerado perteneciente a dicha clase o categoría, ya que no es obligatorio que dos objetos creados a partir de la misma clase sean exactamente iguales, basta con que cumplan las especificaciones clave de la clase.

Ejemplos

'Crear un módulo de Clase (tipo cls) con el Nombre cArchivo'Añadir estas propiedades:Public Extension As StringPublic Cantidad As Integer

'Esto ponerlo en el módulo de prueba (en el Sub Main si es un módulo BAS)

'Colección para guardar elementos de la clase ArchivoDim Archivos as New Collection'Variable temporal de la clase ArchivoDim tArchivo as New cArchivo

Dim a$, b$Dim k%

'La rutina de error hará la parte "sucia" del trabajoOn Local Error Resume Next

'Leer cada archivo del directorioa$ = Dir$("*.*")Do While Len(a$)

'Comprobar la extensiónk% = Instr(a$,".")b$=""If k% Then b$ = Mid$(a$,k%+1)'Comprobar si ya está en la "lista"

Ejemplos

Set tArchivo = Archivos(b$)'Esto es lo mismo que: Set tArchivo = Archivos.Item(b$)If Err Then 'No existe, añadirlo

Err = 0Set tArchivo = NothingtArchivo.Extension = b$tArchivo.Cantidad = 1

‘ Else 'Ya existe, incrementar la cantidad

tArchivo.Cantidad = tArchivo.Cantidad + 1End If'Añadirlo a la colecciónArchivos.Add tArchivo, tArchivo.ExtensionIf Err Then

'Ya existía, quitarlo y volverlo a añadirArchivos.Remove tArchivo.ExtensionArchivos.Add tArchivo, tArchivo.ExtensionErr = 0

End If

a$=Dir$Loop'Mostrar los datosPrint "Extensión","Cantidad"For Each tArchivo In Archivos

Print tArchivo.Extension, tArchivo.CantidadNext

Concepto

Es el proceso por el cuál se obtiene un objeto a partir de las especificaciones de una clase se conoce como instanciación de objetos. En la figura vemos al ejemplo del molde y las figuras; en dicha imagen vemos un molde para fabricar figuras rectangulares, donde la clase Figura estaría representada por el molde, y cada uno de los objetos Figura (iguales en forma pero con la propiedad Color distinta), representaría una instancia de la clase.

Ejemplo

Concepto

Para que la programación de un lenguaje o sistema sea considerado orientado a objeto, debe cumplir las características de los siguientes apartados.

Abstracción

La abstracción es aquella característica que nos permite identificar un objeto a través de sus aspectos conceptuales.Las propiedades de los objetos de una misma clase, pueden hacerlos tan distintos que sea difícil reconocer que pertenecen a una clase idéntica. No obstante, nosotros reconocemos a qué clase pertenecen, identificando además, si se trata de la misma clase para ambos. Ello es posible gracias a la abstracción.

Encapsulación

La encapsulación establece la separación entre el interfaz del objeto y su implementación, aportándonos dos ventajas fundamentales.Por una parte proporciona seguridad al código de la clase, evitando accesos y modificaciones no deseadas; una clase bien encapsulada no debe permitir la modificación directa de una variable, ni ejecutar métodos que sean de uso interno para la clase.

Encapsulación

Por otro lado la encapsulación simplifica la utilización de los objetos, ya que un programador que use un objeto, si este está bien diseñado y su código correctamente escrito, no necesitará conocer los detalles de su implementación, se limitará a utilizarlo.

Tomando un ejemplo real, cuando nosotros utilizamos un objeto Coche, al presionar el acelerador, no necesitamos conocer la mecánica interna que hace moverse al coche, sabemos que el método Acelerar del coche es lo que tenemos que utilizar para desplazarnos, y simplemente lo usamos.

Polimorfismo

El polimorfismo determina que el mismo nombre de método, realizará diferentes acciones según el objeto sobre el que sea aplicado. Al igual que sucedía en la encapsulación, el programador que haga uso del objeto, no necesita conocer los detalles de implementación de los métodos, se limita a utilizarlos.

En un ejemplo aplicado a la programación, supongamos que disponemos de los objetos Ventana y Fichero; si ejecutamos sobre ambos el método Abrir, el resultado en Ventana será la visualización de una ventana en el monitor del usuario; mientras que en el objeto Fichero, se tomará un fichero en el equipo del usuario y se dejará listo para realizar sobre él operaciones de lectura o escritura.

Herencia

Se trata de la característica más importante de la OOP, y establece que partiendo de una clase a la que denominamos clase base, padre o superclase, creamos una nueva clase denominada clase derivada, hija, o subclase. En esta clase derivada dispondremos de todo el código de la clase base, más el nuevo código propio de la clase hija, que escribamos para extender sus funcionalidades.

Existen dos tipos de herencia: simple y múltiple. La herencia simple es aquella en la que creamos una clase derivada a partir de una sola clase base, mientras que la herencia múltiple nos permite crear una clase derivada a partir de varias clases base. El entorno de .NET Framework sólo permite utilizar herencia simple.