Primer Exámen Parcial. Programación Orientada a Objetos. Tercer Semestre. 312. I. Teoría de Objetos. (1.5 P) 1. Definir: Clase, Objeto, Atributo, Método, Delegación, Herencia, Polimorfismo, Tipo Abstracto de Datos, Ambiente orientado a objetos (1 P) 2. Mencionar 4 lenguajes de programación orientados a objetos (0.5 P) II. Clases y objetos. (2.5 P) 1. Definir el concepto de : Constructor, Cliente, Proveedor, Referencia, Estado de un objeto. (0.5 P) 2. Mencionar el error de ejecución del siguiente segmento de codigo (1 P) String s; System.out.println(s.length) III Lenguaje Java. (3 P) 1. Describir como se declara una clase que tenga varios constructores, propiedades (dar un ejemplo de un tipo escalar, tipo clase y arreglo) y un método tipo procedimiento y tipo función. (1 P) 2. Indicar para que sirven las siguientes palabras reservadas: new,return,void,static (0.5 P) 3. Hacer una clase con un método main. En dicho método se debe crear un arreglo de 2 dimensiones, de tamaño 2 por 2. Recorrer el arreglo y llenar los elementos diagonales con 1. (1 P) 4. Mencionar los pasos para que a partir de un código fuente de una clase con una rutina main, se pueda compilar y ejecutar. (0.5 P) IV Estilo de Programación Orientada A Objetos. (10 P) 1. Codificar dos clases. La primera clase debe tener las siguientes características: (5 P) a) Debe declararse public la clase y de nombre CdRom. b) Debe tener los siguientes atributos: nombre representado como cadena de caracteres, numero de pistas de tipo entero, un arreglo. Todos los atributos se califican public de cadenas de caracteres que deben contener el nombre de cada pista, su propósito es conter el nombre de cada cancion del CdRom. c) Codificar un constructor por omisión que no reciba paràmetros. En este constructor se debe poner el valor de la propiedad nombre igual a "". d) Codificar un constructor que reciba dos paràmetros. El primero es una referencia a un objeto de clase String y el segundo es un valor entero. El primero se asigna a la propiedad nombre. El segundo se asigna a la propiedad numero de pistas. Dado el numero de pistas, crear un arreglo de una dimensión y de tamaño igual al numero de pistas. e) Codificar un método que se denomine agregar. Recibe como parámetro una referencia a un objeto de clase String. Se debe introducir dicha referencia a la ultima celda disponible del arreglo. Validar en caso de que no existan mas celdas disponibles. No retornar ningun resultado. (OJO. Se necesita declarar otra propiedad que lleve la cuenta de las celdas usadas ??) f) Codificar un método que se denomine tocar, que recibe como parámetro una referencia a un objeto tipo String. Dado este parámetro, aplicar una busqueda lineal sobre el arreglo de pistas. Si encuentra la pista deseada, retornar un valor true, de lo contrario un valor false. g) Codificar un método que se denomine copiar. No recibe parámetros. Pero debe retornar una referncia a un objeto de tipo CdRom. En este método se debe instanciar un nuevo objeto de tipo CdRom y copiar a este nuevo objeto, las propiedades del objeto actual. h) Declar un método imprimir que no retorne ningun valor y no reciba parametros y manda a pantalla el contenido de todas las propiedades, el arreglo que contiene el nombre de cada pista también se debe imprimir. La segunda clase se debe llamar CdRomMain, debe tener un método principal (main) y dentro de esta rutina: a) Declarar una referencia a un objeto de clase CdRom. b) Construir un objeto de tipo CdRom, con parámetros de construcción "Joshua Tree" y numero de pistas 3. Asignar el resultado a la referencia de clase CdRom. c) Con el objeto creado, usar el método agregar y poner 3 nombres de canciones. "All I Want is You", "Desire","Where The Streets Hava No Name" d) Invocar el método tocar, que reciba como parámetro "With or With Out You". Si retorna true, imprimir en pantalla "tocando" e) Invocar al método copiar y el resultado a una referencia de clase CdRom. 2. Se tiene la siguiente definición de clase: (3 P) public PilaString() - Constructor de la clase public void push(String s) - Introduce una referencia de clase String al tope de la pila public String top() - Retorna el valor del tope la pila, como una referencia de tipo String, public void pop() - Elimina el elemento que está en el tope de la pila public void print() - Imprime la pila Construir una clase denominada PruebaPila, debe tener un método main. Se debe declarar una referencia de tipo PilaString y crear la instancia de un objeto PilaString. Aplicar un ciclo for que meta 10 veces al objeto PilaString la palabra "suerte", usando el método push. Después invocar el método top e imprimir en pantalla el resultado; seguido del método top. Al final invocar el método print, para leer el contenido de toda la pila. 3. Documentar el siguiente codigo, usando terminologia de objetos (por ejemplo, el método main recibe como parámetro una referencia a un arreglo de String, no retorna valor, es publico y estático) (2 P) public class FibonnaciMain { public static void main(String [] args) java.net.Socket s = new java.net.Socket("www.starwars.com",80); java.io.InputStream in=s.getInputStream(); int i; while ( i <= in.in.available() ) { System.out.print(in.read()); i++; } s.close(); } }