b) Qué tipo de variable son las de la línea 6? Cuál es su visibilidad? Explique su



Documentos relacionados
Unidad 2. Elementos Intermedios del Lenguaje

TEMA 5. Agenda. Herencia

Lenguaje Ruby y su entorno

Herencia. Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra.

Definición. Mónica E. García García Feb 07

Cómo se estructura un programa en C#? Qué son las clases y los objetos? Cómo se estructuran los dibujos de AutoCAD?

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Herencia. Implementación en Java

MANUAL DE RUBY (PARTE V) Luis José Sánchez González

MANUAL DE RUBY (PARTE IV) Luis José Sánchez González

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

CLASE 9 -HERENCIA Y POLIMORFISMO

PROGRAMACION ORIENTADA A OBJETOS EN C++

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

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Guía práctica de estudio 07: Herencia

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia

Conceptos Básicos. Programación Orientada a Objetos 2

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Programación orientada a objetos I

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

FACULTAD DE INGENIERÍA

Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen

Programación Orientada a Objetos

Programación orientada a objetos

Lenguaje Ruby y su entorno

Paradigma Orientado a Objetos Caso de estudio: Squeak Smalltalk. Lenguajes de Programación 2018

PROGRAMACIÓN EN JAVA

Curso de Java POO: Programación orientada a objetos

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

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

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

Examen Teórico Convocatoria de Junio de 2012

PROGRAMACIÓN EN JAVA

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Especialista TIC en Programación con Microsoft Visual C Sharp

Ficha Técnica. Categoría. Contenido del Pack. Sinopsis. Programación. - 1 Manual Teórico - 1 Cuaderno de Ejercicios

Patrón Façade Patrón Template Method Conclusiones

Ruby On Rails para Programadores Java

Diseño Basado en Componentes. Curso 2008 / 09

Examen Teórico. Convocatoria de Febrero de 2015

Universidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III

Examen Teórico. Convocatoria de Febrero de 2018

TUTORIAL DE RUBY. Lenguajes de programación Universidad Nacional De Colombia II. Laura P. Cerón M. Camilo A. Dajer P.

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Implementando TADs en Python

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...

Tema 10: Interfaces. Índice

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

Introducción a OOP. Programación Orientada a Objeto

Clases y herencia. FJP Unidad 8. Diseño de clases

Programación Orientada a Objetos en Python

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

AspectJ. Juan Rodriguez Duran Johann Triana Olaya Jonatan Parra Toro

Prof. Dr. Paul Bustamante

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Guía del Curso Especialista TIC en Programación con Microsoft Visual C Sharp 2010

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Lenguajes de Programación I

Examen Teórico. Convocatoria de Julio de 2015

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Examen Teórico. Convocatoria de Febrero de 2016

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B)

Forma Básica Clase Java

UNIVERSIDAD AUTONOMA DE QUERETARO Facultad de Informática

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Programación con Java Básico

Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información CI3661 Taller de Lenguajes de Programación I Enero-Marzo 2015

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS

Sebastián García Galán

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

PRÓLOGO... XIII INTRODUCCIÓN... XV PARTE I. CURSO PRÁCTICO DE RUBY... 1 CAPÍTULO 1. INSTALACIÓN DE RUBY ON RAILS...

A3F. Polimorfismo. Carlos Fontela

Prácticas POO Curso 10/11

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada

Guía práctica de estudio 08: Polimorfismo

Tema 3b: Estructura General de un programa en Java

Arquitecturas cliente/servidor

Tema: Herencia en C#.

Lenguajes y Paradigmas de Programación. Programación Orientada a Objetos y Scheme

Tema 6: Programación funcional en Scala. Sesión 17: Introducción a Scala (1)

PRÁCTICA 6 REPASO TEMAS 1 Y 2

b) Basta con definir una variable de tipo Alumno (a) y otra de tipo CursoExtraescolar (curso) antes de hacer la llamada al método mediante el

Curso de Java POO: Programación orientada a objetos

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Herencia. Hay clases que comparten gran parte de sus características.

2. Indica cuál de las siguientes afirmaciones es cierta:

