Introducción a OOP. Programación Orientada a Objeto

Documentos relacionados
HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

PROGRAMACION ORIENTADA A OBJETOS EN C++

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Introducción a la Orientación a Objetos

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

La Herencia: Teoría (1)

Capítulo 16. Diagrama de Clases UML

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Diseño arquitectónico 1ª edición (2002)

Universidad Salesiana de Bolivia

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Curso de Java POO: Programación orientada a objetos

Conceptos de Programación Orientada a Objetos

CLA. Diagramas de clases en Métrica V3

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Diseño Basado en Componentes. Curso 2008 / 09

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Resultado de Aprendizaje:

Derechos de Acceso: COMPOSICION

Programación Orientada a Objetos

Guía práctica de estudio 04: Clases y objetos

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Programación Orientada a Objetos (POO)

Principios de Computadoras II

Aplicaciones de Escritorio

Tema: Clases y Objetos en C#. Parte II.

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

2.2 Nombres, Ligado y Ámbito

Evaluación Diagnóstico puesta en común. Escuela Técnica ORT - TIC

Cristian Blanco

UML: INTRODUCCIÓN, ORIENTACIÓN a Objetos

Diagramas De Casos De Uso

Tecnología de Programación

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

JAVA 7 Los fundamentos del lenguaje Java

Elementos Diagramas de Clases Clase:

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Modulo 11. Clases y Objetos en Java

1

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

Programación con Visual C#

Python: Programación Orientada. JESSE PADILLA AGUDELO Ingeniero Electrónico

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Estructuras de Datos y Algoritmos. Primeros ejemplos de TDA

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Guía del Curso Analista Programador Java: Business Apps Expert

Threads, SMP y Microkernels. Proceso

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Herencia. Hay clases que comparten gran parte de sus características.

4.1 - OBJETOS Y CLASES

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

UML Unifield Modeling Languaje

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

PROGRAMACIÓN ORIENTADA A OBJETOS

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

Transformaciones entre el modelo Relacional y el modelo de Clases.

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Procesadores de lenguaje Tema 6 La tabla de símbolos

Las plantillas permiten definir funciones genéricas.

Tema 6 Organización y gestión de la memoria

Diagrama de Clase. Tipos de diagramas

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

Curso de Java POO: Programación orientada a objetos

Diagramas de secuencia

Tema 4 Introducción a la Orientación a Objetos. Ingeniería del Software I

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Fundamentos de programación y Bases de Datos

TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (POOI) PRESENTADO POR: GUSTAVO ENRRIQUE SINNING FUENTES. VIRTOR FABIAN RIZO.

20483 Programación en C#

INDICE Capitulo 1. Fundamentos de Java Capitulo 2. Clases y POO

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

Transcripción:

Introducción a OOP Programación Orientada a Objeto

Evolución Programación no Estructurada, Programación procedimental, Programación modular y Programación orientada a objetos.

Programación no Estructurada Un solo bloque principal Variables globales Cuando se repiten las secuencias Procedimientos

Programación Procedimental llamada de procedimiento Variables globales vs Locales y parámetros Necesidad de Modulos

Programación Modular Procedimientos con una funcionalidad común Módulo puede contener sus propios datos Espacio de Nombres Problemas?

Problemas Creación y Destrucción Explícitas Datos y Operaciones Desacoplados Omisiones en la Consistencia de Datos

Programación Orientada a Objetos Los objetos del programa interactúan mandando mensajes Contienen el Qué Datos Contienen el Cómo Métodos

Manejar el Mundo Real proceso de modelado se llama abstracción los datos que son afectados las operaciones que son identificadas

Manejar el Mundo Real proceso de modelado se llama abstracción los datos que son afectados las operaciones que son identificadas

Construcción de un Programa OOP Visión general: Objetos de diferentes clases que piden servicios a otros objetos. Cada servicio ofrecido se realizará el guión marcado por un método utilizando la información enviada en el mensaje. Los objetos son entes con información y funcionalidad. El diseño orientado a objetos consistirá en 1: Delimitar las clases de objetos que existirán en el universo de nuestro programa, y cómo se pueden relacionar los objetos de las diferentes clases entres sí. 2: Implementar los métodos y los atributos necesarios. 3: Construir un programa con las instrucciones que instancian los objetos necesarios para iniciar la ejecución (situación inicial del universo), inicializando estos objetos a los estados necesarios para que el sistema comience a funcionar correctamente.

Cuáles son las ventajas de un lenguaje orientado a objetos? Fomenta la reutilización y extensión del código. Permite crear sistemas más complejos. Relacionar el sistema al mundo real. Facilita la creación de programas visuales. Construcción de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software

