Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

34
Sergio Sánchez Rios Metodologías de Análisis y Diseño Unidad II Conceptos Básicos de la Orientación a Objetos (Programación). Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática

description

Curso de Metodologías de Análisis y Diseño - Cap. 2

Transcript of Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Page 1: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Metodologías de Análisis y DiseñoUnidad II

Conceptos Básicos de la Orientación a Objetos (Programación).

Sergio Sánchez Rios.

Ingeniero en Informática – Licenciado en Informática

Page 2: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Introducción

Este material de estudio solo fue creado con el objetivo de repasar algunos conceptos aprendidos de programación Orientada a Objetos en cursos de nivel inferior.

El lenguaje utilizado en los ejemplos es C# (nuevo lenguaje de Microsoft), la justificación técnica de su utilización se sustenta es que la sintaxis es muy parecida a la JAVA y C++.

Page 3: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Clases

Existen varias definiciones de clases:

• Una representación abstracta de algo real: esto, ya que los elementos básicos para una clasificación se encuentran en una clase. Ejemplo: Si quisiéramos clasificar a los perros sabríamos que cada uno de ellos tiene comportamientos comunes (caminan, ladran, comen) y características (patas, color de pelo entre otras). Por lo tanto se ocupa la clase perro para agrupar a todos los animales de ese tipo.

• Un proyecto para crear objetos: una clase es esencialmente un proyecto para crear objetos.

