taller n°1

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

Upload: marina

Post on 25-Jan-2016

29 views

Category:

Documents


1 download

DESCRIPTION

Taller N°1. Programación Orientada a Objetos. Creasys Ltda. Agosto 2008. Objetivos. Lograr conocer los elementos de la Programación a los Objetos. Lograr comprender características básicas de los objetos. ¿ A quién está dirigido este taller ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Taller N°1

Taller N°1

Programación Orientada a Objetos

Creasys Ltda. Agosto 2008

Page 2: Taller N°1

Objetivos

Lograr conocer los elementos de la Programación a los Objetos.

Lograr comprender características básicas de los objetos.

Page 3: Taller N°1

¿ 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

Page 4: Taller N°1

Contenidos

Introducción¿ Qué es la OOP ?Conceptos básicos

Clase Objeto Herencia Encapsulación Polimorfismo

Page 5: Taller N°1

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:

Page 6: Taller N°1

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

Page 7: Taller N°1

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.

Page 8: Taller N°1

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.

Page 9: Taller N°1

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”.

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”.

Page 10: Taller N°1

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.

Page 11: Taller N°1

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

Page 12: Taller N°1

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".

Page 13: Taller N°1

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.

Page 14: Taller N°1

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.

Page 15: Taller N°1

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.

Page 16: Taller N°1

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.

Page 17: Taller N°1

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

Page 18: Taller N°1

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.

Page 19: Taller N°1

Encapsulación

Capacidad de ocultar datos y metodos a los demas objetos.

Page 20: Taller N°1

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.

Page 21: Taller N°1

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.

Page 22: Taller N°1

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

Page 23: Taller N°1

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.

Page 24: Taller N°1

RecomendacionesDivide 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.

Page 25: Taller N°1

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.

Page 26: Taller N°1

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.

Page 27: Taller N°1

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.

Page 28: Taller N°1

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 (‘->’).

Page 29: Taller N°1

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

Page 30: Taller N°1

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.

Page 31: Taller N°1

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):

Page 32: Taller N°1

Dim oFFMM1 as NEW classFFMMDim oFFMM2 as NEW classFFMMDim oFFMM3 as NEW classFFMMDim oVentaFFMM as New classVentaoFFMM1.Precio = 100oFFMM1.Cantidad = 10oFFMM1.Calcular ‘ calcula PxQ

oFFMM2.Precio = 50oFFMM2.Cantidad = 10oFFMM2.Calcular ‘ calcula PxQ

oFFMM3.Precio = 1500oFFMM3.Cantidad = 1oFFMM3.Calcular ‘ calcula PxQ

oVentaFFMM.Agregar(oFFMM1)oVentaFFMM.Agregar(oFFMM2)oVentaFFMM.Agregar(oFFMM3)

oVentaFFMM.Calcular ‘ calcula sumatoria de los tres FFMM

Page 33: Taller N°1

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:

Page 34: Taller N°1

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.

Page 35: Taller N°1

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".

Page 36: Taller N°1

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".

Page 37: Taller N°1

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.

Page 38: Taller N°1

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 SubEnd Class

Public Class TPersonaPrivate _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