Bloque II. Elementos del lenguaje de programación Java

Fundamentos de Programación

2. Tratamiento de objetos con JAVA

Introducción a Java. Introducción a Java. Programación I

Derechos de Acceso: COMPOSICION

Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Transcripción:

Universidad de La Laguna. Escuela Técnica Superior de Ingeniería Informática Tercero del Grado de Informática LENGUAJES Y PARADIGMAS DE PROGRAMACION. SEGUNDA PARTE 5 páginas Nombre: Alu: 1. Cuál es la visibilidad del método initialize? 2. El valor retornado por initialize es usado para la construcción del objeto. Verdadero o falso? 3. Considere el siguiente código Ruby: 1 class AClass 2 @x = 4 3 @y = 9 4 5 def i n i t i a l i z e ( x, y ) 6 @x, @y = x, y 7 8 a) Qué tipo de variable son las de las líneas 2 y 3? Cuál es su visibilidad? Explique su respuesta. b) Qué tipo de variable son las de la línea 6? Cuál es su visibilidad? Explique su respuesta. 4. Señale el error de concepto en la codificación de la siguente clase Ruby: class MyClass def i n i t i a l i z e ( b ) @b = b def t o s puts @b 5. Considere el siguiente código Ruby: 1 class AClass 2 a t t r a c c e s s o r : n 3... 4 def i n i t i a l i z e ( n ) 5 @n = n 6 7... 8 def square 9 n = n n 10 11... 12 En los accesos a n a la derecha de la igualdad en la línea 9 a) a qué tipo de variable se está accedio?

LPP: Segunda Parte 2 b) y en el acceso a la izquierda de la igualdad? c) attr_accessor es un método de instancia o de clase? d) En qué clase está definido attr_accessor? 6. Qué ventajas e inconvenientes se tienen si en la escritura de un método metodo(x,y) se usa respond_to? para comprobar que los argumentos x e y pueden ser utilziados dentro del cuerpo de metodo? 7. En Ruby el conocimiento de la clase obj.class del objeto obj caracteriza la conducta del objeto? 8. A qué clase pertenece el objeto que crea la llamada Fraction = Struct.new(:num, :denom)? 9. Cómo se puede impedir que se invoque a los métodos num= y denom= de la clase Fraction = Struct.new(:num, :denom)? 10. En qué forma se define en Ruby un método de clase? 11. Es posible definir una constante de la clase MyClass antes de la definición del método initialize? 12. Es posible definir constantes de una clase desde fuera de la misma? 13. A qué clase de variable n permite acceder la declaración de la línea 3? 1 class Tutu 2 class << s e l f 3 a t t r a c c e s s o r : n 4 5 14. Qué tipo de herencia proporciona Ruby? 15. Qué puede ocurrir si en una subclase A se escribe un método con nombre intimo igual al de un método privado intimo de su superclase B? Qué ocurre si el método toto de la superclase llama a intimo con destino un objeto de la clase A? 16. Qué ocurre cuando se llama a super sin argumentos? 17. Cómo se puede llamar a super sin argumentos? 18. Suponga que la clase B hereda de A un método tutu que usa la constante C definida en A. Si en la clase B se define C, Qué definición de C usará tutu, la de A o la de B? 19. Cuál es la visibilidad por defecto de un método?

LPP: Segunda Parte 3 20. Cuál es la visibilidad por defecto de un método que ha sido definido fuera de cualquier clase (por ejemplo en un script)? 21. Los métodos privados no pueden ser llamados desde otra clase que no sea aquella en la que se declararon, cierto o falso? 22. Dentro de una clase y fuera de un método self, a qué objeto hace referencia self? 23. Un método de instancia de la clase Class es un método del objeto de la clase Class 24. El módulo Math permite el acceso de dos formas: [~/rubytesting/therubyprogramminglanguage/chapter7classesandmodules]$ irb ruby-1.9.2-head :001 > Math.sin(Math::PI/2) => 1.0 ruby-1.9.2-head :002 > include Math => Object ruby-1.9.2-head :003 > sin(pi/2) => 1.0 Cómo se crea un módulo que funcione de esta manera? 25. Qué diferencias hay entre los siguientes predicados? a) == b) eql? c) equal? d) === e) =~ 26. Cuál es el resultado? > (1..10) === 5 > /\d+/ === "123" > String === "s" > :s === "s" 27. Cómo se puede permitir que los objetos de la clase Fraction = Struct.new(:num, :denom) sean comparables? 28. Qué predicado es usado por Ruby para comprobar la igualdad entre claves de un hash? 29. Cómo se puede conseguir qué el producto de un número por un objeto de una clase que se está definio funcione? Por ejemplo: 4 * obj