Page 4: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Clases (Implementación en C#)

En C# se utiliza para definir una clase la palabra clave class antes del nombre de la clase. Además los miembros de la clase se insertan entre corchetes.

Ejemplo:

class nombre_clase

{

atributos y metodos;

}

Ejemplo Clase Cliente:

class Cliente

{

//propiedades

private rut numeric;

private string nombre;

private string nombre;

//metodos

public void ingresar(…);

public void lista(…..);

….

}

Ejemplo Clase Cliente:

class Cliente

{

//propiedades

private rut numeric;

private string nombre;

private string nombre;

//metodos

public void ingresar(…);

public void lista(…..);

….

}

Page 5: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Objetos

Un objeto es la instancia de una clase. Una clase es una representación abstracta de algo, mientras que un objeto es un ejemplo utilizable de la cosa que representa la clase.

Ejemplo:

Clase Cliente

Objeto cliente JUAN PEREZ

Cada objeto muestra:

Identidad: cada objeto es distinguible.

Comportamiento: los objetos realizan tareas.

Estado: los objetos almacenan información.

Page 6: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Objetos (Implementación en C#)

Un objeto se crea utilizando el operador new para crear un objeto.

Ejemplo:

Cliente newcliente = new Cliente();

Para acceder a los miembros de una clase, se utiliza el nombre de la clase un punto y el nombre del miembro (propiedad o método).

Ejemplo:

newcliente.nombre = “Juan Perez”;

Page 7: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Objetos (Implementación en C#)Miembros estáticos versus instancias

Los miembros estáticos los comparten todas las instancias de una clase.

Los miembros de instancia pertenecen a instancias específicas de una clase, un objeto. Cada instancia de una clase contiene una copia separada de todos los miembros de instancia de la clase.

Por defecto los miembros son de instancia. Para volverlos estáticos, utilice el modificador static antes del nombre del miembro.

Ejemplo:

class Reloj{

static int hora;

……

}

Un campo static identifica exactamente una sola ubicación de almacenamiento. Sin importar cuantas instancias de un tipo se generen, solamente existe una copia de un campo static.

Un campo static identifica exactamente una sola ubicación de almacenamiento. Sin importar cuantas instancias de un tipo se generen, solamente existe una copia de un campo static.

Los métodos y propiedades estáticas solo pueden ser llamadas utilizando el nombre de la clase

Los métodos y propiedades estáticas solo pueden ser llamadas utilizando el nombre de la clase

Page 8: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Objetos (Implementación en C#)Miembros estáticos versus instancias

Ejemplo uso de static:

>>>>>>

Page 9: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento

El encapsulamiento se puede reflejar de dos maneras:

Combinar los datos y los métodos en una entidad única: una vez que se combinan los datos y las funciones en una entidad única, la entidad misma forma un limite cerrado, creando naturalmente una parte interna y una externa. Ejemplo: la clase.

Controlar la capacidad de acceso a los miembros de la entidad: puede usar este límite para controlar selectivamente la capacidad de acceso de las entidades: algunos se podrán acceder solamente desde dentro; otras tanto como desde dentro como desde fuera. Los miembros que siempre son accesibles son públicos, y los que sólo se pueden acceder desde dentro son privados.

Page 10: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Alcance (Modificadores de Acceso)

Capacidad de Acceso Significado

public El acceso no está restringido

protected El acceso está limitado a la clase de contenido o a los tipos derivados de la clase de contenido.

private El acceso esta limitado al tipo de contenido.

Recomendación: Debe hacer público únicamente aquellos objetos que los usuarios de su clase necesiten ver.

Page 11: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Propiedades

Son miembros de clase que proporcionan acceso a los elementos de un objeto o clase.

Nomenclatura:

public tipodato miPropiedad{

get{

//Código para obtener valor de la propiedad

}

set{

//Código para asignar valor a la propiedad

}

}

Page 12: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Propiedades

Ejemplo:

>>>>>>

Page 13: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Constructores

Un constructor es el que permite crear e inicializar una instancias de una clase. Es decir, convierte la memoria asignada por new en un objeto.

Nota: El nombre del método constructor es el mismo de la clase y no retorna valores.

Existen dos tipos de constructores:

Constructores de Instancia: son los constructores que inicializan los objetos.

Constructores estáticos: son los que inicializan las clases.

Nota: Sino se define un constructor, se crea un constructor por defecto

Page 14: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Constructores

Un constructor es el que permite crear e inicializar una instancias de una clase. Es decir, convierte la memoria asignada por new en un objeto.

Nota: El nombre del método constructor es el mismo de la clase y no retorna valores.

Existen dos tipos de constructores:

Constructores de Instancia: son los constructores que inicializan los objetos.

Constructores estáticos: son los que inicializan las clases.

Nota: Sino se define un constructor, se crea un constructor por defecto.

Page 15: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOEncapsulamiento (Implementación en C#)

Constructores

Ejemplo:

>>>>

Page 16: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia

“La capacidad de utilizar toda la funcionalidad de una clase existente y ampliar esas capacidades sin volver a escribir la clase original”.

Más técnicamente, la herencia especifica una relación es un tipo de

Un perro es un tipo de animal.

Un conejo es un tipo de animal.

Animal

Conejo Perro

Las clases derivadas heredan propiedades y métodos de una clase base.

Las clases derivadas heredan propiedades y métodos de una clase base.

Por lo tanto, la clase derivada reutiliza la funcionalidad de la clase base. (REUTILIZACIÓN)

Por lo tanto, la clase derivada reutiliza la funcionalidad de la clase base. (REUTILIZACIÓN)

Page 17: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia

Tipos de Herencia

Herencia Única: deriva de una clase base

Herencia Múltiple: deriva de dos o más clases.

Animal

Perro

Animal

Perro

Mamífero

Page 18: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia (Implementación en C#)

Cuando se crea una clase derivada, se debe especificar la clase base de la cuál deriva.

Utilice la siguiente sintaxis:

class nombre_clase : nombre_clase_base

{

// Cuerpo de la clase

…..

}

Una clase derivada hereda todo de su clase base (con excepción de los constructores y destructores de la clase base).

Una clase derivada hereda todo de su clase base (con excepción de los constructores y destructores de la clase base).

Page 19: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia (Implementación en C#)

Ejemplo:

>>>>

Page 20: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia (Implementación en C#)

Acceder a los miembros de la clase base

Una clase derivada podrá acceder directamente a un miembro de la clase base si este es declarado como public (no es recomendable) o protected.

Si se declara como protected, significa que los miembros estarán accesibles para todas las clases derivadas de manera directa e indirecta de la clase base.

Page 21: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia - Interfaces

Una interfaz especifica un contrato sintáctico y semántico al cual se deben adherir todas las clases derivadas. Específicamente, una interfaz describe la parte de qué del contrato, y las clases que implementan la interfaz describen la parte del como.

En resumen, una interfaz es como una clase sin código.

Page 22: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia – Interfaces (Implementación en C#)

Para declarar una interfaz, se utiliza la palabra clave interface en lugar de class.

Nota: se recomienda que todas las interfaces comiencen con el prefijo “I”.

Ejemplo:

interface Ipersona

{

void come();

string nombre();

}

Consideraciones sobre Interfaces:

-Una clase puede implementar cero o más interfaces.

-Una Clase debe implementar todos los métodos heredados de interfaces.

-El método de implementación debe ser el mismo que el método de la interfaz.

-DE LAS INTERFACES NO SE PUEDEN CREAR INSTANCIAS.

Consideraciones sobre Interfaces:

-Una clase puede implementar cero o más interfaces.

-Una Clase debe implementar todos los métodos heredados de interfaces.

-El método de implementación debe ser el mismo que el método de la interfaz.

-DE LAS INTERFACES NO SE PUEDEN CREAR INSTANCIAS.

Page 23: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia – Interfaces (Implementación en C#)

Ejemplo:

>>>>

Page 24: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia – Clases Abstractas

Resulta útil crear una clase que contenga métodos que las clases derivadas deben implementar, pero no la misma clase base.

Una clase abstracta es una clase que puede obtener miembros abstractos. Considérese miembros abstractos un método vacío, sin implementación. En lugar de eso, las clases deben proporcionar una implementación.

Además, estas clases abstractas también pueden contener miembros no abstractos.

Las clase abstractas son particularmente útil para proporcionar una implementación parcial de una interfaz que puede ser reutilizada por varias clases derivadas.

Page 25: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia – Clases Abstractas (Implementación en

C#)

Para declarar una clase abstracta o método abstracto debe ocupar la palabra reservada abstract.

Ejemplo:

abstract class Marco

{

//cuerpo puede tener métodos abstractos y otros.

}

Las Clases Abstractas son clase no terminadas que contienen planos para lo que es necesario que se termine.

Las Clases Abstractas son clase no terminadas que contienen planos para lo que es necesario que se termine.

Page 26: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOHerencia – Clases Abstractas (Implementación en

C#)

Ejemplo:

>>>>

Page 27: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo

La capacidad de definir varias clases con una funcionalidad diferente, pero con métodos de nombre idéntico, o propiedades que puede usar el código del cliente de manera intercambiable en el tiempo de ejecución.

Literalmente el polimorfismo significa muchas formas o muchas figuras. Es el concepto de que un método declarado en una clase base se puede implementar en muchas formas distintas en las diferentes clases derivadas.

Page 28: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

El polimorfismo se puede implementar de varias formas:

Polimorfismo de interfaz: Varias clases pueden implementar la misma interfaz. La implementación específica de los miembros de la interfaz pertenecen a cada clase de implementación.

Polimorfismo de herencia: Se puede heredar varias clases de una clase base única. Se pueden sobrescribir los miembros base para proporcionar diferentes implementaciones.

Polimorfismo a través de las clases abstractas: se pueden implementar algunos o todos los miembros de la clase abstracta (heredada), y queda en la clase heredada proporcionar esa implementación. Los miembros que se implementan aún pueden sobrescribirse.

Page 29: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

Polimorfismo de interfaz

Esta es una técnica poderosa en la programación orientada a objetos es la capacidad de implementar varias interfaces en un objeto.

Ejemplo:

>>>>

Page 30: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

Polimorfismo de herencia

Este es un mecanismo potente para tareas de desarrollo a escala pequeña, pero por lo general ha probado ser problemático para sistemas a gran escala.

Métodos Virtuales

Para proporcionar este tipo de polimorfismo se deben utilizar los métodos virtuales. Un método virtual es uno cuya implementación se puede reemplazar a través de un método en una clase derivada.

Cuando crea un método en una clase base que espera que se altere en las clases derivadas, defina el método en su clase base como un método virtual.

Page 31: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

Polimorfismo de herencia

Para declarar un método virtual se utiliza la palabra clave virtual.

Ejemplo:

class ejemplo

{

public virtual metodo() { /* cuerpo método */ }

}

Para sobrescribir un método en la clase derivada se utiliza la palabra reservada override.

Page 32: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

Polimorfismo de herencia

Ejemplo:

>>>>

Page 33: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

Principios Básicos de la OOPolimorfismo (Implementación en C#)

Polimorfismo a través de clase abstracta

Ejemplo:

>>>>

Page 34: Unidad 2 ProgramacióN Orientada A Objetos (Repaso)

Sergio Sánchez Rios

BibliografíaGuía del Tópico:

Software Engineering 6a. ed.– Ian Sommerville – Pearson Education – 2000. (Cap. 6)

Ingeniería de Software Teoría y Práctica – Shari Lawrence Pfleeger – Pearson Education – 2002.

Utilización de UML en ingeniería del software con objetos y componentes – Perdita Stevens & Rob Pooley – Addison Wesley – 2002.

UML y Patrones una introducción al análisis y diseño orientados a objeto y al proceso unificado – Craig Larman – Prentice Hall - 2002.