A3F. Objetos (uso) Carlos Fontela

Documentos relacionados
A3F. Objetos (uso) Carlos Fontela

Reutilización con Delegación y Herencia

POO en lenguajes compilados de tipos estáticos (Java y C#)

Reutilización con Delegación y Herencia

Clases (construcción)

RTTI y reflexión A3F. Carlos

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Introducción a la Orientación a Objetos

Programación Orientada a Objetos. Integrantes: Santiago Hernández Bolívar Edwin Alexander Bohórquez

Programación orientada a objetos

CAPÍTULO 2: CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. ABSTRACCIÓN. ENCAPSULAMIENTO. PRINCIPIO DE OCULTACIÓN. HERENCIA. POLIMORFISMO.

Reutilización con delegación, herencia y polimorfismo

Tema 3: Introducción a la programación orientada a objetos.

Clases (construcción)

Lenguajes de Programación I

Programación Orientada a Objetos

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

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

A3F. Polimorfismo. Carlos Fontela

Introducción código transversal

Híper introducción a Objetos

Tipo de Datos Abstractos y Programación Orientada a Objetos

A3F. Polimorfismo. Carlos Fontela

PROGRAMA INSTRUCCIONAL

Presentación del Curso Presencial. Programación en Java Nivel Básico

acceso Implementación de conceptos P.O.O. en Java Orientada a Objetos 2. Modificadores de en Java Temario

Introducción. Introducción y conceptos de POO. En qué consiste la POO? Vocabulario. Definiciones

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Introducción y conceptos de POO

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

Evolución de la Programación Orientada a Objetos

Tema 1.- Conceptos básicos de la OO

Programación Orientada a Objetos Profr. Pedro Pablo Mayorga

Lenguajes de Programación

Abstracción. Encapsulamiento. Polimorfismo. Objeto. método / objeto / clase / módulo. Separación de las propiedades de un

Programación Orientada a Objetos. Conceptos Básicos

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Programación Orientada por Objetos. Prof. Yudith Cardinale Universidad Simón Bolívar Dpto de Computación y Tecnología de la Información

RTTI y reflexión Modelos de datos

Lenguajes y paradigmas de programación

2. Tratamiento de objetos con JAVA

Lenguajes y Paradigmas de Programación. Programación Orientada a Objetos y Scheme

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

PROGRAMACIÓN EN JAVA

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Tema 1 Introducción al paradigma de programación orientado a objetos

UD 1 INTRODUCCIÓN AL PARADIGMA ORIENTADO A OBJETOS

Paradigmas de Programación

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

Algoritmos y Estructuras de Datos: Introducción a los TAD y los Algoritmos. Guillermo Román Díez

Tema: Programación Orientada a Objetos

Universidad Salesiana de Bolivia

Programación Orientada a Objetos GUÍA DOCENTE Curso

PROGRAMACIÓN ORIETADA A OBJETOS

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos 1

Programación Orientada a Objetos

INFORMÁTICA INDUSTRIAL

Bloque II. Elementos del lenguaje de programación Java

Sesión 2: Introducción a Java

Curso Programación Orientada a Objectos con C# y Visual Studio 2013

Programación Orientada a Objetos con Java

Programación con Java Básico

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Programación Orientada a Objetos (POO)

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Curso Programación Java JSE 7

Introducción a la Programación en C

Unidad 2. Elementos Intermedios del Lenguaje

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

Programación orientada a objetos I

Más sobre los objetos (creación de clases propias) Nadjet Bouayad-Agha Programación

Índice PRÓLOGO... XVII CAPÍTULO 1. FUNDAMENTOS DE JAVA Características de Java Origen y evolución... 1

Programación Orientada a Objetos y Patrón MVC en PHP5. Pablo Ramirez A.

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Construcciones del Lenguaje Java

Desarrollador de Aplicaciones Web con Java

PROGRAMACIÓN ORIENTADA A OBJETOS

Programación Orientada a Objetos GUÍA DOCENTE Curso

Tema 1 Introducción al paradigma de programación orientado a objetos

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Introducción al Lenguaje "C++"

Conceptos Básicos. Programación Orientada a Objetos 2

PROGRAMACION ORIENTADA A OBJETOS EN C++

Curso Programación Java JSE 8 desde Cero Descripción Programación Java JSE 8 desde cero Curso Programación Java JSE 8

PROGRAMACIÓN ORIENTADA A ASPECTOS HANS A. HERNANDEZ S. C.I. V

UNIVERSIDAD AUTONOMA DE QUERETARO Facultad de Informática

Conceptos de Programación Orientada a Objetos

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

Programación Orientada a Objetos

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Encapsulamiento, polimorfismo, abstracción y herencia

Fundamentos de Computadores y Lenguajes

Oracle Certified Associate, Java SE 8 Programmer

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

RELACIÒN ENTRE LA PROGRAMACIÒN ORIENTADA A OBJETOS Y LA ESTRUCTURADA

Tema 1. Lección 2. Conceptos Básicos de los Lenguajes Dirigidos a Objetos. Departamento de Lenguajes y Sistemas informáticos Universidad de Granada

Diplomado Programación Java 8 desde POO (JSE, Servlets & JSP) con Oracle 11g, JPA con Hibernate, Eclipse & Tomcat

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Transcripción:

Objetos (uso) Carlos Fontela cfontela@fi.uba.ar

Temario Objetos y mensajes Objetos y clases Estado, comportamiento, identidad Paquetes Historia hacia la POO POO vs. procedural 2c2009 2

Operando sobre objetos (1) String saludo = new String ("Hola"); String saludo1 = saludo.concat (", qué tal"); System.out.println (saludo1); // Hola, qué tal String saludo2 = saludo.replace ('a', 'u'); System.out.println (saludo2); // Holu, qué tul int pos = saludo.lastindexof('h'); System.out.println (pos); // 0 int longitud = saludo1.length(); System.out.println (longitud); // 13 2c2009 3

Operando sobre objetos (2) ArrayList lista = new ArrayList ( ); if (lista.size() == 0) lista.add(-4); lista.add(1,-7); Object valor = lista.get (0); System.out.println (valor); // -4 System.out.println (lista.size()); // 2 lista.clear(); 2c2009 4

Operando sobre objetos (3) Date fecha1 = new Date (1983, 12, 10); Date fecha2 = new Date (2009, 8, 1); Date fecha3 = new Date (2002, 6, 10); String nombre = new String ("Carlos Fontela"); ArrayList lista = new ArrayList ( ); lista.add (fecha1); lista.add (fecha2); lista.add (fecha3); Collections.sort(lista); lista.add (nombre); for (int i = 0; i < lista.size(); i++) System.out.println(lista.get(i).toString()); 2c2009 5

Objetos y responsabilidades Los objetos tienen responsabilidades Actuar ante la llegada de un mensaje => comportamiento Guardar datos internos => estado Objetos = entidades con comportamiento En principio, guardamos sólo el estado que nos permite realizar el comportamiento Aunque en algunos casos hay objetos que nos interesan sólo por su estado En POO, deberían ser muy pocos 2c2009 6

Objetos y mensajes Comportamiento => todo programa trabaja con objetos que reciben mensajes y actúan Dándonos información sobre su estado int longitud = saludo1.length(); Alterando su estado: lista.add (fecha1); Enviando mensajes a otros objetos: System.out.println ( lista.get(i).tostring( ) ); Los mensajes están implementados como métodos 2c2009 7

Objetos y clases Los objetos son de determinados tipos Idea de concepto e individuo Los tipos se llaman clases Pueden ser definidos por el programador Próximo capítulo 2c2009 8

Clases y objetos Clase Define estructura y comportamiento de los objetos Los datos internos de un objeto Los mensajes que un objeto entiende Molde de objetos Objeto Una instancia de la clase Tiene existencia en tiempo de ejecución 2c2009 9

Creación de objetos Declaración: ArrayList x; Definición: x = new ArrayList( ); Significado ArrayList es la clase de x ArrayList( ) es el constructor de la clase ArrayList El objeto se crea recién cuando llamo al constructor con el operador new En x queda una referencia a un objeto de tipo ArrayList 2c2009 10

Referencias Las variables son referencias a objetos: Date x, y; x = new Date (2009, 7, 25); y = x; x e y referencian al mismo objeto (hay una sola llamada a constructor) Si hago: y = new Date (1950, 8, 17); Ahora y referencia a otro objeto Una variable que no referencia un objeto tiene el valor null Puedo hacer: Date x = null; 2c2009 11

Recolección de basura Si hago: Date x; x = new Date (2009, 7, 25); x = new Date (1950, 8, 17); El objeto inicial quedó como basura Java, C# y Smalltalk tienen recolección automática de basura 2c2009 12

Excepciones (1) Cuando un objeto no puede responder a un mensaje, reacciona enviándonos una excepción Una excepción es Un objeto lanzado desde un método Que puede ser capturado Por ejemplo, si hago: ArrayList lista = new ArrayList (-5); Voy a obtener un mensaje: Exception in thread "main" java.lang.illegalargumentexception 2c2009 13

Excepciones (2) Pero también puedo capturar la excepción: try { ArrayList lista = new ArrayList (-5); } catch (IllegalArgumentException e) { System.out.println("error"); } En este caso no se interrumpe el programa Es un tema a desarrollar luego 2c2009 14

Excepciones (3) Recordemos que las excepciones son objetos Se acceden mediante variables que los referencian Tienen estado, comportamiento e identidad Por ejemplo: try { ArrayList lista = new ArrayList (-5); } catch (IllegalArgumentException e) { e.printstacktrace(); } 2c2009 15

Programa OO Conjunto de objetos enviando mensajes a otros objetos Los objetos receptores reciben los mensajes y reaccionan Haciendo algo (comportamiento) Devolviendo un valor (que depende de su estado) Los mensajes pueden implicar la creación de nuevos objetos El comportamiento puede delegarse a su vez en otro objeto Los objetos entienden los mensajes para los cuales están preparados => Modelo esencialmente concurrente 2c2009 16

Concepto de Objeto Definiciones Una instancia de una clase Cualquier cosa, real o abstracta, de la cual almacenamos datos y la forma de manipular esos datos Características Estado (visible e interno) Comportamiento Identidad 2c2009 17

Características (1) Estado visible Se accede mediante propiedades (C#) O métodos de consulta y asignación ( getters y setters ) Propios de la clase a la que pertenece Comportamiento Se obtiene mediante métodos Propios de la clase a la que pertenece 2c2009 18

Características (2) Estado interno Almacenado en atributos, no accesible de afuera Definidos en la clase del objeto Identidad Única para cada objeto La mantiene el sistema (referencia), no accesible directamente en Java, C# y Smalltalk 2c2009 19

Importancia del comportamiento Diferencia más importante con programación estructurada No estamos solamente usando variables y tipos simples Tampoco datos estructurados Son objetos que saben cómo comportarse Corolarios: Los objetos deben manejar su propio comportamiento No deberíamos manipular su estado desde afuera En vez de: punto.setx ( punto.getx ( ) + 1 ); Deberíamos hacer: punto.avanzarenx(1); 2c2009 20

Paquetes Agrupación de clases, anidables Para manejar complejidad y resolver nombres Ejemplos: ArrayList es java.util.arraylist (Java) ArrayList es System.Collections.ArrayList (C#) import java.util.*; import java.util.arraylist; // Java // Java using System.Collections; // C# En Java no es necesario importar las clases de java.lang 2c2009 21

Implementaciones de mensajes en C# C# distingue métodos de propiedades Métodos: para comportamiento de los objetos lista.add(-4); saludo2 = s.replace ( a, u ); Propiedades: para consultar el estado Console.WriteLine (lista.count); int longitud = saludo.length; 2c2009 22

Mensajes enviados a la clase Qué hicimos cuando escribimos? Collections.sort(lista); No hay ningún objeto para el que estemos llamando el método ( lista es un argumento) sort es un método de clase de la clase Collections En C# hay propiedades de clase: DateTime ahora = DateTime.Now; Now es una propiedad de clase de la clase DateTime En Smalltalk el new es un método de clase: fecha = Date new. 2c2009 23

Smalltalk Notación diferente Todo son objetos y mensajes Tipos dinámicos Lo veremos en un capítulo aparte 2c2009 24

POO Influencias previas Programación estructurada Programación modular Abstracción Tipos definidos por el programador Ocultamiento de implementación Más otras cuestiones Énfasis en encapsulamiento Herencia Polimorfismo, con o sin herencia 2c2009 25

OO: objetivo principal Manejo de la complejidad Abstracción: construir en base a componentes Lo hacen todas las industrias Economía División del trabajo Ya probado y optimizado Se adquiere y se ensambla Hay que definir interfaces: contrato No fue cierto hasta fines de los 90 2c2009 26

Mini-Historia de paradigmas (1) Paradigma lineal o espagueti Código dirigido por orden de ejecución, con saltos y sin modularidad Todas las cuestiones mezcladas Lenguajes: Fortran IV, Cobol Paradigma estructurado o procedural Centrado en lo que hace el software Separación de funcionalidades en módulos Sin separación de entidades, tipos o clases Lenguajes: Fortran 77, C, Pascal, Ada? 2c2009 27

Mini-Historia de paradigmas (2) Paradigma orientado a objetos Centrado en las entidades del dominio Las entidades son clases Y sus instancias, objetos Lenguajes: Smalltalk, Eiffel, Ada95, C++, ObjectPascal, Java, C#, Python, Ruby Paradigma(?) de aspectos Modulariza cuestiones no funcionales Lenguajes: AspectJ, Spring, JBoss, Otros paradigmas Relacional, funcional, lógico, 2c2009 28

POO vs Programación Procedural Ambas modularizan, separan en partes Procedural modulariza por funciones (lo que hace el sistema = dominio de la solución) verbos? POO modulariza por entidades (sobre qué trabaja el sistema = dominio del problema) sustantivos? En POO también hay funciones Son los métodos dentro de las clases Pero especifican más bien comportamiento de entidades 2c2009 29

POO: cómo lograrla Entidades se convierten en clases = tipos con comportamiento Próximo capítulo 2c2009 30

Claves Se trabaja con objetos y mensajes Las clases son tipos y los objetos sus instancias Las clases son conjuntos de objetos Los paquetes agrupan clases Java / C# / Smalltalk: Constructores crean objetos (son referencias) A los objetos sin uso los elimina el sistema POO modulariza en base a las entidades del dominio del problema 2c2009 31

Lecturas opcionales Object-oriented analysis and design : with applications, Grady Booch Capítulo 4: Classification Análisis y diseño orientado a objetos, James Martin y James Odell Capítulo 15: Conceptos y objetos Capítulo 17: Concepto vs. Tipo de objeto Ambos libros están en biblioteca El de Booch tiene una versión en castellano, agotada Son libros antiguos Más de 15 años No existía Java ni C#, sí Smalltalk Orientación a objetos, diseño y programación, Carlos Fontela 2008, capítulo 3 Programación basada en objetos 2c2009 32

Qué sigue Clases (construcción) Delegación y herencia Polimorfismo 2c2009 33