1 / 27

Fundamentos de la programación orientada a objetos

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?

ramya
Download Presentation

Fundamentos de la programación orientada a objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fundamentosde 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? ¿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

  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; ... } }

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

  11. ¿Por qué se encapsula? Retirar( ) • Porque permite el control • El objeto se usa sólocon los métodos públicos • Porque permite el cambio • El uso del objeto novaría si cambia el tipode los datos privados Ingresar( ) û saldo 12,56 Retirar( ) Ingresar( ) euros 12 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( ) Retirar( ) Ingresar( ) Ingresar( ) saldo 12,56 saldo 12,56 prop. “Pedro" prop. “Juan"

  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( ) Retirar( ) Ingresar( ) Ingresar( ) saldo 12,56 saldo 99,12 û û interés 7% 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 La clase cuenta Un objeto cuenta Retirar( ) û Interés( ) Ingresar( )  saldo 99,12 û interés 7% prop. “Pedro" 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; } }

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

  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); } } ahora hora minuto nuevo objeto CuentaBancaria suya ... ...

  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; } 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 Generalización Clase base Violinista ¿Es éste un buen ejemplo de herencia ? Especialización Clase derivada

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

  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 musical Con teclas Violín Instrumento de cuerda 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 Un método sincuerpo se llama operación AfinaTuInstrumento( ) Guitarrista Violinista AfinaTuInstrumento( ) AfinaTuInstrumento( )

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

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

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

More Related