1poo
-
Upload
fernanda-perez -
Category
Documents
-
view
145 -
download
0
Transcript of 1poo
![Page 1: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/1.jpg)
Introducccióna la POO (OOP)
![Page 2: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/2.jpg)
1) Web Servicies
2) SOA – Arquitectura Orientada a Servicios
3) PHP
4) JSP
5) Javascript
6) Eclipse (plugins C++, C, PHP,..)
5) Qt / C++ y QtJambi
http://es.wikipedia.org/wiki/Portada
TEMAS PARA EXPOSIONES
Mónica Gonzalez y Violetta
Javier Rojas y
Maximiliano Rodriguez
Elba Guerray Christian Poliycroniadys
Efrain Vasquez y Christian Becles
Laura García y Edar Castro
Rafael Andara y Aldo Grazzina
27 y 28 de Noviembre
![Page 3: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/3.jpg)
[Presentación 15min]
Contenido● Qué es?● Areas de aplicación● Ejemplos Básicos● Relaciones con otras herramientas
(versiones, plungins, interfaces)
TEMAS PARA EXPOSIONES26 y 28 de Noviembre
![Page 4: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/4.jpg)
Introducción
● Fases del ciclo de vida del software:1) Análisis, 6%
2) Diseño, 5%
3) Implementación, 7%
4) Depuración, 15%
5) Mantenimiento, 67%
![Page 5: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/5.jpg)
Factores calidad del software● Eficiencia● Portabilidad● Verificabilidad● Integridad (protección contra procesos sin derecho de acceso)
● Facilidad de uso● Robustez (situaciones anómalas)
● Extensibilidad● Reutilización● Compatibilidad, ...
![Page 6: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/6.jpg)
Abstracción en programación
● Capacidad para encapsular y aislar la información del diseño y ejecución.
● Mecanismos en programación: Procedimientos y funciones Tipos de datos abstractos (TDA) Objetos: son TDA a los que se añaden mecanismos
como herencia, métodos, etc.
![Page 7: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/7.jpg)
● La programación orientada a objetos trata de
amoldarse al modo de pensar del hombre y no
al de la máquina.
● Esto es posible gracias a la forma racional con
la que se manejan las abstracciones que
representan las entidades del dominio del
problema, y a propiedades como la jerarquía o
el encapsulamiento.
Programación Orientada a Objetos (POO)
![Page 8: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/8.jpg)
● El elemento básico de este paradigma no es la
función (elemento básico de la programación
estructurada), sino un ente denominado Objeto.
Programación Orientada a Objetos (POO)
![Page 9: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/9.jpg)
● Un objeto es la representación de un concepto para
un programa, y contiene la información necesaria
para abstraer dicho concepto:
los datos que describen su estado
las operaciones que pueden modificar dicho estado, y
determinan las capacidades del objeto.
Programación Orientada a Objetos (POO)
![Page 10: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/10.jpg)
● Un objeto es un trocito de programa
● Un programa es un conjunto de objetos
● Se programan cosas que pueden ser muy complejas
y para mantener esa complejidad bajo control hay
que partir el problema en piezas controlables
Divide y vencerásl
Programación Orientada a Objetos (POO)
![Page 11: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/11.jpg)
¿Los objetos son objetos?
● Los objetos de programación NO son objetos materiales
● Inicialmente los objetos se inventaron para estructurar
programas de simulación flujo viales: un auto, un peatón,
una calle, un semáforo, ...
● Actualmente se usan para estructurar objetos materiales,
servicios, conceptos, ..., en general cualquier abstracción
mental.
Programación Orientada a Objetos (POO)
![Page 12: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/12.jpg)
Ejemplos de objetos
● Una estructura algebraica (ej. un grupo)
● Un ámbito de trabajo (ej. colores)
● Un objeto material (ej. un satélite)
● Un servicio inmaterial (ej. www)
● Algo muy “real”: una cuenta corriente
Programación Orientada a Objetos (POO)
![Page 13: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/13.jpg)
● Habitualmente un programa emplea muchos objetos de
la misma clase
muchos coches, muchos satélites, muchas conexiones
www, muchos transistores, ...
● Los programadores definen clases
class Car { ... detalles ... }
● Y luego crean objetos de las clases definidas
Car miAuto = new Car (...);
Car autoDeElisa = new Car (...);
Programación Orientada a Objetos (POO) Clases de Objetos
![Page 14: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/14.jpg)
Programación Orientada a Objetos (POO)
● Ventajas de uso: Reusabilidad (mecanismos de abstracción y herencia)
● 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.
![Page 15: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/15.jpg)
Características de POO, I● El modelo objeto (Booch, Object-Oriented Analysis and Design with Applications,1994):
Abstracción
Las características esenciales del objeto
Documento: insertar, borrar, ... Encapsulamiento (ocultamiento de información)
Una clase contiene:
+ una interfaz pública
+ una implementación
Documento: posicionPrevia
![Page 16: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/16.jpg)
Características de POO, II
Modularidad● Subdivisión de una aplicación en otras más pequeñas
(módulos). Un módulo es un conjunto de clases
Editor, Fuente, Documento, …
![Page 17: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/17.jpg)
Características de POO, III Jerarquía
● Ordenamiento de las abstracciones● Tipos:
Herencia (“es-un”); generalización/especialización● Herencia simple o múltiple
Mensaje es-un Documento Agregación (“parte-de”)
Mensaje: Destinatarios,Asunto,Contenido
![Page 18: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/18.jpg)
Características de POO, IV Polimorfismo
● Una misma operación (método) realizada de diferente modo
Documento: Añadir texto, imagen, … Mensaje: Añadir destinatario, …
Otras propiedades● concurrencia (multitarea)● Persistencia (guardar)● uso de excepciones (errores)
![Page 19: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/19.jpg)
Importancia de las palabras● Nombres:
Objetos Propiedades de objetos
● Adjetivos: Valores de las propiedades
Verbos: Comportamiento de los objetos
“El coche tiene color rojo y se mueve”
“El documento tiene letra grande y se muestra”
![Page 20: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/20.jpg)
Lenguajes de POO● Cronología resumida:
Fortran (1958) LISP (1959) BASIC (1964) Pascal (1969) Prolog (1971) C++ (1986) Object Pascal (1988) CLOS (1989) Java (1995)
![Page 21: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/21.jpg)
Lenguajes de POO, II● The journal of object-oriented programming (1988)● Primeros lenguajes POO:
Simula-67● Objeto (datos+métodos). Clase. Herencia.
Smalltalk-80● Verdadero primer lenguaje de POO● Concepto de paso de mensajes (activación de métodos)
![Page 22: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/22.jpg)
Otros aspectos de la POO
● Beneficios: Mejor mantenimiento Estructuras más reales de la información Escalabilidad Adaptabilidad
![Page 23: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/23.jpg)
Otros aspectos de la POO, II
● Inconvenientes: Necesidades de estandarización (OMG, Object
Management Group)
Coste de conversión de software legado (legacy)
![Page 24: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/24.jpg)
Conceptos de POO, I
● Conceptos principales: Clase Objeto (una instancia de una clase) Jerarquía de herencia entre clases
![Page 25: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/25.jpg)
Conceptos de POO, II
● Objetos: objeto=datos+métodos miembros de un objeto (o clase):
● datos● métodos
identificador del objeto ● nombre de variable
![Page 26: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/26.jpg)
Conceptos de POO, III● Ejemplo:
Clase: Robot Datos: x (entero), y (entero) Métodos:
● void avanzar (entero, entero)
● entero posicionX ()● entero posicionY ()
Métodos: ● void avanzar (entero)● Constructores:
Robot (entero, entero) Robot (entero)
Instanciación: ● objeto “robot1” (Robot)● robot1 = Robot(1,2)
![Page 27: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/27.jpg)
Creación y destrucción de objetos
● Equivalencia de conceptos con programación clásica: Tipo = Clase Dato = Objeto Variable: existe en ambos tipos de programación
● Creación (uso de constructor): Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)● Destrucción
Automática (Java, Garbage collection)
~
~
![Page 28: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/28.jpg)
Encapsulamiento
● 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
![Page 29: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/29.jpg)
Encapsulamiento, II● Ejemplo
clase Robot● Datos:
privado x (entero) privado y (entero)
● Constructores: ● público Robot (entero, entero)● público Robot (entero)
![Page 30: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/30.jpg)
Encapsulamiento, III
clase Robot (continuación)● Métodos:
público void avanzar (entero, entero) público entero getX () público entero getY () público void avanzar (entero)
![Page 31: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/31.jpg)
Representaciónclase: Robotclase: Robot
DatosDatos
MétodosMétodos
xx
yy
void avanzar (entero, entero)
void avanzar (entero)
entero getX ()
entero getY ()
Robot (entero, entero)
Robot (entero)
![Page 32: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/32.jpg)
Ejecución de métodos● Un método es un algoritmo que se puede ejecutar a partir de un
objeto. Se dice que un método se ejecuta cuando el objeto recibe un
mensaje de ejecución del método. Puede acceder a todos los miembros de la clase y a sus
argumentos, que son otros objetos.● Ejemplo:
Objeto robot1 (Robot) robot1=Robot(3,2) robot1.avanzar(1,2)
![Page 33: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/33.jpg)
Herencia● Representa el concepto de “ser un tipo especial de”
o “ser un/a”● Se establece mediante la definición de subclases,
que dan lugar a una jerarquía de clases● Ejemplo:
RobotConFrontera como subclase de Robot
hereda sus miembros (x, y)
y métodos (avanzar, getX, getY)
![Page 34: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/34.jpg)
Herencia, II
● Ejemplo: Clase: RobotConFrontera Clase padre: Robot Datos:
● privado limX (entero)● privado limY (entero)
![Page 35: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/35.jpg)
Herencia, III Clase: RobotConFrontera Métodos:
● void avanzar (entero, entero)● void avanzar (entero)● Constructores:
RobotConFrontera (entero, entero,
entero, entero) RobotConFrontera (entero, entero, entero)
![Page 36: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/36.jpg)
Herencia, II
● La definición en RobotConFrontera de: ● void avanzar (entero, entero)● void avanzar (entero)
es un “overriding” (especialización, redefinición, etc) de los métodos ya definidos en la clase Robot
![Page 37: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/37.jpg)
Herencia, III
● Herencia simple:● Figura, Círculo, Rectángulo, Cuadrado, Triángulo
● Herencia múltiple:● Persona, Profesor, Investigador, ProfesorUniversitario● Problemas de ambigüedad
![Page 38: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/38.jpg)
Herencia, IV
● Clase 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)
![Page 39: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/39.jpg)
Herencia, V
● 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á sobrecargado en
la clase Robot
![Page 40: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/40.jpg)
Herencia, IV● “Overloading” y “Overriding” son casos de polimorfismo:
El mismo método definido de modos distintos● 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)
![Page 41: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/41.jpg)
Framework● Conjunto de clases que se coordinan para realizar
una función● Para construir una aplicación hay que
subclasificarlas● El “main” usualmente incluido en el Framework● Diagramas de clases
Necesidad de un estándar de representación gráfica
![Page 42: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/42.jpg)
UML● Unified Modeling Language
● Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)
![Page 43: 1poo](https://reader035.fdocuments.net/reader035/viewer/2022062514/55b4d2ebbb61eb001f8b45bd/html5/thumbnails/43.jpg)
UML● Unified Modeling Language
● Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)