SlideShare una empresa de Scribd logo
1 de 27
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?
 Comparación de clases y estructuras
 Abstracción
¿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?
¿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
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; ...
} }
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
 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
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 ?
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 ?
¿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

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"
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% 
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



 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
“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;
}
}
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
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
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?
 Definición de sistemas orientados a objetos
 Herencia
 Jerarquías de clases
 Herencia sencilla y múltiple
 Polimorfismo
 Clases base abstractas
 Interfaces
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
ViolinistaViolinista
Clase base
Clase derivada
Generalización
Especialización ¿Es éste un buen
ejemplo de
herencia ?
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
toca
ViolinistaViolinista
Instrumento de
cuerda
Instrumento de
cuerda
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
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
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
No se pueden crear instancias
de clases abstractas
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.
Práctica – Creación y uso de clases

Más contenido relacionado

La actualidad más candente

PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOAnabel Jaramillo
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Metodos de programacion
Metodos de programacionMetodos de programacion
Metodos de programacionadvmct
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesSorey García
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitalesDany7x
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2Mariano Galvez
 
Historia y fundamentos de la programación orientada a objetos
Historia y fundamentos de la programación orientada a objetosHistoria y fundamentos de la programación orientada a objetos
Historia y fundamentos de la programación orientada a objetosRafael Molano
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a ObjetosUVMVirtual
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objetoboncastell
 
programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netpp mm
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosPatricio Abad
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevjtk1
 

La actualidad más candente (20)

Clases en java
Clases en javaClases en java
Clases en java
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETO
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Metodos de programacion
Metodos de programacionMetodos de programacion
Metodos de programacion
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para Dummies
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitales
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2
 
Historia y fundamentos de la programación orientada a objetos
Historia y fundamentos de la programación orientada a objetosHistoria y fundamentos de la programación orientada a objetos
Historia y fundamentos de la programación orientada a objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objeto
 
programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic net
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Clases y Objetos
Clases y ObjetosClases y Objetos
Clases y Objetos
 
Trabajo de diseño
Trabajo de diseñoTrabajo de diseño
Trabajo de diseño
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 
Primeraclaseobjetos clases
Primeraclaseobjetos clasesPrimeraclaseobjetos clases
Primeraclaseobjetos clases
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 

Destacado

El Embarazo Adolescente 2
El Embarazo Adolescente 2El Embarazo Adolescente 2
El Embarazo Adolescente 2vamoslaspibas
 
Cinema Paradiso
Cinema ParadisoCinema Paradiso
Cinema Paradisoamy05_89
 
Teoria de la ducha
Teoria de la duchaTeoria de la ducha
Teoria de la duchaguest700c92
 
cuidemosla!
cuidemosla!cuidemosla!
cuidemosla!MIKEL15
 
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIA
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIAEZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIA
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIAsaimah21
 
La Flauta
La FlautaLa Flauta
La Flautaglaly
 
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...Congreso Internet en el Aula
 
Lamuertedejesus
LamuertedejesusLamuertedejesus
Lamuertedejesusvjalulima
 
Medula Espinal - Monge Guillermo - UAI
Medula Espinal - Monge Guillermo - UAIMedula Espinal - Monge Guillermo - UAI
Medula Espinal - Monge Guillermo - UAIguest27dba4
 
El Embarazo Adolescente
El Embarazo AdolescenteEl Embarazo Adolescente
El Embarazo Adolescentevamoslaspibas
 
200410291337140.Los Paradigmas De La Educacion
200410291337140.Los Paradigmas De La Educacion200410291337140.Los Paradigmas De La Educacion
200410291337140.Los Paradigmas De La Educaciondiana11
 
redes sociales verticales
redes sociales verticalesredes sociales verticales
redes sociales verticalesmiguel carrillo
 

Destacado (20)

2007 Otros Programas
2007   Otros Programas2007   Otros Programas
2007 Otros Programas
 
El Embarazo Adolescente 2
El Embarazo Adolescente 2El Embarazo Adolescente 2
El Embarazo Adolescente 2
 
Sociologia - Cultura y Desarrollo Urbano
Sociologia - Cultura y Desarrollo UrbanoSociologia - Cultura y Desarrollo Urbano
Sociologia - Cultura y Desarrollo Urbano
 
Cinema Paradiso
Cinema ParadisoCinema Paradiso
Cinema Paradiso
 
Teoria de la ducha
Teoria de la duchaTeoria de la ducha
Teoria de la ducha
 
Stephanie
StephanieStephanie
Stephanie
 
