260 likes | 493 Views
Unidad 2 REUTILIZACIÓN DE CLASES Programación Orientada a Objetos. M.S.C. Ivette Hernández Dávila. Reutilización de clases. Composición Utilizar objetos como miembros de otros objetos Herencia Especialización o extensión de una clase para crear otra nueva.
E N D
Unidad 2REUTILIZACIÓN DE CLASESProgramación Orientada a Objetos M.S.C. Ivette Hernández Dávila
Reutilización de clases • Composición • Utilizar objetos como miembros de otros objetos • Herencia • Especialización o extensión de una clase para crear otra nueva
Reutilización de código. Composición • La forma más directa de usar una clase de objetos es creando objetos concretos. • Relación Tiene-un: También se puede decidir que un elemento concreto compone a otro tipo de objetos más general. • Por ejemplo: la clase de objetos Coche posee cuatro objetos de la clase Rueda.
Así, un objeto puede contener a muchos otros, y así sucesivamente. Cuando un objeto recibe un mensaje, dentro del método asociado a éste puede: • Responder directamente. • Reenviar el mensaje a otros objetos externos. • Reenviar el mensaje a objetos que él mismo contiene.
Sea por ejemplo la clase LamparaDeMesa, la cual tiene un bombillo, un Suiche y un porta lámpara, su codificación quedaría de la siguiente manera: publicclassLamparaDeMesa { private Bombillo bombilloLampara; privateSuicheinterruptorLampara; ..... } • Indica que la clase LamparaDeMesa tiene un objeto bombilloLampara del tipo Bombillo y un objeto interruptorLampara de tipo Suiche. Obviamente puede contener más objetos.
Composición • Consiste en meter objetos dentro de otros objetos. Es como crear un registro. • Ejemplo: • SprinklerSystem.java • Para poder visualizar un objeto de la clase WaterSource con System.out.println(), es necesario que posea un método que lo convierta en String. Este método se llama toString(), y debe retornar un String.
Ejemplos: • clase Punto y clase Círculo • Punto.java • Circulo.java
Reutilización de código. Herencia • Relación es-un: En O.O. Se permite coger una clase, crear un copia idéntica de la misma (clon), modificar la estructura de la copia, y crear así una nueva clase. • Esto es lo que se denomina herencia, aunque Java hace que si la clase original (llamada clase base o padre), se modifica posteriormente, la clase copia (también llamada clase heredera, derivada o hija), también reflejará esos cambios.
Para diferenciar la clase hija de la padre se puede: • Incluir nuevas funciones a la clase hija. • Modificar el funcionamiento de las funciones ya existentes en la clase padre. Es lo que se llama reescritura. • La reescritura viene a decir algo así como: «Estoy empleando la misma interfaz que mi padre, pero me quiero comportar de forma distinta».
FLUJOS • Flujo de Entrada/Salida proporciona un camino a través del cual un programa puede enviar una secuencia de bytes. • Un flujo de entrada es una fuente de bytes. • Un flujo de salida es un destino de bytes.
DataInputStream • Es un clase que proporciona flujos de entrada, que permite convertir los datos a tipos primitivos. • Usa los siguientes métodos:
Métodos del DataInputStream: • readBoolean(); lee un boleano • readByte(); lee un byte de 8 bits • readUnsignedByte(); lee un byte de 8 bits sin signo • readShort(); lee un short de 16 bits • readChar(); lee un char de 16 bits • readInt(); lee un entero de 32 bits • readLong(); lee un long de 64 bits • readFloat(); lee un float de 32 bits • readDouble(); lee un double de 64 bits • readLine(); lee una línea de texto
DataOutputStream • Es un flujo de salida que permite convertir los datos de tipo primitivo a un flujo de bytes de salida. • Sus métodos son:
Métodos de DataOutputStream • writeBoolean(Boolean); Escribe un booleano • writeByte(Byte); Escribe un byte de 8 bits • writeShort(int); Escribe un short de 16 bits • writeChar(char); Escribe un char de 16 bits • writeInt(int); Escribe un int de 32 bits • writeLong(long); Escribe un long de 64 bits • writeFloat(float); Escribe un float de 32 bits • writeDouble(double); Escribe un double de 64 bits • writeBytes(String); Escribe una cadena como una secuencia de bytes • writeChars(String); Escribe una cadena como una secuencia de caracteres de 16 bits
PrintStream • Proporciona un filtro de salida que permite desplegar, números, valores, cadenas etc. • En modo texto. • Funciona parecido el println de la consola.
Cerrando Flujos • Para cerrar un flujo , usamos el método: close().
Abriendo Flujos • Para abrir un flujo, primero creamos un Objeto como flujo de entrada o salida y después abrimos el tipo de flujo. • Esto dentro de un try • Con catch que tenga una IOException
Flujos especificos • Para abrir archivos usamos dos clases: • – File • – FileInputStream • – FileOutputStream
File • Esta clase proporciona una abstracción independiente para obtener información de un archivo, como: • – Su ruta • – Carácter de separación • – Tamaño • – Fecha
FileInputStream • Proporciona una flujo de entrada para acceder los datos del archivo.
FileOutputStream • Es una clase que permite acceder al archivo para escribir datos.
Ejemplos • Archivo texto • Archivo binario • Archivo de escritura