Características de Lenguaje OOP Reutilización Responsabilidades y contratos Abstracción, ocultación y encapsulamiento Herencia Polimorfismo Abstracción Diseño orientado a objetos provee la abstracción Polimorfismo Ocultación Principio de ocultación Ámbitos Encapsulamiento Empaquetar información y funcionalidad, (Que y como)

La Clase Los objetos son de una clase y las clases son plantillas que definen un comportamiento común a todos los objetos de la misma. Las clases amplían el concepto de TDA con la inclusión de la herencia Clase como patrón Responsabilidades/contratos Diferencia entre objeto y clase Herencia Clase abstracta

La Clase UML Atributos Métodos De clase y de instancia Clases estáticas Punto # int x # int y + void pinta() rincipio de ocultación:ámbitos Público Privado Protegido (se verá con la herencia)

El Objeto Objeto Qué es? (datos y procesamiento) Concreción de clase Estado concreto y propio (no compartido) Se comparten los atributos de clase (especie de globales) Consciencia de sí mismo: this Consciencia de su clase Ciclo de vida Constructor Vida(sucesión de Estados) Destructor

El Objeto II Mensaje Invocación de método Método - Código que indica cómo debe responder a un mensaje De clase De instancia Abstracto ( qué pasa con la instanciación?)(clase abstracta) Final Atributo Dato que ayuda a mantener el estado de un objeto. De clase De instancia Valores por defecto Constantes

Las Relaciones entre objetos relación "parte-de". relación "tiene-un(a)".

Errores comunes en Diseño OOP Clases que hacen modificaciones directas a otras clases Clases con demasiada responsabilidad Clases sin responsabilidad Clases con responsabilidades que no se usan Nombres engañosos Responsabilidades desconectadas Uso inadecuado de la herencia Funcionalidad repetida

La Herencia Definición: Reutilización y encapsulamiento: programación por responsabilidades, delegación. Una clase A hereda de otra B cuando los objetos de A son una especialización de B (relación es-un) Efectos básicos: Una Subclase hereda los atributos y métodos de su padre Un método puede ser sobreescrito en una subclase cambiando sólo ese comportamiento Un método heredado puede ser llamado en una instancia de subclase y ejecutará el comportamiento heredado

La Herencia Dibujo establece las caracteristicas básicas y comportamiento común Circulo añade caracteristicas y comportamiento asociado a estas carácteristicas Los atributos de Dibujo són accesibles desde Circulo Los atributos de Circulo y Dibujo no son accesibles desde otras clases que no estén por debajo de su herencia

La Herencia multiple Dibujable y Punto establecen las caracteristicas básicas y comportamiento común Circulo añade caracteristicas y comportamiento asociado a estas carácteristicas Los atributos de Dibujo y punto són accesibles desde Circulo Circulo puede utilizar métodos de cualquiera de sus ancestros: Circulo micirculo = new Circulo(); micirculo.pinta(); micirculo.dibuja(); micirculo.area();

La Herencia multiple vs Interfaces Si no se tiene cuidado pueden establecerse ambiguedades con metodos y atributos heredados de más de un ancestro Necesidad de esecficar el ambito del espacio de nombre (nombrar que clase especificamente contiene el método). Otros lenguajes que no disponen de H. Multiple implementan el uso de Interfaces: Similar a una clase completamente abstracta, sólo determina la obligación de establecer un conjunto de prototipos. Provee generalización de clases por comportamiento Permiten a su vez heredar de otros interfaces

Polimorfismo Varias formas = distintos comportamientos dependiendo de las clases. Principio de abstracción. Amplía el concepto de procedimiento y suaviza la asignación de tipos fuerte. Significa al menos: 1) Sobrecarga de operadores 2) Sobrecarga de funciones 3) Tipos genéricos o parametrización de tipos 4) Ampliación de las reglas de compatibilidad de tipos y de la asignación en lenguajes de tipos 5) Polimorfismo de mensajes

Polimorfismo Contexto: En todos los casos existe un contexto que determina el valor semántico exacto de cada identificador. Estático: (en tiempo de compilación y enlazado) Compilación/enlazado: Contexto = tipo definido en la declaración de objetos Contexto = tipo de los identificadores Contexto = tipo de operandos Contexto = número y tipo de los argumentos comprobación de asignaciones comprobación de operaciones (funciones, operadores, métodos) implementados en las fuentes disponibles Dinámico: (en tiempo de ejecución) Contexto = clase a la que pertenece el objeto, se resuelve en el momento de la utilización (de método o de variable). Sólo es posible conocer la clase concreta en tiempo de ejecución.

Polimorfismo: Ejemplos Varias funciones con el mismo nombre en una clase y distinto número de parámetros/tipos. Llamadas a métodos en una superclase no conocida en tiempo de compilación con diferentes implementaciones en las subclases que puede contener Sobrecarga de operadores en la que los operandos pueden ser diferentes clases.