PDF de programación - Tema 6: Programación Orientada a Objetos en C#

Imágen de pdf Tema 6: Programación Orientada a Objetos en C#

Tema 6: Programación Orientada a Objetos en C#gráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.194 visualizaciones desde el 14 de Enero del 2017
271,9 KB
118 paginas
Creado hace 10a (13/12/2009)
Tema 6: Programación Orientada
a Objetos en C#

Programación Orientada a Objetos

Curso 2009/2010
Begoña Moros Valle

Contenido

Introducción.
Clases y Objetos en C#:

Módulos: Clases, Estructuras, Espacios de nombres, Ensamblados.
Tipos del lenguaje.
Definición y semántica de los operadores.
Métodos y mensajes. Paso de parámetros.
Construcción de objetos.

Herencia en C#:

Polimorfismo y ligadura.
Clase object.
Casting y Compatibilidad de tipos.
Clases abstractas.

Interfaces.



Herencia múltiple.
Genericidad.
Estrategias – Delegados.

Iteradores.



Corrección y Robustez en C#: asertos y excepciones

Tema 6

POO en C#

2

Introducción
C# es un lenguaje creado por Microsoft y

liderado por Anders Heljsberg.

Es un lenguaje orientado a objetos puro

inspirado en C++, Java, Delphi y Eiffel.

Las aplicaciones C# son ejecutadas en un

entorno controlado llamado CLR (Common
LanguageRuntime).

El lenguaje está estandarizado en ECMA e

ISO.

Actualmente está en la versión 3.0.

Tema 6

POO en C#

3

Plataforma .NET
El compilador de C# genera código

intermedio para la plataforma .NET.

El código intermedio es ejecutado por una

máquina virtual: CLR

C# es sólo uno de los lenguajes de la

plataforma .NET: C++, VB.NET, Eiffel.NET, etc.
La plataforma .NET está ligada a los sistemas

operativos Windows.

Proyecto Mono:

Implementación de .NET en otros sistemas

operativos.

Incluye un compilador para C#.
Tema 6

POO en C#

4

Clases y Objetos en C#

Clases.
Propiedades.
Visibilidad.
Espacios de

nombres.

Ensamblados.
Tipos del lenguaje.
Construcción de

objetos.

Estructuras.
Asignación y copia.
Identidad e igualdad.
Métodos y mensajes.
Paso de parámetros.
Operadores.
Instancia actual.
Método Main.

Tema 6

POO en C#

5

Clases

En C# los elementos que definen una clase

son:
Atributos, métodos y constructores ( = Java y

C++)

La declaración de una clase comparte aspectos

en común con Java y C++:
La declaración de una clase incluye la definición e

implementación ( = Java ).

Un fichero de código fuente (extensión .cs) puede
contener la declaración de varias clases ( = C++ ).

Tema 6

POO en C#

6

Clases

C# añade dos nuevos tipos de declaraciones:

Propiedades:

Representan características de los objetos que son

accedidas como si fueran atributos.
Ocultan el uso de métodos get/set.
Una propiedad puede representar un atributo calculado.

Eventos:

Notificaciones que envía un objeto a otros objetos cuando

se produce un cambio de estado significativo.

Propiedades y eventos son el soporte para el

Desarrollo de Software basado en
Componentes.

Tema 6

POO en C#

7

Clase Cuenta 1/4

