Tema 2 Lenguaje de Programación Orientada a Objetos

14
Lenguaje de Programación Orientada a objetos Programación II

Transcript of Tema 2 Lenguaje de Programación Orientada a Objetos

Page 1: Tema 2 Lenguaje de Programación Orientada a Objetos

Lenguaje de Programación Orientada a objetosProgramación II

Page 2: Tema 2 Lenguaje de Programación Orientada a Objetos

Contenido

Abstracción de datos

Identificadores de diseño de una clase

Construcción de clases

Sobrecarga de métodos

Funciones virtuales

Funciones virtuales puras

Funciones amigas

Operadores y Operadores amigos

Espacios de nombres

Page 3: Tema 2 Lenguaje de Programación Orientada a Objetos

Abstracción de datos

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan.

En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra)

La abstracción es la propiedad que permite representar las características esenciales de un objeto sin preocuparse de las restantes características ( no esenciales ).

La abstracción se centra en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementación.

Page 4: Tema 2 Lenguaje de Programación Orientada a Objetos

Identificadores de diseño de un clase

Una clase es un tipo de dato que contiene uno o más elementos llamados dato miembro, y cero, una o más funciones que manipulan esos datos (llamados función miembro).

//Definicion de la clase CuentaBancariaclass CuentaBancaria{

//Definicion de miembros}

Page 5: Tema 2 Lenguaje de Programación Orientada a Objetos

Construcción de clases

class CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }public void HacerDeposito(int importe) //No devuelve valor{}public int Mostrar(int codCtaCte) //Devuelve un entero{}

}CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónBal = Mostrar(cc.Balance); //Obtención

Page 6: Tema 2 Lenguaje de Programación Orientada a Objetos

Sobrecarga de métodos

Sobrecarga: varios métodos con el mismo nombre pero diferente “firma”.

public void HacerDeposito(int importe) {}

public void HacerDeposito(int importe, bool acreditar){}

Page 7: Tema 2 Lenguaje de Programación Orientada a Objetos

Sobrecarga de operadores

public class ComplexNumber { private int real; private int imaginary;

public ComplexNumber() : this(0, 0) // constructor { } public ComplexNumber(int r, int i) // constructor { real = r; imaginary = i; } public override string ToString() { return(System.String.Format("{0} + {1}i", real, imaginary)); } // Sobrecargando el operador ‘+’: public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b) { return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary); } // Sobrecargando el operador ‘-’: public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b) { return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary); } }

Page 8: Tema 2 Lenguaje de Programación Orientada a Objetos

Métodos virtuales

Cuando una declaración de método de instancia incluye un modificador virtual, se dice que el método es un método virtual

La implementación de un método no virtual es invariable. La implementación es la misma tanto si se invoca un método en una instancia de la clase en la que se declaró o en una instancia de una clase derivada.

En cambio, la implementación de un método virtual se puede sustituir por clases derivadas.

Page 9: Tema 2 Lenguaje de Programación Orientada a Objetos

Ejemplo

En el siguiente ejemplo se ilustran las diferencias entre los métodos virtuales y los métodos no virtuales:

using System; class A { public void F() { Console.WriteLine("A.F"); } public virtual void G() { Console.WriteLine("A.G"); } } class B: A { new public void F() { Console.WriteLine("B.F"); } public override void G() { Console.WriteLine("B.G"); } } class Test { static void Main() { B b = new B(); A a = b; a.F(); b.F(); a.G(); b.G(); } }

Se produce el siguiente resultado:A.FB.FB.GB.G

Page 10: Tema 2 Lenguaje de Programación Orientada a Objetos

Métodos virtuales puros

Una función virtual pura o método virtual puro es una función virtual que necesita ser implementada por una clase derivada que no sea abstracta.

Las clases que contienen métodos virtuales puros son denominadas "abstractas".

Éstas no pueden ser instanciadas directamente, y una subclase de una clase abstracta sólo puede ser instanciada directamente si todos los métodos virtuales puros han sido implementados por esa clase o una clase padre.

Los métodos virtuales puros normalmente tienen una declaración (cabecera) pero no tienen definición (implementación).

Page 11: Tema 2 Lenguaje de Programación Orientada a Objetos

Funciones amigas

Una función amiga es una función no miembro de una clase que puede tener acceso a las partes privadas de una clase; se debe declarar como amiga de la clase mediante la palabra reservada friend.

Las funciones amigas se declaran situando su prototipo de función en la clase de la que son amiga precediéndola con la palabra reservada friend.

Las razones fundamentales para utilizar funciones amigas es que algunas funciones necesitan acceso privilegiado a más de una clase.

Una segunda razón es que las funciones amigas pasan todos sus argumentos a través de la lista de argumentos y cada valor de argumento se somete a la conversión de asignación.

Page 12: Tema 2 Lenguaje de Programación Orientada a Objetos

Operadores amigos

Un operador amigo, al igual que una función amiga, es aquel que aún cuando no es miembro de una clase tiene todos los privilegios de acceso a los miembros de dicha clase.

Page 13: Tema 2 Lenguaje de Programación Orientada a Objetos

Espacios de Nombres

Los espacios de nombres son una manera de organizar los distintos tipos que aparecen en un programa en C#.

Conceptualmente es similar a una carpeta en un sistema de archivo del equipo.

Al igual que las carpetas, los espacios de nombres permiten a las clases tener un nombre completo único.

Un programa en C# contiene uno o más espacios de nombres, que quedan definidos por el programador o como parte de una biblioteca de clases previamente escrita.

Por ejemplo, el espacio de nombres System incluye la clase Console, una clase que contiene los métodos para leer y escribir en la ventana de la consola.

Page 14: Tema 2 Lenguaje de Programación Orientada a Objetos

Espacios de nombres

El espacio de nombres System también contiene múltiples espacios de nombres diferentes, como System.IO y System.Collections.

Sólo .NET Framework tiene más de ochenta espacios de nombres, cada uno con miles de clases: los espacios de nombres se utilizan para minimizar la confusión que se podría producir entre tipos y métodos con nombres parecidos.

Los espacios de nombres tienen las propiedades siguientes:

Organizan proyectos de código de gran tamaño. El operador . delimita los espacios de nombres. El espacio de nombres global es el espacio de nombres

"raíz": global::System siempre hará referencia al espacio de nombres System de .NET Framework.

Para utilizar un espacio de nombre se hace uso de la palabra using.