La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Taller N°1 Programación Orientada a Objetos Creasys Ltda. Agosto 2008.

Presentaciones similares


Presentación del tema: "Taller N°1 Programación Orientada a Objetos Creasys Ltda. Agosto 2008."— Transcripción de la presentación:

1 Taller N°1 Programación Orientada a Objetos Creasys Ltda. Agosto 2008

2 Objetivos  Lograr conocer los elementos de la Programación a los Objetos.  Lograr comprender características básicas de los objetos.

3 ¿ A quién está dirigido este taller ?  Ingenieros de Software que tienen conocimientos de Visual Basic 6.0  Ingenieros de software que desean conocer e implementar la plataforma dotNET en los desarrollos de sus proyectos.  Jefes de proyecto que deseen ampliar sus competencias.  Tiempo estimado 1.5 Horas

4 Contenidos  Introducción  ¿ Qué es la OOP ?  Conceptos básicos  Clase  Objeto  Herencia  Encapsulación  Polimorfismo

5 Evolución de los lenguajes de programación  Los avances tecnológicos.  Los avances conceptuales (de planteamiento)  Los avances en cuanto a enfoque de la programación.  Existen distintos paradigmas de programación, tales como:

6  Programación imperativa  Programación lógica  Programación funcional  Programación estructurada o declarativa  Programación dirigida por eventos  Programación modular  Programación Orientada a Aspectos  Programación Orientada a Objetos  Programación con restricciones  Programación por capas Paradigmas de programación de software

7  Pero, toda la historia de los lenguajes de programación se ha desarrollado en base a una sola idea conductora: hacer que la tarea de realizar programas para computadores sea cada vez lo más simple, flexible y portable posible.

8  Anterior a la POO existían otros modelos de programación --entre ellos la programación estructurada-- los cuales presentaban ciertos problemas, tales como:  Programas monolitos difíciles de mantener.  Dificultad de modificación de una parte sin afectar al sistema entero.  Aprovechamiento muy difícil de código existente, siendo cada programa construido desde cero ( o casi ).  Dificultad en la separación de tareas y responsabilidades, todo programador tenía que conocer cada parte del sistema.  Dificultad para transmitir los modelos de negocios en los modelos de programación.  Dificultad en la integración de sistemas.

9 El hecho de utilizar un lenguaje POO no implica que ya no tendremos los problemas citados, para ello debemos realmente programar orientados a objetos y olvidar antiguas prácticas de la programación. De nada sirve tener una sola clase llamada “Programa” con un sólo método llamado “principal”.

10  Las metodologías Orientados a Objetos resuelven en cierta medida los problemas anteriores y nos dan los siguientes beneficios:  Transición intuitiva de los modelos de análisis de negocios a los modelos de implementación de software.  Mantenimiento e implementación de cambios más eficiente y rápida.  Permite separar partes del sistema para trabajar en ellos sin afectar al resto del mismo.  Permite la reutilización de código de componentes en otros sistemas e incorporar componentes de terceros.  Permite una mejor integración de sistemas distribuidos con un bajo acoplamiento.  Mejores interfaces graficas y componentes al aprovechar frameworks (marcos de trabajo) pre construidos y probados.

11 Pero… para obtener éstas ventajas debemos de aplicar a nuestro software los principios y metodologías de la POO (OOP).

12 Que es la OOP  La OOP son un conjunto de técnicas que nos permiten incrementar enormemente nuestro proceso de producción de software.  Aumenta drásticamente nuestra productividad por un lado y permitiéndonos abordar proyectos de mucha mayor envergadura.  Usando estas técnicas, nos aseguramos la reusabilidad de nuestro código, es decir, los objetos que hoy escribimos, si están bien escritos, nos servirán para "siempre".

13  En la OOP podemos re-usar ciertos comportamientos de un objeto, ocultando aquellos otros que no nos sirven, o redefinirlos para que los objetos se comporten de acuerdo a las nuevas necesidades.

14 Conceptos básicos  Clase  Abstracción que hacemos de nuestra experiencia sensible. (Agrupación, generalización, tipificación). Cada clase posee cualidades que la diferencian de las otras.  Clase Abstracta  Una clase abstracta es aquella que construimos para derivar de ella otras clases, pero de la que no se puede hacer una instancia.  Clase Padre  Una clase padre es aquella que posee clases hijas que heredan sus características.

