Introducción a la Programación Orientada a Objetos



Documentos relacionados
Programación Orientada a Objetos en Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

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

Programación Orientada a Objetos en JAVA

Introducción a la programación orientada a objetos

Programación Orientada a Objetos con Java

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Práctica sobre compartición de instancias remotas.

Tema: Clases y Objetos en C++.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Programación Avanzada SOLUCIÓN EXAMEN FEBRERO 2011

Ejercicios del tema 7: Clases y objetos

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

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

Clases y Objetos. Informática II Ingeniería Electrónica

Patrones para persistencia (I) Ingeniería del Software II

Primer Parcial Septiembre 5 de 2009

Pruebas de unidad con JUnit

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Programación Orientada a Objetos en Java

Java en 2 horas. Rodrigo Santamaría

Ejercicio 1 (3 puntos).-

UTILIDAD EMBARGOS SIU-MAPUCHE

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Fundamentos de la Programación Orientada a Objetos Definición de Clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

15. Parámetros o argumentos

Computación III. Objetivo de aprendizaje del tema

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases

SIIGO WINDOWS. Parámetros Modulo de Seriales. Cartilla

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

Proyecto Help Desk en plataforma SOA Modelo de Dominio Versión 1.3. Historia de revisiones

TEMA 3. CLASES. EJERCICIOS

Técnicas Avanzadas de Testing Automatizado

2.1. Introducción al lenguaje Java

Universidad de Cantabria

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

1. Qué tipos de relación hay entre las siguientes clases?

Trabajo Práctico N 4: Diseño por Contratos

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

Primer Parcial de Programación 3 (1/10/2009)

Constructores y Destructores

El lenguaje de programación Java

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

Benemérita Universidad Autónoma del Estado de Puebla

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Programación orientada a objetos

2.2.- Paradigmas de la POO

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Manual Consultas Web - PC Sistel Ver 486R4+ - USUARIO JEFATURA

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Programación Orientada Objetos. Problemas, soluciones y Programas

Java: Clases Abstractas e Interfaces

Configuración de Software

Concurrencia. Primitivas IPC con bloqueo

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

JAVA PARA PRINCIPIANTES

Introducción a la Programación Orientada a Objetos PRACTICO N 6

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

Curso de Java POO: Programación orientada a objetos

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Práctica 2: Java Remote Method Invocation (RMI)

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

JavaScript como Orientación a Objetos

Clases y funciones amigas: friend

Examen de Prácticas de Programación Ingeniería Informática

Caso práctico Alquiler de películas en un vídeo-club

Estructura de datos tipo vector.

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Java Inicial (20 horas)

Tema: Arreglos de Objetos en C++.

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Introducción al lenguaje Java

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

Manual de rol gestor de GAV para moodle 2.5

28.- Manejo de los Feriados

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Integración de Laboratorios Remotos en emersion

8. Sentencia return y métodos

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Introducción a las Redes de Computadoras. Obligatorio

El desarrollo de un sistema de software comienza con la elaboración de un modelo del problema a resolver. A medida que se avanza en el proceso de

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Programación Orientada a Objetos en C#.NET CAPÍTULO 5 H E R E N C I A. Ing. Bruno López Takeyas, M.C.

Modelo de Objetos Distribuidos

Unidad 1. Fundamentos en Gestión de Riesgos

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Transcripción:

IPOO 2 cuatrimestre 2015 Introducción a la Programación Orientada a Objetos Sonia Rueda Representación en memoria de clases asociadas Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 2015

Representación en memoria de clases asociadas En la programación orientada objetos, cada objeto de software creado en ejecución modela a un objeto del problema identificado en la etapa de diseño. El estado interno de un objeto puede contener referencias a otros objetos, de modo que la asociación entre clases se modela en ejecución a través de referencias entre objetos. Así, la modificación de los atributos de instancia de una clase, modifica la representación de los objetos de software de esa clase, no de las clases asociadas.

Una empresa de telefonía celular ofrece distintos planes a sus abonados. Un plan tiene un código, un costo mensual y establece un tope para el número de mensajes de texto y un tope de créditos que los abonados consumen con sus llamadas a número dentro de la comunidad y a otros móviles fuera de la comunidad. Una línea tiene un número asociado, un plan y una cantidad de consumos a líneas dentro de la comunidad y a líneas móviles fuera de la comunidad.

La cantidad de créditos de un plan se consume de modo diferente según la llamada se realice dentro de la comunidad o fuera de ella. Un minuto (o fracción) de llamada dentro de la comunidad consume 1 crédito, un minuto a una línea móvil fuera de la comunidad consume 2 créditos. Dos líneas se consideran equivalentes sin tienen números equivalentes y los mismos valores en los demás atributos, en particular si están ligadas a un mismo plan.

Linea <<Atributos de instancia>> nro: String plan : Plan consumossms, consumosacomunidad, consumosamoviles : entero <<Constructor>> Linea(nro:String) Plan <<Atributos de instancia>> codigo:entero sms,credito:entero costo:entero <<Constructor>> Plan(c:entero)

Linea <<Comandos>> establecerplan(p:plan) aumentarsms(c:entero) aumentaracom(c:entero) aumentaramov(c:entero) Plan <<Comandos>> establecersms(n:entero) establecercredito(n:entero) establecercosto(n:entero)

Linea <<Consultas>> obtenernro():string obtenerplan():plan obtenerconsumossms():entero obtenerconsumosacomunidad(): entero obtenerconsumosamoviles(): entero consumocredito():entero smsdisponibles():entero creditodisponible():entero equals(l:linea):boolean tostring():string Plan <<Consultas>> obtenersms():entero obtenercredito():entero obtenercosto():entero tostring():string equals(p:plan):boolean

Linea <<Responsablidades>> Requiere que se establezca el plan antes de aumentar los consumos o ejecutar las consultas. Requiere que se controle que no se consume más allá del crédito disponible. Toda la entrada y salida se implementa fuera de la clase.

Cada objeto de clase Linea tiene un atributo de instancia de clase Plan. El atributo de instancia plan no es visible desde el exterior de la clase Linea. En ejecución este atributo mantiene una referencia a un objeto de clase Plan. En la realidad a modelar, probablemente varias líneas correspondan a un mismo plan, en ejecución varias instancias de Linea referenciarán a un mismo objeto de clase Plan.

class Linea { /*Requiere que se establezca el plan antes de aumentar los consumos o ejecutar las consultas. Requiere que se controle que no se consume más allá del crédito disponible.*/ //Atributos de Instancia private String nro; private Plan plan ; private int consumossms; private int consumosacomunidad; private int consumosamoviles; //Constructor public Linea (String n){ nro = n; }

//Comandos public void establecerplan (Plan p){ //Requiere p ligada plan = p; } public void aumentarsms (int n){ consumossms=+ n; } public void aumentaracomunidad (int n){ consumosacomunidad=+ n; } public void aumentaramoviles (int n){ consumosamoviles=+ n; }

//Consultas public String obtenernro (){ return nro;} public Plan obtenerplan(){ return plan;} public int obtenerconsumossms (){ return consumossms ;} public int obtenerconsumosacomunidad (){ return consumosacomunidad ;} public int obtenerconsumosamoviles (){ return consumosamoviles ;}

public int consumocredito() { return consumosacomunidad + consumosamoviles*2; } public int smsdisponibles(){ //Requiere el plan ligado return plan.obtenersms()- consumossms; } public int creditodisponible(){ //Requiere el plan ligado return plan.obtenercredito() - consumocredito() ; } La clase Linea es cliente de la clase Plan, usa los servicios provistos por Plan.

public String tostring(){ //Requiere el plan ligado return nro+ +consumosms+ + consumoacomunidad+ + consumoamoviles+ + plan.tostring();} public boolean equals(linea l){ boolean e=false; if (l!= null) e = nro.equals(l.obtenernro()) && consumosms == l.obtenerconsumosms()&& consumoacomunidad == l.obtenerconsumoacomunidad() && consumoamoviles == l.obtenerconsumoamoviles() && plan == l.obtenerplan(); return e;}

El método equals compara en profundidad el atributo de instancia nro y en forma superficial el atributo de instancia plan. Esto es, para que dos líneas sean equivalentes los atributos nro tienen que ser equivalentes y los atributos plan tienen que tener la misma identidad. Observemos que en este caso no se asume que el parámetro está ligado. Si la variable l no está ligada la equals retorna false.

class ventas{ public static void main(string [] a){ Plan p1 = new Plan(123); p1.establecersms(100); p1.establecercredito(200); p1.establecercosto(150); Plan p2 = new Plan(124); p2.establecersms(200); p2.establecercredito(300); p2.establecercosto(200);

class ventas{ public static void main(string [] a){ String lin11 = 2916324567 ; String lin12 = 2916324568 ; String lin21 = 2912585234 ; Linea l11 = new Linea(lin11); l11.establecerplan(p1); Linea l12 = new Linea(lin12); l12.establecerplan(p1); Linea l21 = new Linea(lin21); l21.establecerplan(p1);

Una asignación al atributo de instancia plan, cambia el valor de la variable, la referencia a un objeto, pero no el estado interno del objeto mismo de clase Plan. En particular el método establecerplan(plan p) en la clase Linea modifica el atributos de instancia plan, esto es el valor de la variable. La clase Linea asume que cuando un objeto reciba el mensaje creditodisponible() su atributo de instancia plan estará ligado.

class ventas{ public static void main(string [] a){ System.out.println(l11.toString()); p1 = p2; System.out.println(l11.toString()); l11.establecerplan(p2); System.out.println(l11.toString()); p2.establecercosto(220); System.out.println(l11.toString());

Cada línea telefónica está representada en ejecución por un objeto de software que en sus estado interno mantiene los valores de los atributos que la caracterizan. Cada plan también está representado por un único objeto de software, independientemente de cuántas líneas corresponden a ese plan. Cada objeto de software de clase Linea mantiene una referencia a un objeto de software de clase Plan. Todos los objetos de software que modelen líneas con un mismo plan, mantendrán referencias a un mismo objeto de clase Plan.