INTERACCION ENTRE OBJETOS

Documentos relacionados
PROGRAMACION ORIENTADA A OBJETOS EN C++

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

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

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

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Elementos de un programa en C

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

4. Operadores Operador asignación

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

2.2 Nombres, Ligado y Ámbito

La sintaxis básica para definir una clase es la que a continuación se muestra:

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

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

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Java para programadores

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

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

Modulo 11. Clases y Objetos en Java

Las plantillas permiten definir funciones genéricas.

5. Sentencias selectivas o condicionales

FUNDAMENTOS DE INFORMÁTICA

Introducción a C++ y Code::Blocks

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Principios de Computadoras II

ESCUELA DE INFORMÁTICA

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

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

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Principios de Computadoras II

Tema 3: Programación orientada a objetos (I)

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

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

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

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Programación Orientada a Objetos (POO)

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Tema 2. El lenguaje JAVA

Programación. Test Autoevaluación Tema 3

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Definición de Memoria

Estructuras en LabVIEW.

Ficha de Aprendizaje N 13

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Tema 7: Polimorfismo. Índice

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Diagramas de secuencia

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

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

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Tema 13: Apuntadores en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

El lenguaje C. 1. Identificadores, constantes y variables

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

Clase adicional 2. Estructuras básicas de control. Temas

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

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

Definición y Conversión de datos. Agustín J. González ELO-329

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

Computación II. Introducción a Visual Basic

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

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Las clases como tipos de datos definidos por el usuario

Elementos léxicos del lenguaje de programación Java

Curso Introducción JAVA Pág.: 1

1

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

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

Unidad Nº V Listas Enlazadas

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Forma Básica Clase Java

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

20483 Programación en C#

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Programación en Visual Basic Ricardo Rodríguez García

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

Aplicaciones de Escritorio

Guía - Taller # 2 (JAVA)

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

EJEMPLO DE CÓDIGO JAVA BÁSICO. CREAR CLASES CON CAMPOS, CONSTRUCTOR Y MÉTODOS. LA PALABRA CLAVE THIS (CU00652B)

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

Transcripción:

INTERACCION ENTRE OBJETOS Corina Flores Villarroel UMSS -

Contenido Este capítulo se discutirán conceptos relacionados con: Abstracción y encapsulamiento, Modularización, composición Creación de objetos, Diagramas de objetos, Llamadas a métodos, Depuradores

Contenido 1. El ejemplo de las fechas 2. Abstracción y modularización 3. Diagramas de clases 4. Diagramas de objetos 5. Tipos primitivos 6. Tipos objeto Objetos que crean objetos 7. Constructores múltiples 8. Métodos públicos vs. privados

Introducción Hasta el momento ya sabemos! qué son los objetos, cómo se implementan, así también conocemos qué es un campo (datos de un obj.), constructores y métodos. En este capítulo nos ocuparemos de construir aplicaciones interesantes, en el que será preciso la participación de objetos entre sí, de manera que combinados puedan cooperar para ejecutar tareas comunes.

Características asociadas Las caracteristicas asociadas a POO se traducen en: Abstracción Encapsulación Ocultamiento Modularización

Características asociadas Abstracción: Consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, veamos un celular Qué características podemos abstraer de los celulares? O lo que es lo mismo Qué características semejantes tienen todos los celulares?

Características asociadas Y en cuanto a su comportamiento Por ejemplo, veamos un celular Qué tareas pueden realizar los celulares? O lo que es lo mismo Qué tareas semejantes saben hacer todos los celulares?

