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 II
1
TACC II
Curso 2008/09
IndiceIndice
Ci l d Vid C lid d d lCiclo de Vida y Calidad del
Software.
Paradigmas de Programación.
Programación Orientada a Objetos.
Conceptos de Programación Orientada a
Objetos.
Clases ObjetosClases y Objetos
Encapsulamiento.
HerenciaHerencia.
Polimorfismo.
Frameworks y Notaciones.
2
y
Ciclo de Vida del SoftwareCiclo de Vida del Software
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.
3Construir Software no es sólo programar.
Ciclo de Vida del Software
Distribución del Esfuerzo
Distribucióndel esfuerzoduranteel ciclodevida
Análisis ≈ 6% 40
25
30
35
40
45
oRelativo(
Análisis ≈ 6%.
Diseño ≈ 5%.
Codificación ≈ 7% 11
7
15 13 14
0
5
10
15
20
ño
ón
s
r
r
r
Esfuerzo
Codificación ≈ 7%.
Pruebas ≈ 15%.
Mantenimiento 67%
Análisis
y
diseñoIm
plem
entación
Pruebas
Adaptar
M
ejorar
C
orregir
Mantenimiento ≈ 67%.
4
Calidad del Software
Efi i i
Factores de Calidad
Eficiencia
Portabilidad
Facilidad de pruebaFacilidad de prueba
Integridad (protección contra procesos sin derecho de
acceso)acceso)
Facilidad de uso
Corrección
Fiabilidad (situaciones anómalas)
Extensibilidad
Reutilización
Compatibilidad
5
...
IndiceIndice
Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software.
Paradigmas de Programación.Paradigmas de Programación.
Programación Orientada a Objetos.
Conceptos de Programación Orientada aConceptos de Programación Orientada a
Objetos.
Clases y ObjetosClases y Objetos
Encapsulamiento.
HerenciaHerencia.
Polimorfismo.
Frameworks y Notaciones
6
Frameworks y Notaciones.
Paradigmas de Programacióng g
Abstracción
Capacidad para encapsular y aislar la
información del diseño y ejecución.y j
Mecanismos en programación:
P di i t f iProcedimientos 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ónParadigmas de Programación
EstructuradaEstructurada.
Fortran.
Basic.
Pascal Desde principios de los 70.Pascal.
C.
…
Funcional
esde p c p os de os 0
Dificultad para el trabajo en grupo.
No hay correspondencia estrecha entre
d t lFuncional.
Lisp.
…
Lógica
datos reales y programas.
Lógica.
Prolog.
…
POOPOO.
Smalltalk.
C++.
Java
8
Java.
…
IndiceIndice
Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software.
Paradigmas de Programación.
Programación Orientada a Objetos.
Conceptos de Programación Orientada aConceptos de Programación Orientada a
Objetos.
Clases y ObjetosClases y Objetos
Encapsulamiento.
Herencia.e e c a
Polimorfismo.
Frameworks y Notaciones.
9
y
Programación Orientada a ObjetosProgramación Orientada a Objetos
Ventajas de uso:
Reusabilidad (mecanismos de abstracción y( y
herencia)
En programación convencional: uso deEn programación convencional: uso de
funciones y procedimientos
Adecuación a entornos de bases de datosAdecuación a entornos de bases de datos.
Idónea para tratamiento de Interfaces de Usuario.
Ad d t ti i l ióAdecuada en prototipos y simulación.
10
Programación Orientada a Objetosg j
Características Generales
Construcción de sistemas complejos a
partir de componentes.p p
M d l d á fi l d l d lModelado más fiel del mundo real.
Estimación de reducción de 40% con
respecto a la programación con encionalrespecto a la programación convencional.
11
Programación Orientada a Objetosg j
Características
El modelo objeto (Booch, 1994):
AbstracciónAbstracción
Las características esenciales del objeto:
• Documento: insertar borrar• Documento: insertar, borrar, ...
• Una grapadora: rellenar, grapar, ...
E l i t ( lt ió d i f ió )Encapsulamiento (ocultación de información)
• Una clase contiene:
una interfaz pública.
una implementación.
12
Ejemplo
I
Ejemplo
Persona
- nombre
- edad
Persona
nformaci
+mostrar()
+setNombre(string)
Interfaz
- id
- setID()
+mostrar()
tN b ( t i )
ónprivad
+getNombre(): string
+setEdad(int)
+getEdad(): int
zpública
+setNombre(string)
+getNombre(): string
+setEdad(int)
+getEdad(): int
da
getEdad(): int
Clases,
Tipos especificación
p1 Personap2 Persona
Objetos,
“instancias”
especificación
ejecución
p1 : Persona
- nombre=“Pedro”
- edad=23
id=“3456789K”
p2 : Persona
- nombre=“María”
- edad=25
id=“55567876G”
13
- id= 3456789K- id= 55567876G
Programación Orientada a Objetos
Modularidad:
g j
Características
Modularidad:
Subdivisión de una aplicación en otras más pequeñas (módulos).
Un módulo es un conjunto de clases.
Jerarquía
Ordenación de las abstracciones
Tipos:
Herencia (“es-un”); generalización/especialización
• Herencia simple o múltiple
Agregación (“parte-de”)g g ( p )
Polimorfismo
Una misma operación (método) realizada de diferente modo
( l ó ) l ífcomer (vaca, persona, león); clase mamífero
dibujar (triángulo, cuadrado); clase figura
Otras propiedades
14
Otras propiedades
concurrencia (multitarea), persistencia, uso de excepciones
EjemploEjemplo
nombre
Persona
+ mostrar()
- nombre
- edad
()
- sueldo_bruto - nombre_empresa
telefono de contacto
Empleado Cliente
subordinados
+mostrar()
+ mostrar ()
+ calcular_salario_neto()
- telefono_de_contacto
empleados clientes
- categoria
Directivo
Empresa
15+ mostrar ()
categoria
- nombre
Ejemplo
e1 : Empleadoe2 : Empleado
Ejemplo
e1 : Empleado
- nombre=“Pedro”
- edad=23
- sueldo bruto=30000
e2 : Empleado
- nombre=“María”
- edad=25
- sueldo bruto=36000 sueldo_bruto 30000sueldo_bruto 36000
subordinados empleados empleados
d1 : Directivo
- nombre=“Luis”
Empresa
- nombre=“HGJ”
empleados
- edad=35
- sueldo_bruto=36000
- categoria=“C1”
1 Cli t
clientes
c1 : Cliente
- nombre=“Luis”
- edad=35
nombre empresa=“Macroware”
16
- nombre_empresa= Macroware
- telefono_de_contacto=91555666
Programación Orientada a Objetosg j
Modelado del mundo real
Nombres:
Objetos
Propiedades de objetos
Adjetivos:
Valores de las propiedades
Verbos:
Comportamiento de los objetos
“El coche tiene color rojo y se mueve”
“El d t ti l t d t ”
17
“El documento tiene letra grande y se muestra”
Lenguajes de POOLenguajes de POO
C l íCronología:
Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969),
Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986),g ( ), ( ), ( ), ( ),
Object Pascal (1988), CLOS (1989), Java (1995).
The jounal of object-oriented programming (1988). Journal of
Object Technology (2002-) etcObject Technology (2002 ), etc.
Muchas conferencias científicas sobre el tema: OOPSLA,
ECOOP, etc.
Primeros lenguajes POO:
Simula-67
Objeto (datos+métodos) Clase HerenciaObjeto (datos+métodos). Clase. Herencia.
Smalltalk-80
Verdadero primer lenguaje de POO
C t d d j ( ti ió d ét d )
18
Concepto de paso de mensajes (activación de métodos)
Lenguajes de POO
O i t ió
g j
Clasificaciones
Orientación:
puros (Smalltalk)
híbridos (C++)
Tipificación:Tipificación:
estática (en tiempo de compilación), Object
Pascal
dinámica (en tiempo de ejecución), Python
Ligadura:Ligadura:
estática (C++)
dinámica (Java C++)
19
dinámica (Java, C++)
Lenguajes de POOg j
Paradigmas
Clase-Elemento
Ninguna clase es objetog j
C++
Toda clase es un objetoToda clase es un objeto
Smalltalk, Java
Prototipo-Elemento
Todo objeto puede ser prototipo de otrosTodo objeto puede ser prototipo de otros
Amulet
20
Otras Ventajas de POOOtras Ventajas de POO
Mejor mantenimiento.
Estructuras más reales de la informaciónEstructuras más reales de la información.
Escalabilidad.
Adaptabilidad.
Más apropriada para aplicacionesMás apropriada para aplicaciones
dirigidas por eventos.
21
Inconvenientes de POOInconvenientes de POO
Necesidades de estandarización:
Notación de Modelado (OMG, Object( , j
Management Group).
Lenguajes de Programación.Lenguajes de Programación.
Coste de conversión de software legado
22
IndiceIndice
Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software.
Paradigmas de Programación.
Programación Orientada a ObjetosProgramación Orientada a Objetos.
Conceptos de Programación Orientada
Obj ta Objetos.
Clases y Objetos
Encapsulamiento.
Herencia.
Polimorfismo.
Frameworks y Notaciones
23
Frameworks y Notaciones.
Conceptos de POOConceptos de POO
Conceptos principales:
Clase.
Similar al concepto de estructura en Pascal.
Además de datos (atributos), se añaden funciones( ),
(métodos) que operan sobre esos datos.
Estructuración (herencia).
Objeto (una instancia de una clase)
Jerarquía de herencia entre clases.Jerarquía de herencia entre clases.
Herencia de atributos y métodos.
24
Conceptos de POOConceptos de POO
Objetos:
objeto=datos+métodosj
miembros de un objeto (o clase):
datos (atributos)datos (atributos)
métodos
identificador del objetoidentificador del objeto
nombre de variable
25
Conceptos de POO
Clase: Robot
p
Ejemplo
Clase: Robot
Datos: x (entero), y (entero)
Métodos:Métodos:
• void avanzar (entero, entero)
• entero posicionX ()
entero posicionY ()• entero posicionY ()
• void avanzar (entero)
• Constructores:
R b t ( t t )Robot (entero, entero)
Robot (entero)
Instanciación:
• objeto “robot1” (Robot)
• robot1 = Robot(1,2)
Datos de clase:
26
Datos de clase:
• numeroRobots (entero)
Creación y Destrucción de ObjetosCreación y Destrucción de Objetos
Equivalencia de conceptos con programaciónEquivalencia de conceptos con programación
clásica:
Tipo ClaseTipo Clase
Dato Objeto
Variable: existe en ambos tipos de programaciónp p g
Creación (uso de constructor):
Ejemplo:Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)
DestrucciónDestrucción
Automática (Java, Garbage collection)
Explícita (montón) o automática (pila) (C++).
27
p ( ) (p ) ( )
Destructores.
EncapsulamientoEncapsulamiento
Miembros privados y públicos
Interfaz pública de una clase (miembros públicos, datos y métodos)
Se pueden invocar desde fuera de la clase
Ejemplo (clase Robot)Ejemplo (clase Robot)
Datos:
• privado x (entero)
• privado y (entero)
Métodos:
• público void avanzar (entero entero)público void avanzar (entero, entero)
• público entero posicionX ()
• público entero posicionY ()
• público void avanzar (entero)
Constructores:
• público Robot (entero entero)
28
público Robot (entero, entero)
• público Robot (entero)
Encapsulamiento
clase: Robot
p
Representación
clase: Robot
Datos
x
Mét d
x
y
Métodos
Robot (entero, entero)
void avanzar (entero, entero)
Robot (entero)
void avanzar (entero)
entero posicionY ()
29
entero posicionX ()
Ejecución de MétodosEjecución de Métodos
U ét d d fi i ió dUn 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
ét dmétodo.
Puede acceder a otros miembros de la clase.
Ejemplo:
Objeto robot1 (Robot)j ( )
robot1=Robot(3,2)
robot1.avanzar(1,2)
30
( , )
HerenciaHerencia
Representa el concepto de “ser un tipo
especial de” o “ser un/a”.p
Se establece mediante la definición de
subclases que dan lugar a una jerarquíasubclases, que dan lugar a una jerarquía
de clases.
Las subclases hijas heredan los datos y
métodos de las clases padre.métodos de las clases padre.
31
Herencia
Clase: RobotConFrontera
Ejemplo
Clase: RobotConFrontera
Clase padre: Robot
Datos:
privado limX (entero)
privado limY (entero)
Métodos:Métodos:
void avanzar (entero, entero)
void avanzar (entero)
C t tConstructores:
• RobotConFrontera (entero, entero,
entero, entero)
• RobotConFrontera (entero, entero, entero)
Instanciación:
objeto “robot4” (RobotConFrontera)
32
j ( )
robot4 = RobotConFrontera(1,2,0,0)
HerenciaHerencia
La definición en RobotConFrontera de:
void avanzar (entero, entero)( , )
void avanzar (entero)
es un “overriding” (especialización redefiniciónes un overriding (especialización, redefinición,
etc) de los métodos ya definidos en la clase
RobotRobot
33
Herencia
Tipos
Herencia simple:
Figura, Círculo, Rectángulo, Cuadrado, Triángulo
Herencia múltiple:
Persona Profesor Investigador ProfesorUniversitarioPersona, Profesor, Investigador, ProfesorUniversitario
Problemas de ambigüedad
34
EjemploEjemplo Figura
dib j ()+dibujar()
+rotar(grad)
Circulo
radio: real
Rectangulo
-alto: real
Triangulo
-tam1: real-radio: real -alto: real
-ancho: real
+Circulo(r)
+dibujar()
+rotar(grad)
+Rectangulo(alto, ancho)
+dibujar()
t ( d)
tam1: real
-tam2: real
-tam3: real
+Triangulo(t1, t2, t3)
dib j ()
(g )
+rotar(grad) +dibujar()
+rotar(grad)
Cuadrado
+Cuadrado(lado)
35
( )
EjemploEjemplo
- nombre
Persona
- edad
tit l i
Profesor Investigador
- titulacion - titulacion
- centro
ProfesorUniversitario
- categoria
ProfesorUniversitario
36
Herencia
Clases Abstractas
Clase abstracta:
No admite una instancia directa. Ejemplo: clasej p
Figura. Sería inválido
• objeto f (Figura)objeto f (Figura)
• f=Figura(....)
í í álidaunque sí sería válido
• objeto f (Figura)
• f=Cuadrado(3)
37
PolimorfismoPolimorfismo
Sobrecarga (overloading) de un método:
En una clase, el mismo nombre de método,
definido de modos distintos
Ejemplo: el método “avanzar” estáEjemplo: el método avanzar está
sobrecargado en la clase Robot
38
Polimorfismo
En la programación convencional también existe
Polimorfismo
En la programación convencional, también existe
“overloading”:
Ejemplo: Pascalj p
println(“aldfkja”)
println(34)
“O l di ” “O idi ” d li fi“Overloading” y “Overriding” son casos de polimorfismo:
El mismo método definido de modos distintos
Ligadura dinámica: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)
• la de RobotConFrontera (ligad dinámica)
39
• la de RobotConFrontera (ligad. dinámica)
FrameworksFrameworks
Conjunto de clases que se coordinan para
realizar una función
Para construir una aplicación hay que
subclasificarlas.
Ejemplo:
MFC (C++).MFC (C ).
AWT, Swing (Java).
El “main” usualmente incluido en el FrameworkEl main usualmente incluido en el Framework
Diagramas de clases
N id d d tá d d t ió áfi
40
Necesidad de un estándar de representación gráfica
UMLUML
Diagramas de Estructurag
Diagramas de clase (condensación gráfica de estructuras de
clases y relaciones entre objetos y clases)
Diagramas de Comportamiento.g p
41

