Fundamentos de la programación orientada a objetos Descripción general



Descargar 14,41 Kb.
Fecha de conversión08.06.2017
Tamaño14,41 Kb.

Fundamentos de la programación orientada a objetos

Descripción general

  • Clases y objetos
  • Uso de la encapsulación
  • El lenguaje C# y la orientación a objetos
  • Definición de sistemas orientados a objetos

Clases y objetos

  • ¿Qué es una clase?
  • ¿Qué es un objeto?
  • Comparación de clases y estructuras
  • Abstracción

¿Qué es una clase?

  • Para el filósofo…
    • Un artefacto de clasificación humana
    • Clasificamos según un comportamiento o atributos comunes
    • Acordamos descripciones y nombres de clases útiles
    • Creamos vocabulario; nos comunicamos; ¡pensamos!
  • Para el programador orientado a objetos…
    • Una construcción sintáctica con nombre que describe un comportamiento y atributos comunes
    • Una estructura de datos que incluye datos y funciones
  • ¿COCHE?

¿Qué es un objeto?

  • Un objeto es una instancia de una clase
  • Los objetos se caracterizan por:
    • Identidad: Los objetos se distinguen unos de otros
    • Comportamiento: Los objetos pueden realizar tareas
    • Estado: Los objetos contienen información

Comparación de clases y estructuras

  • Una estructura define un valor
    • Sin identidad, estado accesible, sin comportamiento añadido
  • Una clase define un objeto
    • Identidad, estado inaccesible, comportamiento añadido

Abstracción

  • La abstracción es ignorancia selectiva
    • Decidir qué es importante y qué no lo es
    • Concentrarse en lo importante y depender de ello
    • Ignorar lo que no es importante y no depender de ello
    • Usar encapsulación para forzar una abstracción
  • El objetivo de la abstracción es no perderse en vaguedades y crear un nuevo nivel semántico en el que se pueda ser absolutamente preciso.
  • Edsger Dijkstra

Uso de la encapsulación

  • Combinación de datos y métodos
  • Control de la visibilidad de acceso
  • ¿Por qué se encapsula?
  • Datos de objetos
  • Uso de datos estáticos
  • Uso de métodos estáticos

Combinación de datos y métodos

  • Combinación de datos y métodos en una sola cápsula
  • La frontera de la cápsula crea un espacio interior y otro exterior
  • Retirar( )
  • Ingresar( )
  • saldo
  • Retirar( )
  • Ingresar( )
  • saldo
  • ¿CuentaBancaria ?
  • ¿CuentaBancaria ?

Control de la visibilidad de acceso

  • Los métodos son públicos, accesibles desde el exterior
  • Los datos son privados, accesibles sólo desde el interior
  • Retirar( )
  • Ingresar( )
  • saldo
  • Retirar( )
  • Ingresar( )
  • saldo
  • ¿CuentaBancaria ?
  • ¿CuentaBancaria ?

¿Por qué se encapsula?

  • Porque permite el control
    • El objeto se usa sólo con los métodos públicos
  • Porque permite el cambio
  • Retirar( )
  • Ingresar( )
  • euros 12
  • Retirar( )
  • Ingresar( )
  • saldo 12,56
  • céntimos 56

Datos de objetos

  • Los datos de objetos describen información para objetos concretos
    • Por ejemplo, cada cuenta bancaria tiene su propio saldo. Si dos cuentas tienen el mismo saldo, será sólo una coincidencia .
  • Retirar( )
  • Ingresar( )
  • saldo 12,56
  • prop. “Juan"
  • Retirar( )
  • Ingresar( )
  • saldo 12,56
  • prop. “Pedro"

Uso de datos estáticos

  • Los datos estáticos describen información para todos los objetos de una clase
    • Por ejemplo, supongamos que todas las cuentas comparten el mismo interés. No sería conveniente almacenar el interés en todas las cuentas. ¿Por qué?
  • Retirar( )
  • Ingresar( )
  • saldo 12,56
  • interés 7%
  • Retirar( )
  • Ingresar( )
  • saldo 99,12
  • interés 7%

Uso de métodos estáticos

  • Los métodos estáticos acceden sólo a datos estáticos
    • Un método estático se llama en la clase, no el objeto
  • Interés( )
  • interés 7%
  • Retirar( )
  • Ingresar( )
  • saldo 99,12
  • prop. “Pedro"
  • Un objeto cuenta
  • La clase cuenta
  • Las clases contienen datos
  • y métodos estáticos