LPP: Segunda Parte 4 30. En que clase se define protected? Es un método de instancia o de clase? 31. Disponen los elementos de la clase Module de un método new? Dispone la clase Module de un método new? 32. Cómo se puede hacer que la única forma de construir objetos de la clase MyClass se haga mediante nuestro propio método factoría/constructor my_maker (desde una clase externa a MyClass)? 33. Qué es una clase abstracta? Cómo se define una clase concreta? 34. Qué comentario al comienzo del fichero permite usar caracteres UTF-8 dentro del programa? 35. En qué directorio hay que ubicar las pruebas unitarias? 36. Qué ficheros se han de requerir para implementar las pruebas unitarias? 37. Cómo se denomina la clase Ruby de la cual hay que heredar para implementar las pruebas? 38. Describa el comportamiento de la afirmación assert_raise(exception_type,..){<code block} y proponga un ejemplo de uso. 39. Cómo se llaman los métodos que permiten la factorización de código que debe ejecutarse al principio y al final de cada prueba unitaria? 40. Qué opción permite ejecutar los test unitarios cuyos nombres concuerdan con un patrón? 41. Escriba una tarea de Rake para lanzar las pruebas unitarias. 42. Cómo se denomina el paradigma de desarrollo en el que se basa la herramienta RSpec? 43. Describa el conjunto de pasos a seguir para desarrollar una aplicación con RSpec. 44. En qué directorio hay que implementar las especificaciones de los requerimientos a una clase? 45. Rellene las partes que faltan de esta especificación Rspec: 1 class RSpecGreeter 2 def g r e e t 3 H e l l o RSpec! 4 5 6 7 describe RSpec Greeter do 8 i t should say H e l l o RSpec! when i t r e c e i v e s the g r e e t ( ) message do 9 g r e e t e r = RSpecGreeter. new 10 g r e e t i n g = g r e e t e r. g r e e t

LPP: Segunda Parte 5 11 g r e e t i n g. == 12 13 14 i t says H e l l o [ something ] do 15 g r e e t e r = RSpecGreeter. new 16 g r e e t i n g = g r e e t e r. g r e e t 17 g r e e t i n g. /ˆ H e l l o [ a za Z]+/ 18 19 46. Como puedo factorizar las líneas g r e e t e r = RSpecGreeter. new g r e e t i n g = g r e e t e r. g r e e t en el programa del ejercicio 45 anterior? que cambios debo introducir en el programa de especificación? 47. Qué opción permite ejecutar RSpec de manera que muestre por consola la descripción de cada una de las especificaciones realizadas? 48. Escriba una tarea de Rake para lanzar las pruebas de RSpec. 49. En qué consiste la integración continua (Continuous Integration)? 50. Describa el conjunto de pasos a seguir para desarrollar una aplicación con Travis. 51. En qué directorio hay que implementar los requerimientos de Travis? 52. Qué se ha de especificar en el fichero.travis.yml? 53. Describa el contenido de un fichero Gemfile utilizado por Travis. 54. Escriba un fichero Rakefile que permita utilizar Travis. 55. Cómo se pone en funcionamiento Travis? 56. Rellene el siguiente Ruby koan (el método instance_variables retorna un Array con las variables de instancia del objeto): class Dog2 def set name ( a name ) @name = a name def t e s t i n s t a n c e v a r i a b l e s f i d o = Dog2. new a s s e r t e q u a l, f i d o. i n s t a n c e v a r i a b l e s f i d o. set name ( Fido ) a s s e r t e q u a l, f i d o. i n s t a n c e v a r i a b l e s