27
Módulo I- Introducción a la Módulo I- Introducción a la Programación en la Programación en la Plataforma .Net con C# Plataforma .Net con C#

9 fundamentos de oo

Embed Size (px)

Citation preview

Page 1: 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#

Page 2: 9 fundamentos de oo

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

Page 3: 9 fundamentos de oo

¿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

Page 4: 9 fundamentos de oo

¿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

Page 5: 9 fundamentos de oo

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

Page 6: 9 fundamentos de oo

¿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

Page 7: 9 fundamentos de oo

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

Page 8: 9 fundamentos de oo

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

Page 9: 9 fundamentos de oo

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

Page 10: 9 fundamentos de oo

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

Page 11: 9 fundamentos de oo

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

Page 12: 9 fundamentos de oo

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)

Page 13: 9 fundamentos de oo

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

Page 14: 9 fundamentos de oo

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

Page 15: 9 fundamentos de oo

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 ?

Page 16: 9 fundamentos de oo

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 ?

Page 17: 9 fundamentos de oo

¿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

Page 18: 9 fundamentos de oo

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"

Page 19: 9 fundamentos de oo

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%

Page 20: 9 fundamentos de oo

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

Page 21: 9 fundamentos de oo

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

Page 22: 9 fundamentos de oo

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 ?

Page 23: 9 fundamentos de oo

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

Page 24: 9 fundamentos de oo

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

Page 25: 9 fundamentos de oo

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

Page 26: 9 fundamentos de oo

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

Page 27: 9 fundamentos de oo

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.