public class Cuenta {
// Constante
private const int MAX_OPERACIONES = 20;

// Atributo de clase

private static int ultimoCodigo = 0;

// Atributos de instancia

private int codigo;
private double saldo = 100;
private readonly Persona titular;
private EstadoCuenta estado;
private double[] ultimasOperaciones;


Tema 6

POO en C#

8

Clase Cuenta 2/4

public class Cuenta
{


// Constructor
public Cuenta(Persona titular, double saldo)
{

this.codigo = ++ultimoCodigo;
this.titular = titular;
this.saldo = saldo;
estado = EstadoCuenta.OPERATIVA;
ultimasOperaciones = new double[MAX_OPERACIONES];

}


}

Tema 6

POO en C#

9

Clase Cuenta 3/4
public class Cuenta
{ …

get { return saldo; }

// Propiedades
public double Saldo
{
}
public Persona Titular
{
}
public int Codigo
{
}

get { return titular; }

get { return codigo; }

}

Tema 6

POO en C#

10

Clase Cuenta 4/4
public class Cuenta
{ …

}

Tema 6

POO en C#

11

if (cantidad <= saldo)

saldo = saldo - cantidad;

// Métodos de instancia
saldo = saldo + cantidad;

public void Ingreso(double cantidad) {
}
public void Reintegro(double cantidad){

}
// Métodos de clase
public static int GetNumeroCuentas() {
}

return ultimoCodigo;

Clases

Los miembros de una clase pueden ser de

instancia (por defecto) o de clase, utilizando el
modificador static ( = Java y C++).

Los atributos de sólo lectura se marcan

utilizando el modificador readonly (= final de
Java y const de C++):
readonly Persona titular;

Tema 6

POO en C#

12

Clases

Las constantes se declaran const (= final

static de Java y const static de C++):
private const int MAX_OPERACIONES = 20;

Está permitida la inicialización de los

atributos en la declaración ( = Java):
private double saldo = 100;

Los atributos no inicializados en la

declaración o en los constructores toman el valor
por defecto de su tipo de datos ( = Java ).

Tema 6

POO en C#

13

Propiedades

Declaración de propiedades:

public double Saldo
{
}

get { return saldo; }

Se usan como atributos, pero el acceso se

realiza invocando a métodos get/set:

Console.WriteLine("Saldo de la cuenta: " + cuenta.Saldo);

Tema 6

POO en C#

14

Propiedades

Los métodos get/set pueden realizar cálculos:

public double SaldoDolar
{
}

get { return saldo * Banco.CambioDolar(); }

El acceso a la propiedad oculta el cálculo:

Console.WriteLine("Saldo en dólares: " + cuenta.SaldoDolar );

Tema 6

POO en C#

15

Propiedades

En la definición de un método set, el
identificador value representa el valor que va
a ser asignado:

public double Saldo
{

get { return saldo; }
private set { saldo = value; }

}

Es posible indicar un nivel de visibilidad distinto

para cada uno de los métodos.

Tema 6

POO en C#

16

Propiedades

Declaración automática de propiedades:

Evitamos tener que declarar el atributo.
Los métodos get/set sólo consultan y modifican la

propiedad.

public double Saldo
{

get;
private set;

}

Tema 6

POO en C#

17

Visibilidad

El nivel de visibilidad se especifica para cada

declaración ( = Java):
public: visible para todo el código.
private: visible sólo para la clase.
protected: visibilidad para la clase y los subtipos.
internal: visibilidad para el “ensamblado”.
protected internal: visibilidad para la clase y

subtipos dentro del mismo ensamblado.

Por defecto, las declaraciones en una clase son

privadas ( = C++).

Tema 6

POO en C#

18

Espacios de nombres
Un espacio de nombres (namespace) es un
mecanismo para agrupar un conjunto de
declaraciones de tipos relacionadas ( = C++)

Evita la colisión de los nombres de
identificadores.
Se declaran con namespace y pueden estar
definidos en varios ficheros de código fuente.

Los espacios de nombres pueden estar

anidados.

Son diferentes a los paquetes de Java.

Tema 6

POO en C#

19

Espacios de nombres

Para hacer uso de un tipo declarado en un

espacio de nombre se califica su nombre:
GestionCuentas.Cuenta

Podemos indicar que se usan todas las

declaraciones de un espacio de nombres con
using.

using System;
using System.Text;
namespace GestionCuentas
{

enum EstadoCuenta { … }
class Cuenta { … }

}

Tema 6

POO en C#

20

Ensamblados

C# define un nivel de visibilidad entre los tipos
que forman parte del mismo “ensamblado”:
visibilidad internal.
Ensamblado: unidad de empaquetado de

software en la plataforma .NET
Un fichero ejecutable es un ensamblado.
Un ensamblado es un componente software.
Visibilidad de los tipos: internal o public.
Por defecto, la visibilidad es internal.

Tema 6

POO en C#

21

Tipos del lenguaje
Corresponden con los tipos de la plataforma

.NET: Common Type System (CTS):

Tema 6

POO en C#

22

Tipos del lenguaje

C# es un lenguaje orientado a objetos puro.

Todos los tipos definen objetos.
Se distinguen dos tipos de datos:

Tipos con semántica referencia: clases, interfaces,

arrays y “delegados”. Aceptan el valor null.

Tipos con semántica por valor: tipos primitivos,

enumerados y estructuras.

Por tanto, los tipos primitivos son objetos:

Podemos aplicar métodos sobre los tipos primitivos

como ToString o Equals.

Tipos: char, int, long, float, double, bool, etc.

Tema 6

POO en C#

23

Enumerados

Los enumerados son objetos con

semántica valor.

Declaración de un enumerado:

enum EstadoCuenta { OPERATIVA, INMOVILIZADA, NUMEROS_ROJOS }

Al igual que en C++, las etiquetas del

enumerado representan valores enteros.

Tema 6

POO en C#

24

Enumerados

Uso de un enumerado:

public class Cuenta
{ …

private EstadoCuenta estado;
public Cuenta(Persona titular, double saldo)
{ …
}

estado = EstadoCuenta.OPERATIVA;

Si no se inicializa un enumerado, toma como

valor por defecto la primera etiqueta.

Tema 6

POO en C#

25

Arrays
Los arrays son objetos con semántica

referencia.

Se declaran y usan igual que en Java:

public class Cuenta
{


private double[] ultimasOperaciones;
public Cuenta(Persona titular, double saldo)
{


ultimasOperaciones = new double[MAX_OPERACIONES];

}

Tema 6

POO en C#

26

Construcción de objetos

Declaración y construcción de objetos

Persona persona;
persona = new Persona("34565433", "Juan González");
Cuenta cuenta = new Cuenta(persona, 300
  • Links de descarga
http://lwp-l.com/pdf599

Comentarios de: Tema 6: Programación Orientada a Objetos en C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad