7. Fundamentos De Oo
-
Upload
esteban-soraire -
Category
Documents
-
view
443 -
download
0
description
Transcript of 7. Fundamentos De Oo
![Page 1: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/1.jpg)
Fundamentos de la programación orientada
a objetos
![Page 2: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/2.jpg)
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
![Page 3: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/3.jpg)
Clases y objetos
¿Qué es una clase?
¿Qué es un objeto?
Comparación de clases y estructuras
Abstracción
![Page 4: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/4.jpg)
¿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?¿COCHE?
![Page 5: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/5.jpg)
¿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
![Page 6: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/6.jpg)
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; ...} }
![Page 7: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/7.jpg)
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
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
![Page 8: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/8.jpg)
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
![Page 9: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/9.jpg)
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 ?
![Page 10: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/10.jpg)
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 ?
![Page 11: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/11.jpg)
¿Por qué se encapsula?
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
Retirar( )
Ingresar( )
euros 12
Retirar( )
Ingresar( )
saldo 12,56
céntimos 56
![Page 12: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/12.jpg)
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"
![Page 13: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/13.jpg)
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%
![Page 14: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/14.jpg)
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
![Page 15: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/15.jpg)
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
![Page 16: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/16.jpg)
“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;
}}
![Page 17: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/17.jpg)
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úblicosdescriben un
comportamientoaccesible
Métodos públicosdescriben un
comportamientoaccesible
Campos privadosdescriben un
estadoinaccesible
Campos privadosdescriben un
estadoinaccesible
![Page 18: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/18.jpg)
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); }}
horaminuto
ahora
suya ......
nuevoobjetoCuentaBancaria
![Page 19: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/19.jpg)
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?
![Page 20: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/20.jpg)
Definición de sistemas orientados a objetos
Herencia
Jerarquías de clases
Herencia sencilla y múltiple
Polimorfismo
Clases base abstractas
Interfaces
![Page 21: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/21.jpg)
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úsicoMúsico
Violinista Violinista
Clase base
Clase derivada
Generalización
Especialización ¿Es éste un buenejemplo de herencia ?
![Page 22: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/22.jpg)
Jerarquías de clases
Las clases con relaciones de herencia forman jerarquías de clases
MúsicoMúsico
??????
Músico de cuerda
Músico de cuerda
ViolínViolín??????
Instrumento musical
Instrumento musical
toca
toca
tocaViolinistaViolinista
Instrumento de cuerda
Instrumento de cuerda
![Page 23: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/23.jpg)
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ínViolín
Instrumento musical
Instrumento musical
Instrumento de cuerda
Instrumento de cuerda
Con teclasCon teclas
Violín tiene una sola clase base directa
Instrumento de cuerda tiene dos clases base directas
![Page 24: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/24.jpg)
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 cuerdaMúsico de cuerda
AfinaTuInstrumento( )AfinaTuInstrumento( )
GuitarristaGuitarrista
AfinaTuInstrumento( )AfinaTuInstrumento( )
ViolinistaViolinista
AfinaTuInstrumento( )AfinaTuInstrumento( )
Un método sin cuerpo se llama
operación
Un método sin cuerpo se llama
operación
![Page 25: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/25.jpg)
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 instanciasde clases concretas
Se pueden crear instanciasde clases concretas
No se pueden crear instanciasde clases abstractas
No se pueden crear instanciasde clases abstractas
![Page 26: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/26.jpg)
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.
Puede contener implementación.No se pueden crear instancias de
una interfaz.
Implementa las operaciones heredadas.Se pueden crear instancias de una clase
concreta.
Implementa las operaciones heredadas.Se pueden crear instancias de una clase
concreta.
![Page 27: 7. Fundamentos De Oo](https://reader035.fdocuments.es/reader035/viewer/2022081512/5589005ed8b42a23708b45eb/html5/thumbnails/27.jpg)
Práctica – Creación y uso de clases