15 Objeto  Es un conjunto de datos y métodos.  Datos: Características o atributos (propiedades en un lenguaje OOP).  Métodos: Comportamientos (Procedimientos y/o funciones en lenguaje OOP).  Una instancia particular de una clase particular.  Importancia de los datos y métodos están tan intrínsecamente ligados, que forman una misma unidad conceptual y operacional.

16 Herencia  Es la capacidad que poseen los objetos de “transmitir” los datos y métodos a sus hijos.  Esta es la cualidad más importante de la programación OOP.  Al implementarla nos dará mayor potencia y productividad.  Permite ahorrar horas y horas de codificación y de depuración de errores.

17 Aspectos Técnicos  A la clase heredada se le llama subclase o clase hija  A la clase de la que se hereda superclase o clase padre.  Al heredar, la clase heredada toma directamente el comportamiento de su superclase

18  Se heredan los datos y los métodos, por lo tanto, ambos pueden ser redefinidos en las clases hijas, aunque lo más común es redefinir métodos y no datos.  Al redefinir un método queremos o bien sustituir el funcionamiento del método de la clase padre o bien ampliarlo.

19 Encapsulación  Capacidad de ocultar datos y metodos a los demas objetos.

20 Polimorfismo  Por polimorfismo entendemos aquella cualidad que poseen los objetos para responder de distinto modo ante el mismo mensaje.  Importancia  Nos facilita el trabajo ya que el nombre de los métodos que tenemos que recordar disminuye ostensiblemente.

21 Sobrecarga (Overloads)  Puede ser considerada como un tipo especial de polimorfismo que casi todos los lenguajes de OOP incluyen.  Varios métodos (incluidos los “constructores”) pueden tener el mismo nombre siempre y cuando el tipo de parámetros que recibe o el número de ellos sea diferente.

22  Ejemplo: La clase File (que escribe en un Archivo) puede tener tantos métodos Write() como tipos de datos queramos escribir (no se preocupe si no entiende la nomenclatura, céntrese en la idea): File:Write( int i );Escribe un integer File:Write( long l );Escribe un long File:Write( float f );Escribe un flot File:Write( string s );Escribe una cadena File:Write( string s, boolean b );Escribe una cadena pasándola a Mayúsculas

23 Planteamiento de la implementación  A este respecto no hay ninguna regla invariable que seguir, ya que esto es más un arte que una ciencia.  Solo existen recomendaciones para diseñar las clases.

24 Recomendaciones Divide y vencerás  Procure construir un método para realizar cada pequeña tarea que necesite. Cuanto menor sea el ámbito de actuación de un método, más probablemente le resultará reutilizable en otro momento y más fácil le resultará codificarlo. Haga lo mismo con las clases: no escatime en su número. Ante la duda, siempre es mejor dividir una clase en dos que agrupar dos en una.

25 No piense de forma procedural  En OOP no se puede pensar de una forma procedural, una clase no es un conjunto de funciones relacionadas, es un objeto tan real como los demás que están fuera del computador. Los objetos son de verdad, no son cajas de almacenamiento de código.

26 Los métodos no son funciones  No defina métodos como si fueran funciones, sino como acciones inherentes al objeto: así podrá cambiar el funcionamiento interno completamente sin que cambie ni el nombre de la clase ni los nombres de los métodos. Si al cambiar el funcionamiento de una clase el nombre de la clase y de los métodos no tienen sentido es que estaba mal diseñado.

27 Recomendación especial  Para plantear el diseño de las clases:  Identificar el ámbito de trabajo: Para así ver qué clases están en la raiz de la jerarquía (las más abstractas).  Especificar los objetos finales: Las relaciones entre las clases del mismo ámbito y las relaciones con las clases de los otros ámbitos.