cuidemosla!
cuidemosla!cuidemosla!
cuidemosla!
 
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIA
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIAEZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIA
EZINTASUN IRAUNKORRA 10.ARIKETA SENTENTZIA
 
La Flauta
La FlautaLa Flauta
La Flauta
 
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...
José Herrero Izquierdo - "Experimentación con "Descartes" en un instituto par...
 
Retratos
RetratosRetratos
Retratos
 
utilitarios
utilitariosutilitarios
utilitarios
 
Lamuertedejesus
LamuertedejesusLamuertedejesus
Lamuertedejesus
 
Medula Espinal - Monge Guillermo - UAI
Medula Espinal - Monge Guillermo - UAIMedula Espinal - Monge Guillermo - UAI
Medula Espinal - Monge Guillermo - UAI
 
Presentación1
Presentación1Presentación1
Presentación1
 
El Embarazo Adolescente
El Embarazo AdolescenteEl Embarazo Adolescente
El Embarazo Adolescente
 
Open Innovation
Open InnovationOpen Innovation
Open Innovation
 
200410291337140.Los Paradigmas De La Educacion
200410291337140.Los Paradigmas De La Educacion200410291337140.Los Paradigmas De La Educacion
200410291337140.Los Paradigmas De La Educacion
 
Proceso Planta
Proceso  PlantaProceso  Planta
Proceso Planta
 
redes sociales verticales
redes sociales verticalesredes sociales verticales
redes sociales verticales
 

Similar a Fundamentos POO C

Similar a Fundamentos POO C (20)

9 fundamentos de oo
9 fundamentos de oo9 fundamentos de oo
9 fundamentos de oo
 
Iniciando en java en www.fiec.espol.edu.ec
Iniciando en java  en www.fiec.espol.edu.ecIniciando en java  en www.fiec.espol.edu.ec
Iniciando en java en www.fiec.espol.edu.ec
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
5poo
5poo5poo
5poo
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
3 Bases De La OrientacióN A Objetos
3  Bases De La OrientacióN A Objetos3  Bases De La OrientacióN A Objetos
3 Bases De La OrientacióN A Objetos
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Mela Ont Perio2006
Mela Ont Perio2006Mela Ont Perio2006
Mela Ont Perio2006
 
03 Oop
03   Oop03   Oop
03 Oop
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
Poo
PooPoo
Poo
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
10-programacion-orientada-a-objetos.ppt
10-programacion-orientada-a-objetos.ppt10-programacion-orientada-a-objetos.ppt
10-programacion-orientada-a-objetos.ppt
 
6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx
 
Base de datos-objeto-relacional
Base de datos-objeto-relacionalBase de datos-objeto-relacional
Base de datos-objeto-relacional
 

Más de Esteban Soraire

Más de Esteban Soraire (20)

Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.Net
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
7. Fundamentos De Oo
7.  Fundamentos De Oo7.  Fundamentos De Oo
7. Fundamentos De Oo
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
5. Metodos Y Parametros
5.  Metodos Y Parametros5.  Metodos Y Parametros
5. Metodos Y Parametros
 
6. Tablas
6.  Tablas6.  Tablas
6. Tablas
 
3. Uso De Variables De Tipo Valor
3.  Uso De Variables De Tipo Valor3.  Uso De Variables De Tipo Valor
3. Uso De Variables De Tipo Valor
 
2. Introduccion A C#
2.  Introduccion A C#2.  Introduccion A C#
2. Introduccion A C#
 
1. Introduccion a .Net
1. Introduccion a .Net1. Introduccion a .Net
1. Introduccion a .Net
 
10. Herencia
10.  Herencia10.  Herencia
10. Herencia
 
8. Practica A
8.  Practica A8.  Practica A
8. Practica A
 
10. Herencia
10.  Herencia10.  Herencia
10. Herencia
 
8. Uso De Variables De Tipo Referencia
8.  Uso De Variables De Tipo Referencia8.  Uso De Variables De Tipo Referencia
8. Uso De Variables De Tipo Referencia
 
6. Practica A
6.  Practica A6.  Practica A
6. Practica A
 
5. Metodos Y Parametros
5.  Metodos Y Parametros5.  Metodos Y Parametros
5. Metodos Y Parametros
 
4. Practica A
4.  Practica A4.  Practica A
4. Practica A
 

Fundamentos POO C

  • 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 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?
  • 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 ?¿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 ?¿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úsicoMúsico ViolinistaViolinista 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úsicoMúsico ?????? Músico de cuerda Músico de cuerda ViolínViolín?????? Instrumento musical Instrumento musical toca toca toca ViolinistaViolinista 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í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
  • 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 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
  • 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 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. 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.
  • 27. Práctica – Creación y uso de clases