La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Fundamentos de la programación orientada a objetos.

Presentaciones similares


Presentación del tema: "Fundamentos de la programación orientada a objetos."— Transcripción de la presentación:

1 Fundamentos de la programación orientada a objetos

2 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

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

4 ¿Qué es una clase? Para el filósofo… Un artefacto de clas ificación humana Clas ificamos 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?

5 ¿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

6 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 Time class BankAccount { public int hour;... public int minute;... } struct Time class BankAccount { public int hour;... public int minute;... }

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

8 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

9 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 ?

10 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 ?

11 ¿Por qué se encapsula? Porque permite el control 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 Retirar( ) Ingresar( ) euros 12 Retirar( ) Ingresar( ) saldo 12,56 céntimos 56

12 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"

13 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%

14 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 cuentaLa clase cuenta Las clases contienen datos y métodos estáticos Los objetos contienen datos y métodos de objetos

15 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

16 Hola, mundo de nuevo using System; class Hello { public static int Main( ) { Console.WriteLine(Hello, World); return 0; } using System; class Hello { public static int Main( ) { Console.WriteLine(Hello, World); return 0; }

17 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; } 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 Métodos públicos describen un comportamiento accesible Campos privados describen un estado inaccesible Campos privados describen un estado inaccesible

18 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); } 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

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

20 Definición de sistemas orientados a objetos Herencia Jerarquías de clases Herencia sencilla y múltiple Polimorfismo Clases base abstractas Interfaces

21 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 ?

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

23 Herencia sencilla y múltiple Herencia sencilla: derivadas de una clase base Herencia múltiple: derivadas de dos o más clases base Instrumento de cuerda Instrumento de cuerda Violín Instrumento musical Instrumento musical Instrumento de cuerda Instrumento de cuerda Con teclas Violín tiene una sola clase base directa Instrumento de cuerda tiene dos clases base directas

24 Polimorfismo El nombre del método reside en la clase base Los distintos cuerpos del método residen en las clases derivadas Músico de cuerda AfinaTuInstrumento( ) Guitarrista AfinaTuInstrumento( ) Violinista AfinaTuInstrumento( ) Un método sin cuerpo se llama operación Un método sin cuerpo se llama operación

25 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 } Músico de cuerda { abstract } Guitarrista « concrete » Guitarrista « concrete » Violinista « concrete » Violinista « concrete » Se pueden crear instancias de clases concretas Se pueden crear instancias de clases concretas No se pueden crear instancias de clases abstractas

26 Interfaces Las interfaces contienen sólo operaciones, no implementación Músico de cuerda { abstract } Músico de cuerda { abstract } Violinista « concrete » Violinista « concrete » Músico « interface » Músico « interface » Nada más que operaciones. No se pueden crear instancias de una interfaz. 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.

27 Práctica – Creación y uso de clases


Descargar ppt "Fundamentos de la programación orientada a objetos."

Presentaciones similares


Anuncios Google