Introduccción a la POO (OOP)

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

Unidad 3 Lenguajes .Net y POO
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Introducción a la Orientación a Objetos
DSOO - María Eugenia Valencia
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
La Programación Orientado a Objetos
Fundamentos de Ingeniería de Software
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA
Encapsulamiento y Abstracción
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
HERENCIA.
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Unified Modeling Language (Lenguaje de Modelamiento unificado)
PROGRAMACIÓN ORIENTADA A OBJETOS
Programación Orientada a Objetos Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 08/11/2010.
Fundamentos de Programación
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
Introducción a la programación Orientada a objetos
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Ingeniería de Software

Programación Orientada a Aspectos (POA)
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
Fundamentos de programación
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Programación Orientada a Objetos
Metodologías Orientadas a Objetos Maestría de Ingeniería Telemática Universidad del Azuay Sesión 2.
Programación orientada a objetos. La programación orientada a objetos es un conjunto de normas, que se basan en la idea de construir un software de forma.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Facultad de Ingeniería
Programación Orientada a Objeto
Introducción a UML Departamento de Informática Universidad de Rancagua
Programación Orientada a Objetos
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
Programación orientada a objetos
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Conceptos. -Programación orientada a eventos. -Instancias de clase. -Atributo de los objetos. -Método main, get y set. -Ejemplo de la declaración de.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Programación Orientada a Objetos. Es importante aclarar desde un principio la diferencia que existe entre programación orientada a objetos y un lenguaje.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
PROGRAMACIÓN IV INTRODUCCIÓN.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS TECNOLOGÍAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO. GONZALO ROSAS CABRERA.
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Paradigma Orientado a Objetos
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
1 Introducción a la Programación Orientada a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
:: Prof. Yeniffer Peña Introducción a JAVA Presentación Programación I.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

Introduccción a la POO (OOP)

1) Web Servicies 2) SOA – Arquitectura Orientada a Servicios 3) PHP 4) JSP 5) Javascript 6) Eclipse (plugins C++, C, PHP,..) 7) Qt / C++ y QtJambi 8) NETBEANS

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%

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, ...

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.

Programación Orientada a Objetos (POO) 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) 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) 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) 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) ¿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) 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) Clases de Objetos 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) 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.

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

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, …

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

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)

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”

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)

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)

Otros aspectos de la POO Beneficios: Mejor mantenimiento Estructuras más reales de la información Escalabilidad Adaptabilidad

Otros aspectos de la POO, II Inconvenientes: Necesidades de estandarización (OMG, Object Management Group) Coste de conversión de software legado (legacy)

Conceptos de POO, I Conceptos principales: Clase Objeto (una instancia de una clase) Jerarquía de herencia entre clases

Conceptos de POO, II Objetos: objeto=datos+métodos miembros de un objeto (o clase): datos métodos identificador del objeto nombre de variable

Conceptos de POO, III Ejemplo: Clase: Robot Métodos: 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)

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

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

Encapsulamiento, II Ejemplo clase Robot Datos: privado x (entero) privado y (entero) Constructores: público Robot (entero, entero) público Robot (entero)

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)

void avanzar (entero, entero) Representación clase: Robot Datos x y Métodos Robot (entero, entero) Robot (entero) void avanzar (entero, entero) void avanzar (entero) entero getY () entero getX ()

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)

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)

Herencia, II Ejemplo: Clase: RobotConFrontera Clase padre: Robot Datos: privado limX (entero) privado limY (entero)

Herencia, III Clase: RobotConFrontera Métodos: void avanzar (entero, entero) void avanzar (entero) Constructores: RobotConFrontera (entero, entero, entero, entero) RobotConFrontera (entero, entero, entero)

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

Herencia, III Herencia simple: Herencia múltiple: Figura, Círculo, Rectángulo, Cuadrado, Triángulo Herencia múltiple: Persona, Profesor, Investigador, ProfesorUniversitario Problemas de ambigüedad

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 f=Cuadrado(3)

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

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)

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

UML Unified Modeling Language Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)

UML Unified Modeling Language Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)