programacion

Page 1

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? ¿COCHE? ¿COCHE? 

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


¿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

struct struct Time Time {{ public public int int public public int int }}

hour; hour; minute; minute;

class class BankAccount BankAccount {{ ... ... ... ... }}


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 El objetivo objetivo de de la la abstracción abstracción es es no no perderse perderse en en vaguedades vaguedades yy crear crear un un nuevo nuevo nivel nivel semántico semántico en en el el que que se se pueda pueda ser ser absolutamente absolutamente preciso. preciso. Edsger Edsger Dijkstra 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( )

Retirar( )

saldo

saldo

Ingresar( ) ¿CuentaBancaria ?

Ingresar( ) ¿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( ) saldo Ingresar( ) ¿CuentaBancaria ?

Retirar( )

saldo Ingresar( )

¿CuentaBancaria ?


¿Por qué se encapsula?

Porque permite el control 

Retirar( )

El objeto se usa sólo con los métodos públicos

Porque permite el cambio 

El uso del objeto no varía si cambia el tipo de los datos privados

Ingresar( )

saldo 12,56

Retirar( ) Ingresar( ) euros 12 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( )

Retirar( )

Ingresar( )

Ingresar( )

saldo 12,56

saldo

12,56

prop. “Juan"

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

Retirar( )

Ingresar( )

Ingresar( )

saldo 12,56 interés 7%

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

La clase cuenta Interés( )

 interés 7% Las clases contienen datos y métodos estáticos

Un objeto cuenta

 

Retirar( ) Ingresar( ) saldo

99,12

prop.

“Pedro"

Los objetos contienen datos y métodos de objetos


 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 using class class {{

}}

System; System; Hello Hello public public static static int int Main( Main( )) {{ Console.WriteLine(“Hello, Console.WriteLine(“Hello, World”); World”); return return 0; 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 class BankAccount BankAccount Métodos Métodos públicos públicos {{ describen describen un un public void Withdraw(decimal cantidad) public void Withdraw(decimal cantidad)comportamiento comportamiento {{ ... accesible accesible ... }} public public void void Deposit(decimal Deposit(decimal cantidad) cantidad) Campos {{ ... Campos privados privados ... }} describen describen un un private private decimal decimal balance; balance; estado estado private string name; private string name; inaccesible 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 class Program Program ahora hora {{ minuto static static void void Main( Main( )) nuevo suya {{ ... objeto ... CuentaBancaria Reloj ahora; Reloj ahora; ahora.hora ahora.hora == 11; 11; Cuenta Cuenta Bancaria Bancaria suya suya == new new CuentaBancaria( CuentaBancaria( ); ); suya.Ingresar(999999M); suya.Ingresar(999999M); }} }}


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 class CuentaBancaria CuentaBancaria {{ ... ... public public void void PoneNombre(string PoneNombre(string nombre) nombre) Si esta instrucción fuera {{ nombre = nombre; this.nombre = nombre; this.nombre = nombre; ¿qué ocurriría? }} private private string string nombre; nombre; }}


 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

Generalización

Músico Músico

Especialización

Violinista Violinista

Clase base

Clase derivada

¿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

Músico Músico de de cuerda cuerda

??? ???

Violinista Violinista

toca

Instrumento Instrumento musical musical

toca

Instrumento Instrumento de de cuerda cuerda

toca

Violín Violín

??? ???


Herencia sencilla y múltiple

Herencia sencilla: derivadas de una clase base

Herencia múltiple: derivadas de dos o más clases base Instrumento Instrumento de de cuerda cuerda

Instrumento Instrumento musical musical

Con Con teclas teclas

Violín Violín

Instrumento Instrumento de de cuerda cuerda

Violín tiene una sola clase base directa

Instrumento de cuerda tiene dos clases base directas


Polimorfismo

El nombre del método reside en la clase base

Los distintos cuerpos del método residen en las clases derivadas Músico Músico de de cuerda cuerda AfinaTuInstrumento( AfinaTuInstrumento( ))

Un Un método método sin sin cuerpo cuerpo se se llama llama operación operación

Guitarrista Guitarrista

Violinista Violinista

AfinaTuInstrumento( AfinaTuInstrumento( ))

AfinaTuInstrumento( AfinaTuInstrumento( ))


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 Músico de de cuerda cuerda {{ abstract abstract }}

No No se se pueden pueden crear crear instancias instancias de de clases clases abstractas abstractas Se Se pueden pueden crear crear instancias instancias de de clases clases concretas concretas

Guitarrista Guitarrista «« concrete concrete »»

Violinista Violinista «« concrete concrete »»


Interfaces 

Las interfaces contienen sólo operaciones, no implementación Músico Músico «« interface interface »»

Músico Músico de de cuerda cuerda {{ abstract abstract}}

Violinista Violinista «« concrete concrete »»

Nada Nada más más que que operaciones. operaciones. No No se se pueden pueden crear crear instancias instancias de de una una interfaz. interfaz.

Puede Puede contener contener implementación. implementación. No No se se pueden pueden crear crear instancias instancias de de una una interfaz. interfaz.

Implementa Implementa las las operaciones operaciones heredadas. heredadas. Se Se pueden pueden crear crear instancias instancias de de una una clase clase concreta. concreta.


Práctica – Creación y uso de clases


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.