SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Introducción a la Programación 
Orientada a Objetos 
Tema 1 
TACC 1 
II 
Curso 2008/09
Indice 
zzCiclo de Vida y Calidad del 
Software. 
z Paradigmas de Programación. 
z Programación Orientada a Objetos. 
z Conceptos de Programación Orientada a 
Objetos. 
{{ Clases y Objetos 
{ Encapsulamiento. 
{{ Herencia. 
{ Polimorfismo. 
{ Frameworks y 
Notaciones. 
2
Ciclo de Vida del Software 
z Conjunto de fases por las que pasa el sistema 
que se está desarrollando desde que nace la 
idea inicial hasta que el software es retirado o 
reemplazado: 
{ Análisis. 
{ Diseño. 
{ Codificación. 
{ Pruebas. 
{ Mantenimiento. 
3 z Construir Software no es sólo programar.
Ciclo de Vida del Software 
Distribución del Esfuerzo 
Distribución del esfuerzo durante el ciclo de vida 
z Análisis ≈ 6% 45 
40 
40 
35 
30 
25 
o Relativo( 
6%. 
z Diseño ≈ 5%. 
z Codificación ≈ 7% 11 
7 
15 13 14 
20 
15 
10 
0 5 
ño 
ón 
s 
r 
r 
r 
Esfuerzo 
7%. 
z Pruebas ≈ 15%. 
z Mantenimiento 67% 
Análisis y diseño 
Impl ementación 
Pruebas 
Adapt ar 
Mej orar 
Corregir 
≈ 67%. 
4
Calidad del Software 
Factores de Calidad 
z Efi i i 
Eficiencia 
z Portabilidad 
zz Facilidad de prueba 
z Integridad (protección contra procesos sin derecho de 
acceso) 
z Facilidad de uso 
z Corrección 
z Fiabilidad (situaciones anómalas) 
z Extensibilidad 
z Reutilización 
z Compatibilidad 
5 
z ...
Indice 
z Ciclo de Vida y Calidad del Software. 
zParadigmas de Programación. 
z Programación Orientada a Objetos. 
zz Conceptos de Programación Orientada a 
Objetos. 
{{ Clases y Objetos 
{ Encapsulamiento. 
{{ Herencia. 
{ Polimorfismo. 
{ Notaciones 
6 
Frameworks y Notaciones.
Paradigmas de Programación 
Abstracción 
zCapacidad para encapsular y aislar la 
información del diseño y ejecución. 
zMecanismos en programación: 
{{ Procedimientos y funciones 
{ Tipos abstractos de datos (TAD) 
{ Clases: son TAD a los que se añaden 
mecanismos como herencia, métodos, etc. 
7
Paradigmas de Programación 
zz Estructurada. 
{ Fortran. 
{ Basic. 
{{ Pascal. z Desde principios de los 70. 
{ C. 
{ … 
z Funcional 
esde p c p os os 0 
z Dificultad para el trabajo en grupo. 
z No hay correspondencia estrecha entre 
Funcional. d t l 
{ Lisp. 
{ … 
z Lógica 
datos reales y programas. 
Lógica. 
{ Prolog. 
{ … 
zz POO. 
{ Smalltalk. 
{ C++. 
{ Java 
8 
Java. 
{ …
Indice 
z Ciclo de Vida y Calidad del Software. 
z Paradigmas de Programación. 
zProgramación Orientada a Objetos. 
zz Conceptos de Programación Orientada a 
Objetos. 
{{ Clases y Objetos 
{ Encapsulamiento. 
{ Herencia. 
{ Polimorfismo. 
{ Frameworks y 
Notaciones. 
9
Programación Orientada a Objetos 
zVentajas de uso: 
{ Reusabilidad (mecanismos de abstracción y 
herencia) 
zz En programación convencional: uso de 
funciones y procedimientos 
{{ Adecuación a entornos de bases de datos. 
{ Idónea para tratamiento de Interfaces de Usuario. 
{{ Adecuada en prototipos y simulación. 
10
Programación Orientada a Objetos 
Características Generales 
zConstrucción de sistemas complejos a 
partir de componentes. 
zModelado más fiel del mundo real. 
zEstimación de reducción de 40% con 
respecto a la programación convencional. 
11
Programación Orientada a Objetos 
Características 
z El modelo objeto (Booch, 1994): 
{{ Abstracción 
z Las características esenciales del objeto: 
•• Documento: insertar, borrar, ... 
• Una grapadora: rellenar, grapar, ... 
{{ Encapsulamiento (ocultación de información) 
• Una clase contiene: 
una interfaz pública. 
una implementación. 
12
Ejemplo 
I 
Persona 
Persona 
- nombre 
- edad 
nformaci 
+mostrar() 
+setNombre(string) 
Interfaz 
- id 
- setID() 
+mostrar() 
tN b ( t i ) 
ón privad 
+getNombre(): string 
+setEdad(int) 
+getEdad(): int 
z pública 
+setNombre(string) 
+getNombre(): string 
+setEdad(int) 
+getEdad(): da 
int 
Clases, 
Tipos especificación 
Objetos, 
“instancias” 
ejecución 
p1 : Persona 
- nombre=“Pedro” 
- edad=23 
id=“3456789K” 
p2 : Persona 
- nombre=“María” 
- edad=25 
id=“55567876G” 
13 
- id= 55567876G - id= 3456789K
g Programación Orientada a j 
Objetos 
Características 
z Modularidad: 
{ Subdivisión de una aplicación en otras más pequeñas (módulos). 
{ Un módulo es un conjunto de clases. 
z Jerarquía 
{ Ordenación de las abstracciones 
{ Tipos: 
z Herencia (“es-un”); generalización/especialización 
• Herencia simple o múltiple 
zAgregación (“parte-de”) 
z Polimorfismo 
{ Una misma operación (método) realizada de diferente modo 
zcomer (vaca, persona, león); clase mamífero 
z dibujar (triángulo, cuadrado); clase figura 
z propiedades 
14 
Otras { concurrencia (multitarea), persistencia, uso de excepciones
Ejemplo 
Persona 
- - edad 
nombre 
+ mostrar() 
Empleado Cliente 
- sueldo_bruto - nombre_empresa 
() 
telefono de contacto 
subordinados 
+mostrar() 
+ mostrar + calcular_salario_neto() 
- telefono_de_empleados clientes 
Directivo 
- categoria 
Empresa 
- nombre 
+ mostrar () 15
Ejemplo 
e2 e1 : Empleado 
- nombre=“Pedro” 
- edad=23 
- sueldo bruto=: Empleado 
- nombre=“María” 
- edad=25 
- sueldo_bruto=36000 sueldo_bruto 30000 
subordinados empleados empleados 
d1 : Directivo 
- nombre=“Luis” 
Empresa 
- nombre=“HGJ” 
empleados 
- edad=35 
- sueldo_bruto=36000 
- categoria=“C1” 
clientes 
c1 1 : Cli t 
Cliente 
- nombre=“Luis” 
- edad=35 
nombre empresa=“Macroware” 
16 
- nombre_empresa= Macroware 
- telefono_de_contacto=91555666
Programación Orientada a Objetos 
Modelado del mundo real 
z Nombres: 
{Objetos 
{Propiedades de objetos 
z Adjetivos: 
{Valores de las propiedades 
z Verbos: 
{Comportamiento de los objetos 
“El coche tiene color rojo y se mueve” 
“Eld tti l t d t ” 
17 
El documento tiene letra grande y se muestra”
Lenguajes de POO 
zz Cronología: 
{ Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969), 
Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986), 
Object Pascal (1988), CLOS (1989), Java (1995). 
{ The jounal of object-oriented programming (1988). Journal of 
Object Technology (2002-), etc. 
{ Muchas conferencias científicas sobre el tema: OOPSLA, 
ECOOP, etc. 
z Primeros lenguajes POO: 
{ Simula-67 
zz Objeto (datos+métodos). Clase. Herencia. 
{ Smalltalk-80 
z Verdadero primer lenguaje de POO 
z C t d d j ti ió d étd ) 
18 
Concepto de paso de mensajes ( activación de métodos)
g j 
Lenguajes de POO 
Clasificaciones 
zO i t ió 
Orientación: 
{puros (Smalltalk) 
{híbridos (C++) 
zTipificación: 
{estática (en tiempo de compilación), Object 
Pascal 
{dinámica (en tiempo de ejecución), Python 
zzLigadura: 
{estática (C++) 
{dinámica (Java 19 
Java, C++)
Lenguajes de POO 
Paradigmas 
zClase-Elemento 
{ Ninguna clase es objeto 
z C++ 
{{Toda clase es un objeto 
z Smalltalk, Java 
zPrototipo-Elemento 
{{Todo objeto puede ser prototipo de otros 
zAmulet 
20
Otras Ventajas de POO 
z Mejor mantenimiento. 
zz Estructuras más reales de la información. 
z Escalabilidad. 
z Adaptabilidad. 
zz Más apropriada para aplicaciones 
dirigidas por eventos. 
21
Inconvenientes de POO 
zNecesidades de estandarización: 
{ Notación de Modelado (OMG, Object 
Management Group). 
{{ Lenguajes de Programación. 
zCoste de conversión de software legado 
22
Indice 
zz Ciclo de Vida y Calidad del Software. 
z Paradigmas de Programación. 
zz Programación Orientada a Objetos. 
zConceptos de Programación Orientada 
a Objetos. 
{ Clases y Objetos 
{ Encapsulamiento. 
{ Herencia. 
{ Polimorfismo. 
{ Notaciones 
23 
Frameworks y Notaciones.
Conceptos de POO 
zConceptos principales: 
{Clase. 
zSimilar al concepto de estructura en Pascal. 
zAdemás de datos (atributos), se añaden funciones 
(métodos) que operan sobre esos datos. 
zEstructuración (herencia). 
{Objeto (una instancia de una clase) 
{{Jerarquía de herencia entre clases. 
zHerencia de atributos y métodos. 
24
Conceptos de POO 
zObjetos: 
{objeto=datos+métodos 
{miembros de un objeto (o clase): 
zzdatos (atributos) 
zmétodos 
{{identificador del objeto 
znombre de variable 
25
Conceptos de POO 
z p 
Ejemplo 
Clase: Robot 
z Datos: x (entero), y (entero) 
zz Métodos: 
• void avanzar (entero, entero) 
• entero posicionX () 
• entero posicionY () 
• void avanzar (entero) 
• Constructores: 
Robot (entero, entero) 
Robot (entero) 
zInstanciación: 
• objeto “robot1” (Robot) 
• robot1 = Robot(1,2) 
zDatos de 26 
clase: 
• numeroRobots (entero)
Creación y Destrucción de Objetos 
zz Equivalencia de conceptos con programación 
clásica: 
{{Tipo ÅÅÆÆ Clase 
{Dato ÅÆ Objeto 
{Variable: existe en ambos tipos de programación 
z Creación (uso de constructor): 
{{Ejemplo: 
robot1 = Robot(1,2) robot2 = Robot(3) 
z Destrucción 
{Automática (Java, Garbage collection) 
{Explícita ( montón) o automática (pila) (C++). 
27 
p ) p )( ) 
Destructores.
Encapsulamiento 
z Miembros privados y públicos 
z Interfaz pública de una clase (miembros públicos, datos y métodos) 
zSe pueden invocar desde fuera de la clase 
zz Ejemplo (clase Robot) 
zDatos: 
• privado x (entero) 
• privado y (entero) 
zMétodos: 
• público void avanzar (entero, entero) 
• público entero posicionX () 
• público entero posicionY () 
• público void avanzar (entero) 
zConstructores: 
• entero 28 
público Robot (entero, entero) 
• público Robot (entero)
Encapsulamiento 
p 
Representación 
clase: Robot 
Datos 
x 
Mét d 
y 
Métodos 
Robot (entero, entero) 
Robot (entero) 
void avanzar (entero, entero) 
void avanzar (entero) 
entero posicionY () 
29 entero posicionX ()
Ejecución de Métodos 
zUn método es una definición de una 
función. 
{Se dice que un método se ejecuta cuando el 
objeto recibe un mensaje de ejecución del 
método. 
{Puede acceder a otros miembros de la clase. 
zEjemplo: 
{Objeto robot1 (Robot) 
{robot1=Robot(3,2) 
{robot1.avanzar(1,2) 
30 
( , )
Herencia 
zRepresenta el concepto de “ser un tipo 
especial de” o “ser un/a”. 
zSe establece mediante la definición de 
subclases, que dan lugar a una jerarquía 
de clases. 
zLas subclases hijas heredan los datos y 
métodos de las clases padre. 
31
Herencia 
Ejemplo 
z Clase: RobotConFrontera 
{ Clase padre: Robot 
{ Datos: 
z privado limX (entero) 
z privado limY (entero) 
{{Métodos: 
zvoid avanzar (entero, entero) 
zvoid avanzar (entero) 
zzConstructores: 
• RobotConFrontera (entero, entero, 
entero, entero) 
• RobotConFrontera (entero, entero, entero) 
{ Instanciación: 
zobjeto “robot4” ( RobotConFrontera) 
32 
j ) 
z robot4 = RobotConFrontera(1,2,0,0)
Herencia 
zLa definición en RobotConFrontera de: 
zvoid avanzar (entero, entero) 
zvoid avanzar (entero) 
{{es un “overriding” (especialización, redefinición, 
etc) de los métodos ya definidos en la clase 
Robot 
33
Herencia 
Tipos 
zHerencia simple: 
zFigura, Círculo, Rectángulo, Cuadrado, Triángulo 
zHerencia múltiple: 
zzPersona, Profesor, Investigador, ProfesorUniversitario 
zProblemas de ambigüedad 
34
Ejemplo Figura 
+dibujar() 
+rotar(grad) 
Circulo 
Rectangulo 
-alto: real 
Triangulo 
-radio: real 
-tam1: +Circulo(r) -ancho: real 
+dibujar() 
+Rectangulo(alto, ancho) 
+rotar(grad) 
+dibujar() 
t ( d) 
real 
-tam2: real 
-tam3: real 
+Triangulo(t1, t2, t3) 
(g ) +rotar(grad) +dibujar() 
+rotar(grad) 
Cuadrado 
+Cuadrado(lado) 
35 
( )
Ejemplo 
Persona 
- nombre 
- edad 
Profesor Investigador 
- titulacion - tit l i 
titulacion 
- centro 
ProfesorUniversitario 
- categoria 
36
Herencia 
Clases Abstractas 
zClase abstracta: 
{No admite una instancia directa. Ejemplo: clase 
Figura. Sería inválido 
• objeto f (Figura) 
• f=Figura(....) 
aunque sí sería válido 
• objeto f (Figura) 
• f=Cuadrado(3) 
37
Polimorfismo 
zSobrecarga (overloading) de un método: 
{En una clase, el mismo nombre de método 
definido de modos distintos 
zzEjemplo: el método “avanzar” está 
sobrecargado en la clase Robot 
38
Polimorfismo 
z convencional En la programación convencional, también existe 
“overloading”: 
{Ejemplo: Pascal 
zprintln(“aldfkja”) 
zprintln(34) 
z ““Overloading”” y ““Overriding”” son casos de polimorfismo: 
{El mismo método definido de modos distintos 
zz Ligadura dinámica: 
{objeto r (Robot) 
{r=RobotConFrontera(2,3,0,0) 
{Al ejecutar r.avanzar(3), ¿qué definición se aplica? 
• la de Robot (ligadura estática) 
• de ligad dinámica) 
39 
la RobotConFrontera (ligad.
Frameworks 
z Conjunto de clases que se coordinan para 
realizar una función 
z Para construir una aplicación hay que 
subclasificarlas. 
z Ejemplo: 
{{MFC (C++). 
{AWT, Swing (Java). 
zz El “main” usualmente incluido en el Framework 
z Diagramas de clases 
{N id dd tá d d t ió áfi 
40 
Necesidad de un estándar de representación gráfica
UML 
z Diagramas de Estructura 
{ Diagramas de clase (condensación gráfica de estructuras de 
clases y relaciones entre objetos y clases) 
z Diagramas de Comportamiento. 
41

Más contenido relacionado

La actualidad más candente

Ejercicios - Diagramas de Estados y Clases
Ejercicios - Diagramas de Estados y ClasesEjercicios - Diagramas de Estados y Clases
Ejercicios - Diagramas de Estados y ClasesHector Farias
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
Aspectos legales y contractuales de las TIC en Colombia
Aspectos legales y contractuales de las TIC en ColombiaAspectos legales y contractuales de las TIC en Colombia
Aspectos legales y contractuales de las TIC en ColombiaD_Informatico
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dmlGerardo
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejerciciosWalter Chacon
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteJosé Antonio Sandoval Acosta
 
Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaRicardo Montañana
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo Seba Briones
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionalesAndreina Trejo
 

La actualidad más candente (20)

Ejercicios - Diagramas de Estados y Clases
Ejercicios - Diagramas de Estados y ClasesEjercicios - Diagramas de Estados y Clases
Ejercicios - Diagramas de Estados y Clases
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Aspectos legales y contractuales de las TIC en Colombia
Aspectos legales y contractuales de las TIC en ColombiaAspectos legales y contractuales de las TIC en Colombia
Aspectos legales y contractuales de las TIC en Colombia
 
Mapaconceptual.u.m.l.
Mapaconceptual.u.m.l.Mapaconceptual.u.m.l.
Mapaconceptual.u.m.l.
 
Presentacion PL/SQL
Presentacion PL/SQLPresentacion PL/SQL
Presentacion PL/SQL
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
Diagramas de Casos de Uso del Negocio y del Sistema
 Diagramas de Casos de Uso del Negocio y del Sistema Diagramas de Casos de Uso del Negocio y del Sistema
Diagramas de Casos de Uso del Negocio y del Sistema
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
1. Modelo de Datos
1. Modelo de Datos1. Modelo de Datos
1. Modelo de Datos
 
Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
OOSE
OOSEOOSE
OOSE
 
Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación Paralela
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Matrices pseint
Matrices   pseintMatrices   pseint
Matrices pseint
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 

Destacado (20)

Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
Cafeteando east
Cafeteando eastCafeteando east
Cafeteando east
 
13 Networking
13   Networking13   Networking
13 Networking
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Conceptos de la poo
Conceptos de la pooConceptos de la poo
Conceptos de la poo
 
Entrega final
Entrega finalEntrega final
Entrega final
 
06 Paquetes Y Java Classpath
06   Paquetes Y Java Classpath06   Paquetes Y Java Classpath
06 Paquetes Y Java Classpath
 
Analisis orientado a objetos
Analisis orientado a objetosAnalisis orientado a objetos
Analisis orientado a objetos
 
02 Bases Del Lenguaje Java
02   Bases Del Lenguaje Java02   Bases Del Lenguaje Java
02 Bases Del Lenguaje Java
 
Tutorial eclipse 1
Tutorial eclipse 1Tutorial eclipse 1
Tutorial eclipse 1
 
2011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.22011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.2
 
J2EE - 01 Arquitectura Web
J2EE - 01   Arquitectura WebJ2EE - 01   Arquitectura Web
J2EE - 01 Arquitectura Web
 
Java
JavaJava
Java
 
Conceptos Basicos de POO
Conceptos Basicos de POOConceptos Basicos de POO
Conceptos Basicos de POO
 
Moodle para dummies
Moodle para dummiesMoodle para dummies
Moodle para dummies
 
04 Clases Y Objetos
04   Clases Y Objetos04   Clases Y Objetos
04 Clases Y Objetos
 
03 Oop
03   Oop03   Oop
03 Oop
 
Programación orientada a objetos (I)
Programación orientada a objetos (I)Programación orientada a objetos (I)
Programación orientada a objetos (I)
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 

Similar a INTRODUCCION A LA POO

Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosDEDTE
 
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_2Axel
 
Abstracción y Encapsulación de en la programación Orientada a objetos
Abstracción y Encapsulación de en la programación Orientada a objetosAbstracción y Encapsulación de en la programación Orientada a objetos
Abstracción y Encapsulación de en la programación Orientada a objetosJoseEstebanTelloEstr
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)claudiocj7
 
Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poodemon_628
 
Fundamentos de programación en scratch
Fundamentos de programación en scratchFundamentos de programación en scratch
Fundamentos de programación en scratchChristian Farinango
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'AulaDeVideojuegos
 
Libro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarLibro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarIgnacio Fernandez Paba
 
Programación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarProgramación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarHenry Upla
 
Programacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarProgramacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarHector Garcia
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxFamiliaAyluardo
 

Similar a INTRODUCCION A LA POO (20)

2 intro poo
2 intro poo2 intro poo
2 intro poo
 
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos
 
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
 
Abstracción y Encapsulación de en la programación Orientada a objetos
Abstracción y Encapsulación de en la programación Orientada a objetosAbstracción y Encapsulación de en la programación Orientada a objetos
Abstracción y Encapsulación de en la programación Orientada a objetos
 
1poo
1poo1poo
1poo
 
C ++
C ++C ++
C ++
 
C ++.ppt
C ++.pptC ++.ppt
C ++.ppt
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poo
 
POO5-Cpp-0910.pdf
POO5-Cpp-0910.pdfPOO5-Cpp-0910.pdf
POO5-Cpp-0910.pdf
 
Fundamentos de programación en scratch
Fundamentos de programación en scratchFundamentos de programación en scratch
Fundamentos de programación en scratch
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'
 
Libro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarLibro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilar
 
Programación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarProgramación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilar
 
Programacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarProgramacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilar
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 

Último

Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 

Último (20)

Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 

INTRODUCCION A LA POO

  • 1. Introducción a la Programación Orientada a Objetos Tema 1 TACC 1 II Curso 2008/09
  • 2. Indice zzCiclo de Vida y Calidad del Software. z Paradigmas de Programación. z Programación Orientada a Objetos. z Conceptos de Programación Orientada a Objetos. {{ Clases y Objetos { Encapsulamiento. {{ Herencia. { Polimorfismo. { Frameworks y Notaciones. 2
  • 3. Ciclo de Vida del Software z Conjunto de fases por las que pasa el sistema que se está desarrollando desde que nace la idea inicial hasta que el software es retirado o reemplazado: { Análisis. { Diseño. { Codificación. { Pruebas. { Mantenimiento. 3 z Construir Software no es sólo programar.
  • 4. Ciclo de Vida del Software Distribución del Esfuerzo Distribución del esfuerzo durante el ciclo de vida z Análisis ≈ 6% 45 40 40 35 30 25 o Relativo( 6%. z Diseño ≈ 5%. z Codificación ≈ 7% 11 7 15 13 14 20 15 10 0 5 ño ón s r r r Esfuerzo 7%. z Pruebas ≈ 15%. z Mantenimiento 67% Análisis y diseño Impl ementación Pruebas Adapt ar Mej orar Corregir ≈ 67%. 4
  • 5. Calidad del Software Factores de Calidad z Efi i i Eficiencia z Portabilidad zz Facilidad de prueba z Integridad (protección contra procesos sin derecho de acceso) z Facilidad de uso z Corrección z Fiabilidad (situaciones anómalas) z Extensibilidad z Reutilización z Compatibilidad 5 z ...
  • 6. Indice z Ciclo de Vida y Calidad del Software. zParadigmas de Programación. z Programación Orientada a Objetos. zz Conceptos de Programación Orientada a Objetos. {{ Clases y Objetos { Encapsulamiento. {{ Herencia. { Polimorfismo. { Notaciones 6 Frameworks y Notaciones.
  • 7. Paradigmas de Programación Abstracción zCapacidad para encapsular y aislar la información del diseño y ejecución. zMecanismos en programación: {{ Procedimientos y funciones { Tipos abstractos de datos (TAD) { Clases: son TAD a los que se añaden mecanismos como herencia, métodos, etc. 7
  • 8. Paradigmas de Programación zz Estructurada. { Fortran. { Basic. {{ Pascal. z Desde principios de los 70. { C. { … z Funcional esde p c p os os 0 z Dificultad para el trabajo en grupo. z No hay correspondencia estrecha entre Funcional. d t l { Lisp. { … z Lógica datos reales y programas. Lógica. { Prolog. { … zz POO. { Smalltalk. { C++. { Java 8 Java. { …
  • 9. Indice z Ciclo de Vida y Calidad del Software. z Paradigmas de Programación. zProgramación Orientada a Objetos. zz Conceptos de Programación Orientada a Objetos. {{ Clases y Objetos { Encapsulamiento. { Herencia. { Polimorfismo. { Frameworks y Notaciones. 9
  • 10. Programación Orientada a Objetos zVentajas de uso: { Reusabilidad (mecanismos de abstracción y herencia) zz En programación convencional: uso de funciones y procedimientos {{ Adecuación a entornos de bases de datos. { Idónea para tratamiento de Interfaces de Usuario. {{ Adecuada en prototipos y simulación. 10
  • 11. Programación Orientada a Objetos Características Generales zConstrucción de sistemas complejos a partir de componentes. zModelado más fiel del mundo real. zEstimación de reducción de 40% con respecto a la programación convencional. 11
  • 12. Programación Orientada a Objetos Características z El modelo objeto (Booch, 1994): {{ Abstracción z Las características esenciales del objeto: •• Documento: insertar, borrar, ... • Una grapadora: rellenar, grapar, ... {{ Encapsulamiento (ocultación de información) • Una clase contiene: una interfaz pública. una implementación. 12
  • 13. Ejemplo I Persona Persona - nombre - edad nformaci +mostrar() +setNombre(string) Interfaz - id - setID() +mostrar() tN b ( t i ) ón privad +getNombre(): string +setEdad(int) +getEdad(): int z pública +setNombre(string) +getNombre(): string +setEdad(int) +getEdad(): da int Clases, Tipos especificación Objetos, “instancias” ejecución p1 : Persona - nombre=“Pedro” - edad=23 id=“3456789K” p2 : Persona - nombre=“María” - edad=25 id=“55567876G” 13 - id= 55567876G - id= 3456789K
  • 14. g Programación Orientada a j Objetos Características z Modularidad: { Subdivisión de una aplicación en otras más pequeñas (módulos). { Un módulo es un conjunto de clases. z Jerarquía { Ordenación de las abstracciones { Tipos: z Herencia (“es-un”); generalización/especialización • Herencia simple o múltiple zAgregación (“parte-de”) z Polimorfismo { Una misma operación (método) realizada de diferente modo zcomer (vaca, persona, león); clase mamífero z dibujar (triángulo, cuadrado); clase figura z propiedades 14 Otras { concurrencia (multitarea), persistencia, uso de excepciones
  • 15. Ejemplo Persona - - edad nombre + mostrar() Empleado Cliente - sueldo_bruto - nombre_empresa () telefono de contacto subordinados +mostrar() + mostrar + calcular_salario_neto() - telefono_de_empleados clientes Directivo - categoria Empresa - nombre + mostrar () 15
  • 16. Ejemplo e2 e1 : Empleado - nombre=“Pedro” - edad=23 - sueldo bruto=: Empleado - nombre=“María” - edad=25 - sueldo_bruto=36000 sueldo_bruto 30000 subordinados empleados empleados d1 : Directivo - nombre=“Luis” Empresa - nombre=“HGJ” empleados - edad=35 - sueldo_bruto=36000 - categoria=“C1” clientes c1 1 : Cli t Cliente - nombre=“Luis” - edad=35 nombre empresa=“Macroware” 16 - nombre_empresa= Macroware - telefono_de_contacto=91555666
  • 17. Programación Orientada a Objetos Modelado del mundo real z Nombres: {Objetos {Propiedades de objetos z Adjetivos: {Valores de las propiedades z Verbos: {Comportamiento de los objetos “El coche tiene color rojo y se mueve” “Eld tti l t d t ” 17 El documento tiene letra grande y se muestra”
  • 18. Lenguajes de POO zz Cronología: { Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969), Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986), Object Pascal (1988), CLOS (1989), Java (1995). { The jounal of object-oriented programming (1988). Journal of Object Technology (2002-), etc. { Muchas conferencias científicas sobre el tema: OOPSLA, ECOOP, etc. z Primeros lenguajes POO: { Simula-67 zz Objeto (datos+métodos). Clase. Herencia. { Smalltalk-80 z Verdadero primer lenguaje de POO z C t d d j ti ió d étd ) 18 Concepto de paso de mensajes ( activación de métodos)
  • 19. g j Lenguajes de POO Clasificaciones zO i t ió Orientación: {puros (Smalltalk) {híbridos (C++) zTipificación: {estática (en tiempo de compilación), Object Pascal {dinámica (en tiempo de ejecución), Python zzLigadura: {estática (C++) {dinámica (Java 19 Java, C++)
  • 20. Lenguajes de POO Paradigmas zClase-Elemento { Ninguna clase es objeto z C++ {{Toda clase es un objeto z Smalltalk, Java zPrototipo-Elemento {{Todo objeto puede ser prototipo de otros zAmulet 20
  • 21. Otras Ventajas de POO z Mejor mantenimiento. zz Estructuras más reales de la información. z Escalabilidad. z Adaptabilidad. zz Más apropriada para aplicaciones dirigidas por eventos. 21
  • 22. Inconvenientes de POO zNecesidades de estandarización: { Notación de Modelado (OMG, Object Management Group). {{ Lenguajes de Programación. zCoste de conversión de software legado 22
  • 23. Indice zz Ciclo de Vida y Calidad del Software. z Paradigmas de Programación. zz Programación Orientada a Objetos. zConceptos de Programación Orientada a Objetos. { Clases y Objetos { Encapsulamiento. { Herencia. { Polimorfismo. { Notaciones 23 Frameworks y Notaciones.
  • 24. Conceptos de POO zConceptos principales: {Clase. zSimilar al concepto de estructura en Pascal. zAdemás de datos (atributos), se añaden funciones (métodos) que operan sobre esos datos. zEstructuración (herencia). {Objeto (una instancia de una clase) {{Jerarquía de herencia entre clases. zHerencia de atributos y métodos. 24
  • 25. Conceptos de POO zObjetos: {objeto=datos+métodos {miembros de un objeto (o clase): zzdatos (atributos) zmétodos {{identificador del objeto znombre de variable 25
  • 26. Conceptos de POO z p Ejemplo Clase: Robot z Datos: x (entero), y (entero) zz Métodos: • void avanzar (entero, entero) • entero posicionX () • entero posicionY () • void avanzar (entero) • Constructores: Robot (entero, entero) Robot (entero) zInstanciación: • objeto “robot1” (Robot) • robot1 = Robot(1,2) zDatos de 26 clase: • numeroRobots (entero)
  • 27. Creación y Destrucción de Objetos zz Equivalencia de conceptos con programación clásica: {{Tipo ÅÅÆÆ Clase {Dato ÅÆ Objeto {Variable: existe en ambos tipos de programación z Creación (uso de constructor): {{Ejemplo: robot1 = Robot(1,2) robot2 = Robot(3) z Destrucción {Automática (Java, Garbage collection) {Explícita ( montón) o automática (pila) (C++). 27 p ) p )( ) Destructores.
  • 28. Encapsulamiento z Miembros privados y públicos z Interfaz pública de una clase (miembros públicos, datos y métodos) zSe pueden invocar desde fuera de la clase zz Ejemplo (clase Robot) zDatos: • privado x (entero) • privado y (entero) zMétodos: • público void avanzar (entero, entero) • público entero posicionX () • público entero posicionY () • público void avanzar (entero) zConstructores: • entero 28 público Robot (entero, entero) • público Robot (entero)
  • 29. Encapsulamiento p Representación clase: Robot Datos x Mét d y Métodos Robot (entero, entero) Robot (entero) void avanzar (entero, entero) void avanzar (entero) entero posicionY () 29 entero posicionX ()
  • 30. Ejecución de Métodos zUn método es una definición de una función. {Se dice que un método se ejecuta cuando el objeto recibe un mensaje de ejecución del método. {Puede acceder a otros miembros de la clase. zEjemplo: {Objeto robot1 (Robot) {robot1=Robot(3,2) {robot1.avanzar(1,2) 30 ( , )
  • 31. Herencia zRepresenta el concepto de “ser un tipo especial de” o “ser un/a”. zSe establece mediante la definición de subclases, que dan lugar a una jerarquía de clases. zLas subclases hijas heredan los datos y métodos de las clases padre. 31
  • 32. Herencia Ejemplo z Clase: RobotConFrontera { Clase padre: Robot { Datos: z privado limX (entero) z privado limY (entero) {{Métodos: zvoid avanzar (entero, entero) zvoid avanzar (entero) zzConstructores: • RobotConFrontera (entero, entero, entero, entero) • RobotConFrontera (entero, entero, entero) { Instanciación: zobjeto “robot4” ( RobotConFrontera) 32 j ) z robot4 = RobotConFrontera(1,2,0,0)
  • 33. Herencia zLa definición en RobotConFrontera de: zvoid avanzar (entero, entero) zvoid avanzar (entero) {{es un “overriding” (especialización, redefinición, etc) de los métodos ya definidos en la clase Robot 33
  • 34. Herencia Tipos zHerencia simple: zFigura, Círculo, Rectángulo, Cuadrado, Triángulo zHerencia múltiple: zzPersona, Profesor, Investigador, ProfesorUniversitario zProblemas de ambigüedad 34
  • 35. Ejemplo Figura +dibujar() +rotar(grad) Circulo Rectangulo -alto: real Triangulo -radio: real -tam1: +Circulo(r) -ancho: real +dibujar() +Rectangulo(alto, ancho) +rotar(grad) +dibujar() t ( d) real -tam2: real -tam3: real +Triangulo(t1, t2, t3) (g ) +rotar(grad) +dibujar() +rotar(grad) Cuadrado +Cuadrado(lado) 35 ( )
  • 36. Ejemplo Persona - nombre - edad Profesor Investigador - titulacion - tit l i titulacion - centro ProfesorUniversitario - categoria 36
  • 37. Herencia Clases Abstractas zClase abstracta: {No admite una instancia directa. Ejemplo: clase Figura. Sería inválido • objeto f (Figura) • f=Figura(....) aunque sí sería válido • objeto f (Figura) • f=Cuadrado(3) 37
  • 38. Polimorfismo zSobrecarga (overloading) de un método: {En una clase, el mismo nombre de método definido de modos distintos zzEjemplo: el método “avanzar” está sobrecargado en la clase Robot 38
  • 39. Polimorfismo z convencional En la programación convencional, también existe “overloading”: {Ejemplo: Pascal zprintln(“aldfkja”) zprintln(34) z ““Overloading”” y ““Overriding”” son casos de polimorfismo: {El mismo método definido de modos distintos zz Ligadura dinámica: {objeto r (Robot) {r=RobotConFrontera(2,3,0,0) {Al ejecutar r.avanzar(3), ¿qué definición se aplica? • la de Robot (ligadura estática) • de ligad dinámica) 39 la RobotConFrontera (ligad.
  • 40. Frameworks z Conjunto de clases que se coordinan para realizar una función z Para construir una aplicación hay que subclasificarlas. z Ejemplo: {{MFC (C++). {AWT, Swing (Java). zz El “main” usualmente incluido en el Framework z Diagramas de clases {N id dd tá d d t ió áfi 40 Necesidad de un estándar de representación gráfica
  • 41. UML z Diagramas de Estructura { Diagramas de clase (condensación gráfica de estructuras de clases y relaciones entre objetos y clases) z Diagramas de Comportamiento. 41