Más contenido relacionado

Similar a 2 intro poo

¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...Jordi Cabot
 
13 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-113 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-1johnny herrera
 
Desarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSDesarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSjohnny herrera
 
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
 
Programacion orientada ojetos
Programacion orientada  ojetosProgramacion orientada  ojetos
Programacion orientada ojetosChikio Edu
 
Pe isw descripción plandeestudios
Pe isw descripción plandeestudiosPe isw descripción plandeestudios
Pe isw descripción plandeestudiosITSON
 
Características de un programa
Características de un programaCaracterísticas de un programa
Características de un programaDavid Sampedro
 
Proyecto para programacion y estructura
Proyecto para programacion y estructuraProyecto para programacion y estructura
Proyecto para programacion y estructuraChristian Torres
 
Métrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoMétrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoJesús E. CuRias
 
Temario programacion basica
Temario programacion basicaTemario programacion basica
Temario programacion basicaconaleptareas
 
Metricas4 vip ideas interesantes-
Metricas4  vip ideas interesantes-Metricas4  vip ideas interesantes-
Metricas4 vip ideas interesantes-xavazquez
 
Introducción a los entornos de programación
Introducción a los entornos de programaciónIntroducción a los entornos de programación
Introducción a los entornos de programaciónFernando Solis
 

Similar a 2 intro poo (20)

Analisis Proyecto TETRAD V
 Analisis Proyecto TETRAD V Analisis Proyecto TETRAD V
Analisis Proyecto TETRAD V
 
Met2 07 01-introduccion_poo
Met2 07 01-introduccion_pooMet2 07 01-introduccion_poo
Met2 07 01-introduccion_poo
 
Parte i curso c
Parte i curso cParte i curso c
Parte i curso c
 
Unidad 2 curso c
Unidad 2 curso cUnidad 2 curso c
Unidad 2 curso c
 
Material estudio c
Material estudio cMaterial estudio c
Material estudio c
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
 
13 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-113 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-1
 
Desarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSDesarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHS
 
Metodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMetodologia De Desarrollo De Software
Metodologia De Desarrollo De Software
 
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
 
Programacion orientada ojetos
Programacion orientada  ojetosProgramacion orientada  ojetos
Programacion orientada ojetos
 
Pe isw descripción plandeestudios
Pe isw descripción plandeestudiosPe isw descripción plandeestudios
Pe isw descripción plandeestudios
 
Características de un programa
Características de un programaCaracterísticas de un programa
Características de un programa
 
Proyecto para programacion y estructura
Proyecto para programacion y estructuraProyecto para programacion y estructura
Proyecto para programacion y estructura
 
Métrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigoMétrica de punto de función y lineas de codigo
Métrica de punto de función y lineas de codigo
 
Temario programacion basica
Temario programacion basicaTemario programacion basica
Temario programacion basica
 
Metricas4 vip ideas interesantes-
Metricas4  vip ideas interesantes-Metricas4  vip ideas interesantes-
Metricas4 vip ideas interesantes-
 
Introducción a los entornos de programación
Introducción a los entornos de programaciónIntroducción a los entornos de programación
Introducción a los entornos de programación
 
Cocomo
CocomoCocomo
Cocomo
 
Introduccion a la ingenieria de software
Introduccion a la ingenieria de softwareIntroduccion a la ingenieria de software
Introduccion a la ingenieria de software
 

Último

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 

Último (8)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 

2 intro poo

  • 1. Introducción a la Programación Orientada a Objetos Tema 1 TACC II 1 TACC II Curso 2008/09
  • 2. IndiceIndice Ci l d Vid C lid d d lCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada a Objetos. Clases ObjetosClases y Objetos Encapsulamiento. HerenciaHerencia. Polimorfismo. Frameworks y Notaciones. 2 y
  • 3. Ciclo de Vida del SoftwareCiclo de Vida del Software 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. 3Construir Software no es sólo programar.
  • 4. Ciclo de Vida del Software Distribución del Esfuerzo Distribucióndel esfuerzoduranteel ciclodevida Análisis ≈ 6% 40 25 30 35 40 45 oRelativo( Análisis ≈ 6%. Diseño ≈ 5%. Codificación ≈ 7% 11 7 15 13 14 0 5 10 15 20 ño ón s r r r Esfuerzo Codificación ≈ 7%. Pruebas ≈ 15%. Mantenimiento 67% Análisis y diseñoIm plem entación Pruebas Adaptar M ejorar C orregir Mantenimiento ≈ 67%. 4
  • 5. Calidad del Software Efi i i Factores de Calidad Eficiencia Portabilidad Facilidad de pruebaFacilidad de prueba Integridad (protección contra procesos sin derecho de acceso)acceso) Facilidad de uso Corrección Fiabilidad (situaciones anómalas) Extensibilidad Reutilización Compatibilidad 5 ...
  • 6. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación.Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada aConceptos de Programación Orientada a Objetos. Clases y ObjetosClases y Objetos Encapsulamiento. HerenciaHerencia. Polimorfismo. Frameworks y Notaciones 6 Frameworks y Notaciones.
  • 7. Paradigmas de Programacióng g Abstracción Capacidad para encapsular y aislar la información del diseño y ejecución.y j Mecanismos en programación: P di i t f iProcedimientos 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ónParadigmas de Programación EstructuradaEstructurada. Fortran. Basic. Pascal Desde principios de los 70.Pascal. C. … Funcional esde p c p os de os 0 Dificultad para el trabajo en grupo. No hay correspondencia estrecha entre d t lFuncional. Lisp. … Lógica datos reales y programas. Lógica. Prolog. … POOPOO. Smalltalk. C++. Java 8 Java. …
  • 9. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada aConceptos de Programación Orientada a Objetos. Clases y ObjetosClases y Objetos Encapsulamiento. Herencia.e e c a Polimorfismo. Frameworks y Notaciones. 9 y
  • 10. Programación Orientada a ObjetosProgramación Orientada a Objetos Ventajas de uso: Reusabilidad (mecanismos de abstracción y( y herencia) En programación convencional: uso deEn programación convencional: uso de funciones y procedimientos Adecuación a entornos de bases de datosAdecuación a entornos de bases de datos. Idónea para tratamiento de Interfaces de Usuario. Ad d t ti i l ióAdecuada en prototipos y simulación. 10
  • 11. Programación Orientada a Objetosg j Características Generales Construcción de sistemas complejos a partir de componentes.p p M d l d á fi l d l d lModelado más fiel del mundo real. Estimación de reducción de 40% con respecto a la programación con encionalrespecto a la programación convencional. 11
  • 12. Programación Orientada a Objetosg j Características El modelo objeto (Booch, 1994): AbstracciónAbstracción Las características esenciales del objeto: • Documento: insertar borrar• Documento: insertar, borrar, ... • Una grapadora: rellenar, grapar, ... E l i t ( lt ió d i f ió )Encapsulamiento (ocultación de información) • Una clase contiene: una interfaz pública. una implementación. 12
  • 13. Ejemplo I Ejemplo Persona - nombre - edad Persona nformaci +mostrar() +setNombre(string) Interfaz - id - setID() +mostrar() tN b ( t i ) ónprivad +getNombre(): string +setEdad(int) +getEdad(): int zpública +setNombre(string) +getNombre(): string +setEdad(int) +getEdad(): int da getEdad(): int Clases, Tipos especificación p1 Personap2 Persona Objetos, “instancias” especificación ejecución p1 : Persona - nombre=“Pedro” - edad=23 id=“3456789K” p2 : Persona - nombre=“María” - edad=25 id=“55567876G” 13 - id= 3456789K- id= 55567876G
  • 14. Programación Orientada a Objetos Modularidad: g j Características Modularidad: Subdivisión de una aplicación en otras más pequeñas (módulos). Un módulo es un conjunto de clases. Jerarquía Ordenación de las abstracciones Tipos: Herencia (“es-un”); generalización/especialización • Herencia simple o múltiple Agregación (“parte-de”)g g ( p ) Polimorfismo Una misma operación (método) realizada de diferente modo ( l ó ) l ífcomer (vaca, persona, león); clase mamífero dibujar (triángulo, cuadrado); clase figura Otras propiedades 14 Otras propiedades concurrencia (multitarea), persistencia, uso de excepciones
  • 15. EjemploEjemplo nombre Persona + mostrar() - nombre - edad () - sueldo_bruto - nombre_empresa telefono de contacto Empleado Cliente subordinados +mostrar() + mostrar () + calcular_salario_neto() - telefono_de_contacto empleados clientes - categoria Directivo Empresa 15+ mostrar () categoria - nombre
  • 16. Ejemplo e1 : Empleadoe2 : Empleado Ejemplo e1 : Empleado - nombre=“Pedro” - edad=23 - sueldo bruto=30000 e2 : Empleado - nombre=“María” - edad=25 - sueldo bruto=36000 sueldo_bruto 30000sueldo_bruto 36000 subordinados empleados empleados d1 : Directivo - nombre=“Luis” Empresa - nombre=“HGJ” empleados - edad=35 - sueldo_bruto=36000 - categoria=“C1” 1 Cli t clientes c1 : Cliente - nombre=“Luis” - edad=35 nombre empresa=“Macroware” 16 - nombre_empresa= Macroware - telefono_de_contacto=91555666
  • 17. Programación Orientada a Objetosg j Modelado del mundo real Nombres: Objetos Propiedades de objetos Adjetivos: Valores de las propiedades Verbos: Comportamiento de los objetos “El coche tiene color rojo y se mueve” “El d t ti l t d t ” 17 “El documento tiene letra grande y se muestra”
  • 18. Lenguajes de POOLenguajes de POO C l íCronología: Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969), Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986),g ( ), ( ), ( ), ( ), Object Pascal (1988), CLOS (1989), Java (1995). The jounal of object-oriented programming (1988). Journal of Object Technology (2002-) etcObject Technology (2002 ), etc. Muchas conferencias científicas sobre el tema: OOPSLA, ECOOP, etc. Primeros lenguajes POO: Simula-67 Objeto (datos+métodos) Clase HerenciaObjeto (datos+métodos). Clase. Herencia. Smalltalk-80 Verdadero primer lenguaje de POO C t d d j ( ti ió d ét d ) 18 Concepto de paso de mensajes (activación de métodos)
  • 19. Lenguajes de POO O i t ió g j Clasificaciones Orientación: puros (Smalltalk) híbridos (C++) Tipificación:Tipificación: estática (en tiempo de compilación), Object Pascal dinámica (en tiempo de ejecución), Python Ligadura:Ligadura: estática (C++) dinámica (Java C++) 19 dinámica (Java, C++)
  • 20. Lenguajes de POOg j Paradigmas Clase-Elemento Ninguna clase es objetog j C++ Toda clase es un objetoToda clase es un objeto Smalltalk, Java Prototipo-Elemento Todo objeto puede ser prototipo de otrosTodo objeto puede ser prototipo de otros Amulet 20
  • 21. Otras Ventajas de POOOtras Ventajas de POO Mejor mantenimiento. Estructuras más reales de la informaciónEstructuras más reales de la información. Escalabilidad. Adaptabilidad. Más apropriada para aplicacionesMás apropriada para aplicaciones dirigidas por eventos. 21
  • 22. Inconvenientes de POOInconvenientes de POO Necesidades de estandarización: Notación de Modelado (OMG, Object( , j Management Group). Lenguajes de Programación.Lenguajes de Programación. Coste de conversión de software legado 22
  • 23. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a ObjetosProgramación Orientada a Objetos. Conceptos de Programación Orientada Obj ta Objetos. Clases y Objetos Encapsulamiento. Herencia. Polimorfismo. Frameworks y Notaciones 23 Frameworks y Notaciones.
  • 24. Conceptos de POOConceptos de POO Conceptos principales: Clase. Similar al concepto de estructura en Pascal. Además de datos (atributos), se añaden funciones( ), (métodos) que operan sobre esos datos. Estructuración (herencia). Objeto (una instancia de una clase) Jerarquía de herencia entre clases.Jerarquía de herencia entre clases. Herencia de atributos y métodos. 24
  • 25. Conceptos de POOConceptos de POO Objetos: objeto=datos+métodosj miembros de un objeto (o clase): datos (atributos)datos (atributos) métodos identificador del objetoidentificador del objeto nombre de variable 25
  • 26. Conceptos de POO Clase: Robot p Ejemplo Clase: Robot Datos: x (entero), y (entero) Métodos:Métodos: • void avanzar (entero, entero) • entero posicionX () entero posicionY ()• entero posicionY () • void avanzar (entero) • Constructores: R b t ( t t )Robot (entero, entero) Robot (entero) Instanciación: • objeto “robot1” (Robot) • robot1 = Robot(1,2) Datos de clase: 26 Datos de clase: • numeroRobots (entero)
  • 27. Creación y Destrucción de ObjetosCreación y Destrucción de Objetos Equivalencia de conceptos con programaciónEquivalencia de conceptos con programación clásica: Tipo ClaseTipo Clase Dato Objeto Variable: existe en ambos tipos de programaciónp p g Creación (uso de constructor): Ejemplo:Ejemplo: robot1 = Robot(1,2) robot2 = Robot(3) DestrucciónDestrucción Automática (Java, Garbage collection) Explícita (montón) o automática (pila) (C++). 27 p ( ) (p ) ( ) Destructores.
  • 28. EncapsulamientoEncapsulamiento Miembros privados y públicos Interfaz pública de una clase (miembros públicos, datos y métodos) Se pueden invocar desde fuera de la clase Ejemplo (clase Robot)Ejemplo (clase Robot) Datos: • privado x (entero) • privado y (entero) Métodos: • público void avanzar (entero entero)público void avanzar (entero, entero) • público entero posicionX () • público entero posicionY () • público void avanzar (entero) Constructores: • público Robot (entero entero) 28 público Robot (entero, entero) • público Robot (entero)
  • 29. Encapsulamiento clase: Robot p Representación clase: Robot Datos x Mét d x y Métodos Robot (entero, entero) void avanzar (entero, entero) Robot (entero) void avanzar (entero) entero posicionY () 29 entero posicionX ()
  • 30. Ejecución de MétodosEjecución de Métodos U ét d d fi i ió dUn 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 ét dmétodo. Puede acceder a otros miembros de la clase. Ejemplo: Objeto robot1 (Robot)j ( ) robot1=Robot(3,2) robot1.avanzar(1,2) 30 ( , )
  • 31. HerenciaHerencia Representa el concepto de “ser un tipo especial de” o “ser un/a”.p Se establece mediante la definición de subclases que dan lugar a una jerarquíasubclases, que dan lugar a una jerarquía de clases. Las subclases hijas heredan los datos y métodos de las clases padre.métodos de las clases padre. 31
  • 32. Herencia Clase: RobotConFrontera Ejemplo Clase: RobotConFrontera Clase padre: Robot Datos: privado limX (entero) privado limY (entero) Métodos:Métodos: void avanzar (entero, entero) void avanzar (entero) C t tConstructores: • RobotConFrontera (entero, entero, entero, entero) • RobotConFrontera (entero, entero, entero) Instanciación: objeto “robot4” (RobotConFrontera) 32 j ( ) robot4 = RobotConFrontera(1,2,0,0)
  • 33. HerenciaHerencia La definición en RobotConFrontera de: void avanzar (entero, entero)( , ) void avanzar (entero) es un “overriding” (especialización redefiniciónes un overriding (especialización, redefinición, etc) de los métodos ya definidos en la clase RobotRobot 33
  • 34. Herencia Tipos Herencia simple: Figura, Círculo, Rectángulo, Cuadrado, Triángulo Herencia múltiple: Persona Profesor Investigador ProfesorUniversitarioPersona, Profesor, Investigador, ProfesorUniversitario Problemas de ambigüedad 34
  • 35. EjemploEjemplo Figura dib j ()+dibujar() +rotar(grad) Circulo radio: real Rectangulo -alto: real Triangulo -tam1: real-radio: real -alto: real -ancho: real +Circulo(r) +dibujar() +rotar(grad) +Rectangulo(alto, ancho) +dibujar() t ( d) tam1: real -tam2: real -tam3: real +Triangulo(t1, t2, t3) dib j () (g ) +rotar(grad) +dibujar() +rotar(grad) Cuadrado +Cuadrado(lado) 35 ( )
  • 36. EjemploEjemplo - nombre Persona - edad tit l i Profesor Investigador - titulacion - titulacion - centro ProfesorUniversitario - categoria ProfesorUniversitario 36
  • 37. Herencia Clases Abstractas Clase abstracta: No admite una instancia directa. Ejemplo: clasej p Figura. Sería inválido • objeto f (Figura)objeto f (Figura) • f=Figura(....) í í álidaunque sí sería válido • objeto f (Figura) • f=Cuadrado(3) 37
  • 38. PolimorfismoPolimorfismo Sobrecarga (overloading) de un método: En una clase, el mismo nombre de método, definido de modos distintos Ejemplo: el método “avanzar” estáEjemplo: el método avanzar está sobrecargado en la clase Robot 38
  • 39. Polimorfismo En la programación convencional también existe Polimorfismo En la programación convencional, también existe “overloading”: Ejemplo: Pascalj p println(“aldfkja”) println(34) “O l di ” “O idi ” d li fi“Overloading” y “Overriding” son casos de polimorfismo: El mismo método definido de modos distintos Ligadura dinámica: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) • la de RobotConFrontera (ligad dinámica) 39 • la de RobotConFrontera (ligad. dinámica)
  • 40. FrameworksFrameworks Conjunto de clases que se coordinan para realizar una función Para construir una aplicación hay que subclasificarlas. Ejemplo: MFC (C++).MFC (C ). AWT, Swing (Java). El “main” usualmente incluido en el FrameworkEl main usualmente incluido en el Framework Diagramas de clases N id d d tá d d t ió áfi 40 Necesidad de un estándar de representación gráfica
  • 41. UMLUML Diagramas de Estructurag Diagramas de clase (condensación gráfica de estructuras de clases y relaciones entre objetos y clases) Diagramas de Comportamiento.g p 41