El lenguaje C# y la orientación a objetos

  • “Hola, mundo” de nuevo
  • Definición de clases simples
  • Instancias de nuevos objetos
  • Uso del operador this

“Hola, mundo” de nuevo

  • using System;
  •  
  • class Hello
  • {
  • public static int Main( )
  • {
  • Console.WriteLine(“Hello, World”);
  • return 0;
  • }
  • }

Definición de clases simples

  • Datos y métodos juntos dentro de una clase
  • Los métodos son públicos, los datos son privados
  • class BankAccount
  • { public void Withdraw(decimal cantidad)
  • { ... }
  • public void Deposit(decimal cantidad)
  • { ... }
  • private decimal balance;
  • private string name;
  • }
  • Métodos públicos
  • describen un
  • comportamiento
  • accesible
  • Campos privados
  • describen un
  • estado
  • inaccesible

Instancias de nuevos objetos

  • Al declarar una variable de clase no se crea un objeto
    • Para crear un objeto se usa el operador new
  • class Program
  • {
  • static void Main( )
  • {
  • Reloj ahora;
  • ahora.hora = 11;
  • Cuenta Bancaria suya = new CuentaBancaria( );
  • suya.Ingresar(999999M);
  • }
  • }
  • hora
  • minuto
  • ahora
  • suya
  • ...
  • ...
  • nuevo
  • objeto
  • CuentaBancaria

Uso de la palabra reservada this

  • La palabra reservada this apunta al objeto usado para la llamada al método
    • Es útil en caso de conflicto entre identificadores de distintos ámbitos
  • class CuentaBancaria
  • {
  • ...
  • public void PoneNombre(string nombre)
  • { this.nombre = nombre;
  • }
  • private string nombre;
  • }
  • Si esta instrucción fuera
  • nombre = nombre;
  • ¿qué ocurriría?

Definición de sistemas orientados a objetos

  • Herencia
  • Jerarquías de clases
  • Herencia sencilla y múltiple
  • Polimorfismo
  • Clases base abstractas
  • Interfaces

Herencia

  • La herencia indica una relación “es un tipo de"
    • La herencia es una relación entre clases
    • Las nuevas clases añaden especialización a las existentes
  • Músico
  • Violinista
  • Clase base
  • Clase derivada
  • Generalización
  • Especialización
  • ¿Es éste un buen
  • ejemplo de
  • herencia ?

Jerarquías de clases

  • Las clases con relaciones de herencia forman jerarquías de clases
  • Músico
  • ???
  • Músico de
  • cuerda
  • Violín
  • ???
  • Instrumento
  • musical
  • toca
  • toca
  • toca
  • Violinista
  • Instrumento de
  • cuerda

Herencia sencilla y múltiple

  • Instrumento de
  • cuerda
  • Violín
  • Instrumento
  • musical
  • Instrumento de
  • cuerda
  • Con teclas
  • Violín tiene una sola clase base directa
  • Instrumento de cuerda tiene dos clases base directas

Polimorfismo

  • Músico de cuerda
  • AfinaTuInstrumento( )
  • Guitarrista
  • AfinaTuInstrumento( )
  • Violinista
  • AfinaTuInstrumento( )
  • Un método sin cuerpo se llama
  • operación

Clases base abstractas

  • Algunas clases existen sólo para ser clases base
    • No tiene sentido crear instancias de estas clases
    • Estas clases son abstractas
  • Músico de cuerda
  • { abstract }
  • Guitarrista
  • « concrete »
  • Violinista
  • « concrete »
  • Se pueden crear instancias
  • de clases concretas
  • No se pueden crear instancias de clases abstractas

Interfaces

  • Las interfaces contienen sólo operaciones, no implementación
  • Músico de cuerda
  • { abstract }
  • Violinista
  • « concrete »
  • Músico
  • « interface »
  • Nada más que operaciones.
  • No se pueden crear instancias de una interfaz.
  • Puede contener implementación. No se pueden crear instancias de una interfaz.
  • Implementa las operaciones heredadas. Se pueden crear instancias de una clase concreta.

Práctica – Creación y uso de clases



La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal