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



Documentos relacionados
Programación Orientada a Objetos con Java

Curso de Java POO: Programación orientada a objetos

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

Java Inicial (20 horas)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Programación Orientada a Objetos en Java

Programación orientada a objetos

Universidad de Cantabria

Introducción a la Programación Orientada a Objetos

Programación en Java. Programación en OO

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

Tema: Clases y Objetos en C++.

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Programación Orientada a Objetos en JAVA

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

2.2.- Paradigmas de la POO

Benemérita Universidad Autónoma del Estado de Puebla

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

Java: Clases Abstractas e Interfaces

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

Programación Orientada a Objetos en Java

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

15. Parámetros o argumentos

19. Packages o paquetes

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

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

Carmen. Estándares de codificación. Manuel Arias Calleja

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

Java en 2 horas. Rodrigo Santamaría

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

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

Tutorial básico del entorno de desarrollo Eclipse.

2.1. Introducción al lenguaje Java

Repaso de las características más importantes de la programación Java y su adaptación a Android

2. Estructura de un programa en Java

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Benemérita Universidad Autónoma del Estado de Puebla

9. Objetos y clases Clases

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

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

Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle

Tema 1. Introducción a JAVA

El Concepto De Objeto y Clase

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Tema 2. El lenguaje de programación Java (Parte 1)

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

Tema: Arreglos de Objetos en C++.

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

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

Introducción a Java LSUB. 15 de enero de 2015 GSYC

El lenguaje de programación Java

POO en Java IV: Herencia (Parte 1)

11. Algunas clases estándar de Java (II)

Tecnologías de Programación Web Dr. Diego C. Martínez. Depto de Cs e Ing. de la Computación Universidad Nacional del Sur.

Introducción a la programación orientada a objetos

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

Primer Parcial Septiembre 5 de 2009

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Herencia e Interfaces

Técnicas Avanzadas de Testing Automatizado

Pruebas de unidad con JUnit

Ejercicios del tema 7: Clases y objetos

Introducción a la Programación Orientada a Objetos

Modulo 1 El lenguaje Java

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.

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

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

Multitarea en Java. Rafa Caballero - UCM

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

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

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

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

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

Soluciones Ejercicios Tema 3

Arquitectura y Lenguaje Java

James Gosling, creador de Java

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

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

Clases y funciones amigas: friend

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

Estructura de datos tipo vector.

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Resumen Lenguaje Java

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Tema 2. El lenguaje de programación Java. Arrays y cadenas

Computación III. Objetivo de aprendizaje del tema

La clase estándar Scanner

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

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Tema: Herencia Simple y Múltiple en C++.

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

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Agentes con Interfaz Gráfica.

Programación Orientada a Objetos: Arreglos en Java

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.

1 HILOS (THREADS) EN JAVA

Transcripción:

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

Encapsulamiento: Control de Acceso

Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes Por ejemplo, las clases del paquete java.lang son importadas automáticamente a cada archivo de java Para importar clases de un paquete en java se usa la palabra reservada import import java.util.*; Se coloca antes de la declaración de la clase import java.util.*; class Grupo { }..

Clases en Java (2) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO Para definir un paquete se usa la palabra reservada package package curso.poo; Se coloca antes de la declaración de la clase y antes de cualquier import package curso.poo; import java.util.*; class Grupo { }..

Clases en Java (3) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En el sistema de archivos están dentro de un archivo JAR u organizados en una jerarquía de directorios C:/curso/poo/> C:\ ------curso --------poo ------Grupo.class ------Conjunto.class El archivo rt.jar contiene las clases principales de java

Encapsulamiento UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO Metodología para ocultar ciertos elementos de la implementación de una clase proporcionando una interfaz pública al cliente (usuario) del software (clase) Generar cápsulas seguras Importante para otros programadores Usan clases nuevas desarrolladas por otros Proteger datos dentro de la clase (no sean modificados inapropiadamente)

Encapsulamiento (2) Hay una sola interfaz pública segura para acceder al contenido privado del siguiente objeto Encapsulamiento

Encapsulamiento (3) Los atributos de la clase son elementos significativos de la implementación de la clase Para asegurarse que la clase está correctamente encapsulada: Aplicar los modificadores de visibilidad a Clases Variables atributo Métodos declarados Todas las clases, métodos y variables poseen un modificador de acceso

Modificadores de Acceso En Java existen cuatro tipos de acceso y sólo tres modificadores: public private protected (default)

Modificadores de Acceso: atributos y métodos public protected default private Visibilidad Clase Visibilidad Paquete Visibilidad subclases Visibilidad todos

Modificador public UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO public permite a cualquier objeto acceder a: las clases atributos y métodos

Modificador public (2) Acceso público a cualquier piso, inclusive áreas donde no deben ingresar visitantes

Modificador public (3) Sólo puede existir una clase publica por cada archivo de código fuente El nombre del archivo debe coincidir con el nombre de la clase pública

Modificador public (3) Colocar enfrente de la variable atributo o método el modificador public public int pisoactual = 1; public void setpiso(int pisodeseado) {. }

Problemas potenciales - public Clase sin encapsular /** * Archivo: ElevadorPublico.java */ public class ElevadorPublico { // definición de atributos public boolean ptasabiertas = false; public int pisoactual =1; public int peso=0; } // definición de constantes public static final int CAPACIDAD = 500; public static final int PISO_MAX= 5; public static final int PISO_MIN= 1;

// Clase TestElevadorPublico. public class TestElevadorPublico { public static void main (String[] args) { ElevadorPublico ep = new ElevadorPublico( ); ep.ptasabiertas=true; ep.ptasabiertas=false; System.out.println("piso actual:"+ ep.pisoactual); // bajar al piso 0 ep.pisoactual--; System.out.println("piso actual:"+ ep.pisoactual); ep.pisoactual++; System.out.println("piso actual:"+ ep.pisoactual); // pasar al piso 7 (sólo hay 5 pisos) ep.pisoactual=7; System.out.println("piso actual:"+ ep.pisoactual); ep.ptasabiertas=true; // los pasajeros suben/bajan ep.ptasabiertas=false; // los pasajeros suben/bajan ep.pisoactual=1; // pasa al piso 1 ep.ptasabiertas=true; // los pasajeros suben/bajan System.out.println("puertas abiertas->"+ ep.ptasabiertas); ep.pisoactual++; System.out.println("piso actual:"+ ep.pisoactual); } // fin main } // fin de la clase

Modificador private UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO private no permite que otros objetos accedan a atributos y métodos de alguna clase dada Elevador Privado

Modificador private UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO Se coloca el modificador private delante de la variable o método private int pisoactual = 1; private void getcapacidad() {. }

Clase ElevadorPrivado /** * Archivo: ElevadorPrivado.java */ public class ElevadorPrivado { // definición de atributos private boolean ptasabiertas = false; private int pisoactual =1; private int peso=0; } // definición de constantes private static final int CAPACIDAD = 500; private static final int PISO_MAX= 5; private static final int PISO_MIN= 1;

// Clase TestElevadorPrivado. public class TestElevadorPrivado { public static void main (String[] args) { ElevadorPrivado ep = new ElevadorPrivado( ); ep.ptasabiertas=true; ep.ptasabiertas=false; System.out.println("piso actual:"+ ep.pisoactual); // bajar al piso 0 ep.pisoactual--; System.out.println("piso actual:"+ ep.pisoactual); ep.pisoactual++; System.out.println("piso actual:"+ ep.pisoactual); // pasar al piso 7 (sólo hay 5 pisos) ep.pisoactual=7; System.out.println("piso actual:"+ ep.pisoactual); ep.ptasabiertas=true; // los pasajeros suben/bajan ep.ptasabiertas=false; // los pasajeros suben/bajan ep.pisoactual=1; // pasa al piso 1 ep.ptasabiertas=true; // los pasajeros suben/bajan System.out.println("puertas abiertas->"+ ep.ptasabiertas); ep.pisoactual++; System.out.println("piso actual:"+ ep.pisoactual); } // fin main } // fin de la clase

Sugerencias para el encapsulamiento En un programa ideal la mayoría de los atributos deben ser privados Los atributos deben ser modificados o consultados por medio de métodos que publica la clase Los métodos deben proporcionar la lógica de negocio asegurar la asignación válida de datos a los atributos

Sugerencias para el encapsulamiento (2) Los métodos públicos y las variables atributos se conocen como interfaz de la clase La interfaz proporciona los elementos que otras clases pueden usar La implementación del método es el detalle de cómo una clase completa una operación dentro de un método Un objetivo de la POO crear métodos públicos y atributos de modo que la implementación puede cambiar sin afectar la interfaz

Interfaz & Implementación Interfaz igual Implementación diferente

Ejemplo de Encapsulación

Ejemplo ElevadorPrivado2 (1) /** * Archivo: ElevadorPrivado2.java */ public class ElevadorPrivado2 { // definición de atributos private boolean ptasabiertas = false; private int pisoactual =1; private int peso=0; // definición de constantes private static final int CAPACIDAD = 500; private static final int PISO_MAX= 5; private static final int PISO_MIN= 1;

Ejemplo ElevadorPrivado2 (2) public void abrirpuertas( ) { System.out.println("Abriendo puertas."); ptasabiertas = true; System.out.println("Puertas abiertas."); } public void cerrarpuertas( ) { System.out.println("Cerrando puertas."); ptasabiertas = false; System.out.println("Puertas cerradas."); } public void subir( ) { System.out.println("Subiendo un piso."); pisoactual++; System.out.println("Piso: " + pisoactual ); }

Ejemplo ElevadorPrivado2 (3) public void bajar( ) { System.out.println("Bajando un piso."); pisoactual--; System.out.println("Piso: " + pisoactual ); } public void setpiso(int pisodeseado) { if ( pisodeseado >= PISO_MIN && pisodeseado<=piso_max) while (pisoactual!= pisodeseado) { if (pisoactual < pisodeseado) subir(); else bajar(); } }

Ejemplo ElevadorPrivado2 (4) public int getpiso( ) { return pisoactual; } public boolean getestatusptas( ) { return ptasabiertas; } } // FIN DE LA CLASE

Clase TestElevadorPrivado2 UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO public class TestElevadorPrivado2{ public static void main(string args[]) { ElevadorPrivado2 ep= new ElevadorPrivado2( ); ep.subir(); ep.abrirpuertas(); ep.cerrarpuertas(); ep.subir(); ep.subir(); ep.subir(); ep.abrirpuertas(); ep.cerrarpuertas(); ep.bajar(); ep.bajar(); ep.bajar(); int pisoact= ep.getpiso(); System.out.println("checando piso Actual: " + pisoact); ep.setpiso(5); ep.abrirpuertas(); } } // FIN CLASE

Aplicabilidad: Modificadores de Acceso private (default) protected public Clase Método Atributo NO SI NO SI SI SI SI SI SI SI SI SI

Modificadores de Acceso: atributos y métodos public protected default private Visibilidad Clase Visibilidad Paquete Visibilidad subclases Visibilidad todos

Ejercicio

Ejercicio OO (1) Crear una clase Rectangulo que represente un rectángulo usando atributos privados ancho y alto. Crear los siguientes métodos públicos getalto retorne el alto getancho retorne el ancho setalto verifique que el parámetro no sean mayor a 30 ni menor a 0 setancho verifique que el parámetro no sean mayor a 50 ni menor a 0 getarea UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO retorne el área de la figura getperimetro retorne el perímetro de la figura dibujar dibuje el rectángulo usando asteriscos (*)

Ejercicio OO (2) Crear otra clase TestRectangulo que contenga el método main y que demuestre el uso de la clase Rectangulo 1. Invocar los métodos con datos válidos 2. Invocar los métodos con datos inválidos