Características asociadas En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones. Por ejemplo, en Java tenemos: public class Celular { // atributos // métodos

Características asociadas Encapsulación: Consiste en unir en la Clase las características y comportamientos, esto es, los atributos y métodos. Celular Es tener todo esto es una sola entidad. Marca Modelo Pantalla Llamar() Enviar_mensaje() Colgar() Encapsulación en tiempo de desarrollo

Características asociadas Encapsulación: La utilidad del encapsulamiento va por la facilidad de manejar la complejidad, ya que tendremos a las Clases como cajas negras, donde sólo se conoce el comportamiento (interfaz publica) pero no los detalles internos. Encapsulación en tiempo de ejecución.

Características asociadas Encapsulación: Es un mecanismo de control. Los datos de un objeto, sólo pueden modificarse por medio de los metodos de ese objeto. Entonces, 1. La modificación de un atributo o campo debe realizarse por medio de un método. 2. La consulta del valor de un atributo o campo debe tambien realizarse por medio de un método especialmente destinado a esto

Características asociadas Por ej.: Si desariamos modificar de marca el celular, tendriamos un método como public void setmarca(string m){ Marca = m; Y si quisieramos consultar la marca del celular, tendriamos que tener un metodo como public String getmarca(){ return Marca;

Características asociadas Ocultamiento: Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto de las clases. El ocultamiento permite 2 cosas: 1. Restringir y controlar el uso de una clase (algunos comportamiento privados). 2. Validar algunas condiciones antes de modificar el estado de un objeto. En Java el ocultamiento se logra usando las palabras reservadas: private y protected delante de las atributos y métodos.

El ejemplo de la fecha Se desea mostrar una fecha en la pantalla teniendo en cuenta el siguiente formato: DD/MM/AAAA Dia Mes Año

Abstracción La fecha, con el formato especificado puede ser implementado con una sola clase? SI! Sin embargo, analizaremos antes el problema para ver su complejidad.

Abstracción La complejidad es parte inherente de los programas, tratarlos es IMPORTANTE! El hombre está seriamente limitado para tratar la complejidad. Puede tener en mente 7 asuntos ó elementos simultáneamente. Sin embargo, cualquier tipo de problema, excepto los más simples, manejan más de 7 elementos. Qué hacer? Solución!! agrupar elementos relacionados y manejar éstos en grupos como una sola unidad.

Modularización Proceso de dividir un todo en partes bien definidas que pueden ensamblarse y examinarse separadamente, y que interaccionan en formas bien definidas Modularización Cada parte se denomina módulo. El mecanismo principal de modularización en la Programación Orientada a Objetos es la clase

Modularización Cuándo es útil aplicar modularización? 1. Cuando existe un grupo de instrucciones o una tarea específica que deba ejecutarse en más de una vez. 2. Cuando un problema es complejo o extenso, la solución se divide o segmenta en módulos que ejecutan partes o tareas específicas. Dicha solución se organiza de forma similar a como lo hacen las empresas cuando se estructuran con base en las funciones para realizar sus actividades Existe un módulo directivo o de control, que se encarga de distribuir el trabajo a los demás módulos

Composición Permite que la clase todo controle la existencia de las parte. Es decir la clase todo creara al principio las clases parte. Composición Cada parte colabora entre si. Y todas completan el trabajo.

Modularizando: Problema de la fecha Veamos cómo esta formada 18 Marzo 2011 Se observa que esta compuesto por tres partes El dia El mes El año

Modularizando: Problema de la fecha El dia, se desplaza entre 1 a 31,o 1 a 30 o 1 a 28-29 dependiendo del mes que se trate. El mes, en cambio de 1 a 12 El año, se representa con cuatro digitos por ejemplo: 1999 El problema se puede resolver con una clase que represente un contador con límite. Para cada contador se puede crear una instancia de la clase

Modularizando: Problema de la fecha Comencemos dibujando el modelo de la clase que nos permitirá abstraer la representación. Dia public class Dia { private int limitedia; private int valor; // constructores y métodos

Modularizando: Problema de la fecha Podemos completar la fecha, teniendo en cuenta a éste como un objeto que tiene internamente tres números (dia, mes,año). Entonces, cada uno puede ser un campo de la fecha de esta manera. Mes Dia public class Mes { private Dia dia; private Dia mes; private String mensaje; private String nombremes; // constructores y métodos

Modularizando: Problema de la fecha public class Mes { private Dia dia; private Dia mes; private String mensaje; // constructores y métodos Tipo de Campos dato 1. Nombre de una clase puede ser usado como tipo 2. Si el tipo de un campo es una clase, entonces el campo puede contener objetos de esa clase. DD MM

Sobrecarga de constructores Cuando dos o más constructores tienen el mismo nombre pero diferentes parámetros. El compilador decide qué constructor invocar dependiendo de los parámetros usados public Mes() { dia = new Dia(); //31 mes = new Dia(); //12 actualizarmensaje(); public Mes(int dia1, int mes1) { dia = new Dia(); mes = new Dia(); setfecha(dia1, mes1);

Diagrama de clases Diagrama de clase: muestra las clases y sus relaciones - vista estática de la aplicación: en edición.

Diagrama de objetos Diagrama de objetos: muestra los objetos y sus relaciones - vista dinámica de la aplicación: en ejecución. Mes1: Mes dia : Dia 12 Cuando su tipo de una variable o campo es de tipo objeto, el valor no se almacena en el espacio de la variable o campo - se almacena una referencia al objeto que tiene su propio espacio public Mes(Dia d) { dia = d; limitemes = 12; valormes = 0; actualizarmensaje();

Paso de parámetros a métodos Dos tipos: 1. Paso por valor: Cuando, se realiza una copia de los valores que se pasan en los parámetros, con los cuales se trabaja dentro del método. Es por ello que cualquier cambio que sufran dentro, no repercute fuera del método. 2. Paso por referencia: No realiza copia, solo se pasa una referencia al objeto, por lo que las modificaciones de dentro de los métodos afectan a los parámetros y esos cambios permanecen al final de los métodos.

Paso de parámetros a métodos. Paso por valor: public void setvalormes(int reemplazavalor) {.. Tipo Primitivo float double boolean Java se realiza una copia del valor para el método y cualquier cambio a dicho valor no afecta a la variable original Paso por referencia: public Mes(Dia d) { Tipo Objeto Cuando se pasa un objeto como parametro, solo se referencia al objeto, los cambios al objeto referenciado sí son visibles y afectan fuera del método.

Ejercicio Se pide examinar el código de los programas ClockDisplay y NumberDisplay Estos programas pueden encontrar en la página de la materia publicado en la siguiente dirección y bajo el nombre Capítulo 3 del libro. http://www.cs.umss.edu.bo/ Buscar a la docente y luego material de estudio

Tipos primitivos En java, existe una clasificación génerica denominada tipos primitivos de datos que esta dado por lo siguiente: 4 tipos de enteros byte short int long 2 tipos de reales 1 tipo caracter 1 tipo lógico float double char boolean

Tipos primitivos Los tipos primitivos no usan métodos para ser creados Las expresiones de tipos primitivos usan normalmente operadores como: + / - * % Por ej.: valor < 10 Los valores de tipos primitivos son almacenados directamente en la variable dia1: Dia limitedia valor 31 0

Tipos objeto Los tipos objetos son aquellos construidos por el programador, por ejemplo las clases. Ej.: la clase Mes El standar de Java System, define también algunas clases, por ejemplo a String como un tipo objeto. Ej.: String nombre; int n1; nombre = Pedro ; n1=nombre.length(); Devuelve la longitud de la cadena en caracteres

Tipos objeto Las constantes y valores de tipos objeto, se construyen en la clase misma a través de métodos o usando el constructor. public Mes( ) { dia mes = new Dia(31); = new Dia(12); actualizarmensaje(); Las expresiones de tipos objeto usan métodos públicos provistos por la clase private void actualizarmensaje() { mensaje = dia.getdia() + "/" ;

Operadores lógicos Los operadores lógicos permiten aplicar el álgebra de Boole. Operan sobre valores booleanos (true ó false) y producen un nuevo valor booleano como resultado. Los tres más importantes son: Operador Significado && y lógico o lógico! no lógico

Clase Dia Observando el método setvalormes( ) encontramos a public void setvalorm(int reemplazavalor) { if((reemplazavalor >0) && (reemplazavalor <= 12)) { valormes = reemplazavalor; Cuando un valor ingresa éste es verificado si está en el rango indicado (> 0 y < 12) solo cuando ambas condiciones son V se ejecutará el cuerpo de if.

Clase Mes Veamos el método getmes(), Supongamos que value es 5, por la sentencia, retornará la cadena 05 forzando a la conversión de un valor entero a cadena public String getdia() { if(value < 10) { return "0" + valor; else { return "" + valor; El operador + tiene otro significado diferente que depende del tipo de operandos.

Objetos que crean objetos public class Mes { private Dia dia; private Dia mes; public Mes() { dia = new Dia(31); mes = new Dia(12); actualizarmensaje(); // más métodos Al escribir el constructor de Mes se crea y almacena dos objetos del tipo Dia. Cuando el constructor de Mes se ejecuta, automáticamente se crea los objetos

Constructores Múltiples public class Mes { public Mes() { dia = new Dia(31); mes = new Dia(12); actualizarmensaje(); public Mes(int dia1, int mes1) { dia = new Dia(31); mes = new Dia(12); setfecha(dia, mes); // más métodos La clase Mes, tiene dos Constructores, ellos permiten dos formas de inicializar un objeto Mes, uno con dos parámetros y otro sin parámetros. Una clase puede contener más de un constructor con distinto número de parámetros, a esto se conoce como sobrecarga de constructores o métodos.

Llamadas a métodos Llamadas a métodos internos public Mes(int dia1, int mes1) { dia = new Dia(dia1); mes = new Dia(mes1); setfecha(dia1, mes1); Esta es una llamada al método setfecha(). El método se encuentra en la misma clase Mes, a esto se conoce como llamada a métodos internos. La sintaxis es: nombremétodo(lista_parámetros)

Llamadas a métodos Llamadas a métodos externos public void setfecha(int d, int m) { dia.setvalord(d); mes.setvalorm(m); actualizarmensaje(); Podemos observar una llamada al método: setvalord(); Cuando el objeto dia, llama a métodos implementados fuera de la clase desde donde realiza la invocacion, se conoce como llamada a métodos externos. La sintaxis es: nombreobjeto.nombremétodo (lista_parámetros)

Métodos públicos vs. privados En el problema de la fecha encontramos a una mayoría de los métodos declarados como públicos. Excepto el método actualizarmensaje(). Pongamos atención! private void actualizarmensaje() { mensajecompleto = mes.getfecha() + "/" + getvaloranho() ;

Métodos públicos vs. privados private void actualizarmensaje() { mensajecompleto = mes.getfecha() + "/" + getvaloranho() ; Este método es responsable de actualizar la cadena a mostrar en pantalla, es decir, el dia, mes y año separados por / Los valores de la fecha pueden cambiar de acuerdo al gusto del usuario Para completar su trabajo el método actualizarmensaje(), debe además recurrir a otro método como getfecha() método que devuelve el nombre del mes en formato cadena para el objeto mes

Métodos públicos vs. privados Métodos privados son aquellos de soporte que ayudan a completar la tarea encomendada al método que los contiene. Sirven solamente para uso dentro del método.