28 De la teoría a la realidad  El operador de envío  Para poder mandar mensajes a los objetos, necesitamos un operador, a este le llamamos el operador de envío. Cada lenguaje puede tener el suyo, pero es frecuente que se utilicen los dos puntos (':') o el punto ('.‘), otras implementacioes OOP tienen el simbolo flecha (‘->’).

29 Así, si queremos enviarle el mensaje Caminar al objeto Juan de la clase hombre, escribiríamos lo siguiente.

30 erJuan.Caminar() +-++--+¦+-------+ ¦ ¦ ¦ +---- Mensaje. Invoca el método de igual nombre1. ¦ ¦ +--------- Operador de envío2. ¦ +------------ Objeto de la clase hombre Juan. +--------------- El prefijo hombre denota su clase. 1.En algunos lenguajes OOP se puede hacer que un mensaje invoque un método con nombre distinto. 2. Como hemos comentado, cada lenguaje puede utilizar su propio operador de envío. El operador de envío hace que se ejecute la porción del código agrupada bajo el nombre del método, y el método trabajará con los datos propios de la instancia de la clase a ala que se refiera.

31 Constructores y Destructores  Para poder utilizar un objeto, previamente hemos de crearlo, lo que hacemos mediante el constructor de la clase  Puede haber más de un constructor (por la sobrecarga), por ejemplo (cercano a VB.Net):

32 Dim oFFMM1 as NEW classFFMM Dim oFFMM2 as NEW classFFMM Dim oFFMM3 as NEW classFFMM Dim oVentaFFMM as New classVenta oFFMM1.Precio = 100 oFFMM1.Cantidad = 10 oFFMM1.Calcular ‘ calcula PxQ oFFMM2.Precio = 50 oFFMM2.Cantidad = 10 oFFMM2.Calcular ‘ calcula PxQ oFFMM3.Precio = 1500 oFFMM3.Cantidad = 1 oFFMM3.Calcular ‘ calcula PxQ oVentaFFMM.Agregar(oFFMM1) oVentaFFMM.Agregar(oFFMM2) oVentaFFMM.Agregar(oFFMM3) oVentaFFMM.Calcular ‘ calcula sumatoria de los tres FFMM

33 Accesibilidad de Datos y Métodos  Indican la visibilidad que una variable o un método tienen. Tanto los distintos tipos posibles, como la palabra reservada para denotarlos dependen, como es lógico, de cada lenguaje. De todos modos, todos los lenguajes OOP incluyen al menos los tres siguientes:

34  Públicos : Son visibles dentro y fuera de la clase sin restricción alguna. La palabra reservada más común para denotarlos es "public".  Como ya hemos comentados, los datos no deben ser nunca públicos, ya que romperían el principio de Encapsulación que debe seguir todo proyecto OOP.

35  Protegidos : Estos miembros de la clase (ya sean datos o métodos) son visibles desde dentro del la clase y desde cualquier otra clase heredada, es decir, clases hijas (o subclases, como prefiera llamarlas). La palabra reservada más común para denotarlos es "protected" o " friend".

36  Privados : Lo miembros privados son solo accesibles desde dentro de la clase donde existen. La palabra reservada más común para denotarlos es "private".

37 Resumen  Resumamos brevemente las ideas más importante:  Una clase es un conjunto de reglas de creación y comportamiento de los objetos.  Un objeto es un conjunto de datos que se comporta de acuerdo a las reglas de su clase.  Resumamos para terminar qué es, internamente, una clase y qué un objeto.  Una clase es un conjunto de funciones -métodos- e información para construir objetos de la clase -los datos-.  Los métodos están almacenados en la clase y trabajan con los datos de cada objeto.  La clase contiene los métodos y los objetos los datos.  La clase también tiene que ser capaz de crear objetos, por lo que los datos de la clase (comunes a todos los objetos) tienen que estar declarados en la clase, pero ella solo los usa para generar objetos.  Cuando el constructor de una clase crea un nuevo objeto, lo que está fabricando es una estructura de datos (Podemos imaginarlo como un array (vector) en otros lenguajes), que puede contener valores. Existirán tantos casilleros para almacenar valores como datos existan en la clase. Los constructores pueden inicializar todos o algunos de estos datos si lo deseamos.

38 Ejemplo (VB.NET) Public Class frmGPIBase Inherits System.windows.forms Private Sub frmGPIBase_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.BackColor = Color.Blue me.ForeColor = Color.Yellow End Sub End Class Public Class FrmGPIEjemplo Inherits frmGPIBase Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load lblTituloGrande.Text = "Formulario de Prueba" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End Sub End Class Public Class TPersona Private _Nombre as String Private _Edad as Integer Private _CuantosPasosLLeva as Integer Public Property Nombre() As String Get Return _Nombre End Get Set(ByVal value As String) _Nombre = value End Set End Property Public Property Edad() As Integer Get Return _Edad End Get Set(ByVal value As Integer) _Edad = value End Set End Property Public ReadOnly Property Pasos() As Integer Get Return _CuantosPasosLLeva End Get Public Sub Caminar() _CuantosPasosLLeva += 1 End Sub End Property End Class


Descargar ppt "Taller N°1 Programación Orientada a Objetos Creasys Ltda. Agosto 2008."

Presentaciones similares


Anuncios Google