Download - 9 fundamentos de oo
Módulo I- Introducción a la Módulo I- Introducción a la Programación en la Plataforma .Net Programación en la Plataforma .Net con C#con C#
TEMARIOTEMARIO
CAPITULO IV.- INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJECTOS
Fundamento de la Fundamento de la Programación Orientada a Programación Orientada a ObjectosObjectos
¿Qué es una clase?¿Qué es una clase?Para el filósofo…Para el filósofo… Un artefacto deUn artefacto de clas clasificación humanaificación humana ClasClasificamos según un comportamiento o ificamos según un comportamiento o
atributos comunes atributos comunes Acordamos descripciones y nombres de Acordamos descripciones y nombres de
clasesclases útiles útiles Creamos vocabulario; nos comunicamos; Creamos vocabulario; nos comunicamos;
¡pensamos!¡pensamos!
Para el programador orientado a Para el programador orientado a objetos…objetos… Una construcción sintáctica con nombre Una construcción sintáctica con nombre
que describe un comportamiento y que describe un comportamiento y atributos comunesatributos comunes
Una estructura de datos que incluye Una estructura de datos que incluye datos y funcionesdatos y funciones
¿COCHE?¿COCHE?
INTRODUCCIÓNINTRODUCCIÓNINTRODUCCIÓNINTRODUCCIÓN
¿Qué es una Clase?¿Qué es una Clase?
Una clase es una descripción de un Una clase es una descripción de un grupo de objetos con: grupo de objetos con: Propiedades en común (atributos)Propiedades en común (atributos) Comportamiento similar (operaciones)Comportamiento similar (operaciones) La misma forma de relacionarse con La misma forma de relacionarse con
otros objetos (relaciones)otros objetos (relaciones) Una semántica en común (significan lo Una semántica en común (significan lo
mismo)mismo)
Una clase es una abstracción que:Una clase es una abstracción que: Enfatiza las características relevantesEnfatiza las características relevantes Suprime otras características Suprime otras características
(simplificación)(simplificación)
Un objeto es una instancia de una Un objeto es una instancia de una claseclase
Ejemplo de una ClaseEjemplo de una ClaseClase: CursoClase: CursoEstado (Atributos)Estado (Atributos) NombreNombre UbicaciónUbicación Días OfrecidosDías Ofrecidos Horario de InicioHorario de Inicio Horario de TérminoHorario de Término
Comportamiento (Métodos)Comportamiento (Métodos) Agregar un AlumnoAgregar un Alumno Borrar un AlumnoBorrar un Alumno Entregar un Listado del CursoEntregar un Listado del Curso Determinar si está CompletoDeterminar si está Completo
¿Qué es un objeto?¿Qué es un objeto?
Un objeto es una instancia de una Un objeto es una instancia de una claseclaseLos objetos se caracterizan por:Los objetos se caracterizan por: Identidad: Los objetos se distinguen Identidad: Los objetos se distinguen
unos de otrosunos de otros Comportamiento: Los objetos pueden Comportamiento: Los objetos pueden
realizar tareasrealizar tareas Estado: Los objetos contienen Estado: Los objetos contienen
informacióninformación
¿Qué es un Objeto?¿Qué es un Objeto?
Informalmente, un objeto representa Informalmente, un objeto representa una entidad del mundo realuna entidad del mundo realEntidades Físicas Entidades Físicas
(Ej.: (Ej.: Vehículo, Casa, ProductoVehículo, Casa, Producto))
Entidades Conceptuales Entidades Conceptuales (Ej.: Proceso Químico, (Ej.: Proceso Químico, Transacción Transacción
BancariaBancaria))
Entidades de Software Entidades de Software (Ej.: Lista Enlazada, (Ej.: Lista Enlazada, Interfaz GráficaInterfaz Gráfica))
Un objeto posee EstadoUn objeto posee Estado
Lo que el objeto sabeLo que el objeto sabeEl estado de un objeto es una de las El estado de un objeto es una de las posibles condiciones en que el objeto posibles condiciones en que el objeto puede existirpuede existirEl estado normalmente cambia en el El estado normalmente cambia en el transcurso del tiempotranscurso del tiempoEl estado de un objeto es El estado de un objeto es implementado por un conjunto de implementado por un conjunto de propiedades (atributos), además de propiedades (atributos), además de las conexiones que puede tener con las conexiones que puede tener con otros objetosotros objetos
Un objeto posee Un objeto posee ComportamientoComportamiento
Lo que el objeto puede hacerLo que el objeto puede hacerEl comportamiento de un objeto El comportamiento de un objeto determina cómo éste actúa y determina cómo éste actúa y reacciona frente a las peticiones de reacciona frente a las peticiones de otros objetosotros objetosEs modelado por un conjunto de Es modelado por un conjunto de mensajes a los que el objeto puede mensajes a los que el objeto puede responder (operaciones que puede responder (operaciones que puede realizar)realizar)Se implementa mediante métodosSe implementa mediante métodos
Un objeto posee IdentidadUn objeto posee Identidad
Cada objeto tiene una identidad Cada objeto tiene una identidad única, incluso si su estado es única, incluso si su estado es idéntico al de otro objetoidéntico al de otro objeto
Objetos y ClasesObjetos y ClasesUna clase es una definición abstracta de Una clase es una definición abstracta de un objetoun objeto Define la estructura y el comportamiento Define la estructura y el comportamiento
compartidos por los objetoscompartidos por los objetos Sirve como modelo para la creación de objetos Sirve como modelo para la creación de objetos
Los objetos pueden ser agrupados en Los objetos pueden ser agrupados en clasesclases
Modificadores de AccesoModificadores de Acceso
Permiten definir el nivel de acceso Permiten definir el nivel de acceso (visibilidad) de los miembros (visibilidad) de los miembros (atributos o métodos) de una clase(atributos o métodos) de una clase Publico: Cualquier clase puede “ver” los Publico: Cualquier clase puede “ver” los
miembros públicos de otra clasemiembros públicos de otra clase Privado: Sólo la clase puede ver sus Privado: Sólo la clase puede ver sus
propios miembros privadospropios miembros privados
Existen otros dos modificadores para Existen otros dos modificadores para propósitos específicos (Paquete, propósitos específicos (Paquete, Protegido)Protegido)
AbstracciónAbstracción
La abstracción es ignorancia La abstracción es ignorancia selectivaselectiva Decidir qué es importante y qué no lo Decidir qué es importante y qué no lo
eses Concentrarse en lo importante y Concentrarse en lo importante y
depender de ellodepender de ello Ignorar lo que no es importante y no Ignorar lo que no es importante y no
depender de ellodepender de ello Usar encapsulación para forzar una Usar encapsulación para forzar una
abstracciónabstracciónEl 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
Uso de la encapsulaciónUso de la encapsulación
Combinación de datos y métodosCombinación de datos y métodosControl de la visibilidad de accesoControl de la visibilidad de acceso¿Por qué se encapsula?¿Por qué se encapsula?Datos de objetosDatos de objetosUso de datos estáticosUso de datos estáticosUso de métodos estáticosUso de métodos estáticos
Combinación de datos y Combinación de datos y métodosmétodos
Combinación de datos y Combinación de datos y métodos en una solamétodos en una sola cápsula cápsula La frontera de la cápsula crea La frontera de la cápsula crea un espacio interior y otro un espacio interior y otro exterior exterior
Retirar( )
Ingresar( )
saldo
Retirar( )
Ingresar( )
saldo
¿CuentaBancaria ?¿CuentaBancaria ?
Control de la visibilidad de Control de la visibilidad de accesoacceso
Los métodos son Los métodos son públicospúblicos, , accesibles desde el exterior accesibles desde el exterior Los datos son Los datos son privadosprivados, , accesibles sólo desde el interior accesibles sólo desde el interior
Retirar( )
Ingresar( )
saldo
Retirar( )
Ingresar( )
saldo
¿CuentaBancaria ?¿CuentaBancaria ?
¿Por qué se encapsula?¿Por qué se encapsula?
Porque permite el controlPorque permite el control El objeto se usa sóloEl objeto se usa sólo
con los métodos con los métodos públicos públicos
Porque permite el cambioPorque permite el cambio El uso del objeto noEl uso del objeto no
varía si cambia el tipovaría si cambia el tipode los datos privadosde los datos privados
Retirar( )
Ingresar( )
euros 12
Retirar( )
Ingresar( )
saldo 12,56
céntimos 56
Datos de objetosDatos de objetosLos datos de objetos describen Los datos de objetos describen información para objetos información para objetos concretosconcretos Por ejemplo, cada cuenta Por ejemplo, cada cuenta
bancaria tiene su bancaria tiene su propiopropio saldo. Si saldo. Si dos cuentas tienen el mismo dos cuentas tienen el mismo saldo, será sólo una saldo, será sólo una coincidencia .coincidencia .Retirar( )
Ingresar( )
saldo 12,56
prop. “Juan"
Retirar( )
Ingresar( )
saldo 12,56
prop. “Pedro"
Uso de datos estáticosUso de datos estáticosLos datos estáticos describen Los datos estáticos describen información para información para todostodos los los objetos de una claseobjetos de una clase Por ejemplo, supongamos que Por ejemplo, supongamos que
todas las cuentas todas las cuentas compartencomparten el el mismo interés. No sería mismo interés. No sería conveniente almacenar el interés conveniente almacenar el interés en todas las cuentas. ¿Por qué?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áticosUso de métodos estáticosLos métodos estáticos acceden sólo Los métodos estáticos acceden sólo a datos estáticosa datos estáticos Un método estático se llama en la clase, Un método estático se llama en la clase,
no el objetono 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
Definición de sistemas Definición de sistemas orientados a objetosorientados a objetos
HerenciaHerenciaJerarquías de clasesJerarquías de clasesHerencia sencilla y múltipleHerencia sencilla y múltiplePolimorfismoPolimorfismoClases base abstractasClases base abstractasInterfacesInterfaces
HerenciaHerenciaLa herencia indica una relación La herencia indica una relación “es un tipo de"“es un tipo de" La herencia es una relación entre La herencia es una relación entre
clasesclases Las nuevas clases añaden Las nuevas clases añaden
especialización a las existentesespecialización a las existentesMúsicoMúsico
Violinista Violinista
Clase base
Clase derivada
Generalización
Especialización ¿Es éste un buenejemplo de herencia ?
Jerarquías de clasesJerarquías de clasesLas clases con relaciones de Las clases con relaciones de herencia forman jerarquías de herencia forman jerarquías de clases 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
Herencia sencilla y Herencia sencilla y múltiplemúltipleHerencia sencilla: derivadas de una Herencia sencilla: derivadas de una
clase baseclase baseHerencia múltiple: derivadas de dos Herencia múltiple: derivadas de dos o más clases baseo 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
PolimorfismoPolimorfismoEl nombre del método reside El nombre del método reside en la clase baseen la clase baseLos distintos cuerpos del Los distintos cuerpos del método residen en las clases método residen en las clases derivadasderivadas
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
Clases base abstractasClases base abstractasAlgunas clases existen sólo para ser Algunas clases existen sólo para ser clases baseclases base No tiene sentido crear instancias de No tiene sentido crear instancias de
estas clasesestas clases Estas clases sonEstas clases son abstractas 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
InterfacesInterfaces
Las interfaces contienen sólo Las interfaces contienen sólo operaciones, no operaciones, no implementación 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.