1.tema 2: clases y objetos ========================== 1.1niveles de acceso a las propiedades de una clase ------------------------------

1.TEMA 2: Clases y Objetos
==========================
1.1Niveles de acceso a las propiedades de una clase
---------------------------------------------------
1.
Sea la declaración
class Ejemplo1 feature
at1: Ejemplo2

end
indica las condiciones que deben cumplirse para que la asignación
at1.otro:= ox sea aceptada por el compilador Eiffel, supuesto que
aparece en una rutina de la clase Ejemplo1 y que otro es un atributo
de Ejemplo2. ¿Y para el caso de C++?.
2.
Compara Eiffel, Java y C++ desde el punto de vista de la
visibilidad y accesibilidad de los atributos y métodos de una
clase en las clases clientes y descendientes de dicha clase.
Recuerda que en el caso de los atributos debes distinguir entre
acceso para consulta y acceso para modificación. No consideres
atributos y métodos de clase.
3.
Sea una clase B cuyas propiedades queremos que sólo sean
accesibles desde otra clase A, ¿cómo actuaríamos en el caso de C++
y Eiffel?. ¿Son equivalentes las soluciones ofrecidas por cada
lenguaje?
4.
Sea un atributo at en una clase C, deseamos que cualquier cliente
de C disponga de los servicios para consultar y modificar el valor
de at. Señala las diferentes formas de actuar en Eiffel, C++ y
Java.
5.
Considera una clase que incluye un conjunto de propiedades que
sólo van a ser utilizadas por cierto grupo de clases, por ejemplo
una clase Nodo[T] que sólo es utilizada por la clase Lista[T].
Compara el mecanismo de definición de clases amigas (friend class)
de C++ con el mecanismo de exportación selectiva de Eiffel. ¿Son
equivalentes?.
6.
Escribe la clase C++ que corresponda a la clase Eiffel mostrada
abajo. Señala aquellas declaraciones que no tienen una
correspondencia en C++.
class Exam1 creation make1, make2
feature {all}
at1: Integer;
at2: Exam2;
at3: expanded Exam2;
make1 (p1: Integer; p2: Exam2) is do
at1:= p1; at2:= p2
end;
make2 (p: expanded Exam2) is do
at3:= p
end;
oper1 is do ... end;
feature {Exam3}
oper2 is do ... end;
feature {None}
at4: Real;
oper3 (p: Exam3) is do ... end;
end;
7.
Expresa en Eiffel las dos clases C++ siguientes, manteniendo el
mismo significado. Justifica la respuesta.
class uno: {
private:
int at1;
X at2;
int f1();
protected:
int at3;
int at4;
X *at5;
int f2 ()
public:
uno (int p1, int p2) : {...};
uno (int p1, X *p2) : {...};
int at6;
void f3 (int m);
virtual void f3 (X *m);
void int f4 (int m);
}
class dos: public uno {
protected:
int at7;
public:
dos (int p1, int p2, int p3) : uno (p1,p2)
{...};
virtual void f5 (X p);
virtual void f3 (X *m);
int f4 (float m);
}
8.
a) Escribe en Eiffel y Java la declaración de una clase Exam que
incluya las siguientes características:
i.
un atributo at1 que debe ser visible sólo a las subclases.
ii.
un atributo at2 que no es visible por ninguna clase.
iii.
un atributo at3 que puede ser modificado desde las clases A y B
(no son subclases) pero no desde el resto.
iv.
un atributo at4 que no es accesible a las subclases
v.
un método m1 que no es visible por ninguna clase
vi.
un método m2 que es visible para las clases A y B y subclases de
Exam pero no para el resto.
vii.
un método m3 que es visible sólo en las subclases
viii.
un método m4 que sólo está disponible para cualquier clase del
mismo paquete.
1.2Semántica de almacenamiento vs. semántica referencia
-------------------------------------------------------
9.
a) ¿Qué diferencias encuentras entre el tipo "puntero" de Pascal o
Modula/2 o C++ y las variables con semántica referencia de Eiffel
o Java ?
b) ¿Por qué hacen uso los lenguajes orientados a objetos de la
"semántica referencia" para las variables?
1.3Creación vs. Declaración
---------------------------
10.
Supuesto Eiffel y sea RECTANGULO una clase de tipo referencia,
dada la declaración de atributo marco: RECTANGULO dentro de una
clase VENTANA, es necesario aplicar una instrucción de creación
explícita, !!marco, para asociar un objeto de la clase RECTANGULO
a la entidad marco. ¿Por qué no es suficiente la declaración para
crear la instancia en tiempo de ejecución?
11.
Supuesto el lenguaje Eiffel, explica porqué la declaración I es
ilegal, mientras que la declaración II es legal.
DECLARACION I
DECLARACION II
expanded class A
at1: expanded B;
...
end
class B
at2: A

end
class A
at1: B;
...
end
class B
at2: A

end
12.
Sea C una clase Eiffel, con un método de creación make, y sea la
declaración ob: C, explica la utilidad del formato de creación de
objetos ! C! ob.make.
1.4Operaciones sobre referencias
--------------------------------
13.
¿Por qué en lenguajes orientados a objetos como Eiffel, es preciso
distinguir entre identidad e igualdad de objetos?. ¿Una igualdad
profunda (deep_equal) implica una igualdad superficial (equal)?
14.
Supuesto Eiffel, señala cuál de las siguientes expresiones
retornará true después de la asignación x:= deep_clone(y): a)
deep_equal(x,y) ; b) equal(x,y) ; c) x=y . Justifícalo con un
ejemplo.
15.
Sean los objetos ob1 y ob2 de una clase C de Eiffel, y ob2 ha sido
creado a partir de ob1, mediante alguna operación de copia o
clonación,


ob1
128


65


ob2


65
a.
¿ob2 es una copia superficial o profunda de ob1?
b.
¿ob2 y ob1 son iguales superficialmente o en profundidad?
c.
¿qué obtendríamos al hacer una copia superficial de ob2?
d.
¿qué obtendríamos al hacer una copia profunda de ob2?
16.
Sea la siguiente clase Eiffel
class Exam creation make1
feature {all}
at1: Integer;
at2: Real;
at3: Exam;
make1 ( p1: Integer; p2: Real) is do
at1:= p1; at2:= p2;
end;
push is do
at3:= clone (current);
end;
pop is do
at3:=at3.at3
end;
end
Dada la declaración oa: A, indica mediante un dibujo el efecto de los
siguientes mensajes
!!oa. make1(1,2);
oa. push ; oa. make1(3,4);
oa. push ; oa. make1(5,6);
oa.pop ; oa. pop
1.5Genericidad
--------------
6.
¿Supuesto Eiffel, qué errores detectará el compilador en la
siguiente declaración de clase?. Justifica la respuesta.
class EXAM1[G] feature
at1: G;
at2: EXA2;
op1 (v:G; b:EXA2) is
local t1:EXA3
do
t1:=v.op2;
at2.x:=69;
t1:=b;
b:= at2;
!!at1
end;
-- Otras rutinas que se han definido correctamente
end
x: atributo de la clase EXA2 de tipo INTEGER
op2: función definida en EXA1 que devuelve un objeto de tipo EXA3
17.
Escribe en Eiffel una clase generica ARRAY2[G] que represente
arrays bidimensionales, utilizando la clase ARRAY[G] como base de
la implementación. La clase ARRAY2[G] incluirá una función que
dados una fila y columna retorna el objeto ligado a esa posición,
otro método que asigna un objeto a una posición dada, y otro que
crea un objeto ARRAY2[G] con cierto número de filas y columnas.
class ARRAY[G] creation make
feature
make(min, max: INTEGER) -- crea un array con limites entre min y max
do .. end
put (v: G; i: INTEGER) -- asigna v a la posición i
do .. end;
item (i:INTEGER): G -- devuelve el objeto asociado a i
do .. end.
….
end
18.
Analiza los problemas de no disponer de genericidad en un lenguaje
de programación orientado a objetos como es el caso de Java. Para
ello realiza lo siguiente, a) completa la clase, mostrada abajo,
denominada Stack y que representa pilas, sustituyendo cada ? por
el tipo adecuado. Object es la clase raíz de la jerarquía de
clases y los elementos de la pila se almacenan en una instancia de
la clase Vector, cuyas instancias son arrays que almacenan
instancias de Object; b) analiza el uso de las distintas
operaciones por parte del código cliente, señalando las ventajas
de disponer de genericidad; c) analiza si alguno de los problemas
puede ser resuelto utilizando un método getClass que retorna la
clase del objeto receptor, una instancia de la clase Class
(metaclase).
class Stack {
private Vector elementos;
private int cima;
public add (?) {...}; //añadir un elemento en la cima
public remove() {...}; //eliminar elemento de la cima
public ? item() {...}; //retorna elemento en la cima
public int search(?) //distancia de un elemento a la cima
... }
19.
Sea la clase Java denominada lista, mostrada abajo, cuyas
instancias son listas implementadas mediante arrays,
class lista {
private Object [] elementos; // array que almacena los elementos
private int count; // número de elementos
public void put (Object V; int i) {...}; //añadir un elemento en
posición i
public void remove(int i) {...}; //eliminar elemento en posición i
public Object item(int i) {...}; // retorna elemento en posición i
... }
a.
¿Sería legal el siguiente código, suponiendo que lf es una lista
de figuras?. Justifícalo.
figura f; lista lf; int i;
f = lf. item(i)
b.
Sea getClass un método que retorna la clase del objeto receptor,
una instancia de la clase Class (metaclase), señala si sería legal
el siguiente código, supuesto que mover es un método de la clase
figura, raíz de la jerarquía de figuras (círculo, polígono,..).
Justifica la respuesta.
poligono f; lista lf; int i;
if lf.item(i).getClass = poligono then lf.item(i).mover
c.
Escribe un método para aplicar el método mover a todas las
instancias de la lista lf. Puedes usar la notación que desees para
expresar la iteración.
20.
Sea la clase siguiente clase expresada en Eiffel
class VECTOR [G  NUMERIC ] feature
elementos: ARRAY[G];
put (v: G, i: INTEGER) is do… end

end
discute si es equivalente a la siguiente clase Java
class Vector {Numeric[] elementos; put (v:Numeric;Integer i) {…}…}

  • COLEGIO ROMAREDA AGUSTINOS RECOLETOS LIBROS DE TEXTO CURSO 20212022
  • MEDICINA DE FAMILIE SI INGRIJIRI LA DOMICILIU 1 MEDICINĂ
  • TEL +385 (0)1 378 3397 FAX +385 (0)1 378
  • (IME I PREZIME PODNOSITELJA) (DATUM I
  • PERIHAL BARU PERPANJANGAN ) SURAT PERMOHONAN PERPANJANGAN
  • DEALING WITH THE MEDIA IN THE EVENT
  • FORM E STATEMENT OF ADDITIONAL INFORMATION PROVIDED AT AN
  • Bases Primas Proofofconcept Asturiasris3 Idepailas 2016 Base 1 Objeto
  • Walter d Mignolo Geopolítica del Conocimiento y Diferencia Colonial
  • 25 MEDICÍNA A TRESTNÍ PRÁVO TRESTNÍ ZÁKONÍK
  • FORSKNINGSTRÆNING OPGAVEFORDELING REGION NORD 2015 YNGRE LÆGERS OPGAVER I
  • A PÉCSI TUDOMÁNYEGYETEM KÖZGAZDASÁGTUDOMÁNYI KARA TUDOMÁNYOS DIÁKKÖRÉNEK SZERVEZETI ÉS
  • RISIKOVURDERING – BARNAS TURLAG DNT TELEMARK MED LOKALLAG
  • L FORMAT PAYSAGE EN A5 (148 21) MARGES
  • NECESITATEA AMBALARII SI A FIXARII PRODUSELOR IN VEDEREA TRANSPORTULUI
  • AYUDAS A LA ADQUISICIÓN DE VIVIENDAS CON PROTECCIÓN PÚBLICA
  • A FOR OFFICE USE ONLY LICENSE NO ISSUED TYPE
  • L’EUROPA NELLA NOSTRA PROVINCIA GIORNATA INFORMATIVA SUL PROGRAMMA EUROPA
  • TOAST TO TOGETHERNESS TERMS & CONDITIONS INTRODUCTION 1 BY
  • TOSHIBA SATELLITE 1200 HOW TO TAKE APART LAPTOP STEP
  • BASIC USABILITY PRINCIPLES –QUIZ 1 HTTPWWWHUMANFACTORSCOMDOWNLOADSUSABILITYQUIZASP 1 THE BASIC
  • MINISTERIO DE SANIDAD DELEGACIÓN DEL GOBIERNO PARA EL PLAN
  • MASTICATION PRESENTATION DETAILS SLIDES 13 DURATION 001330 PRESENTER DETAILS
  • THE VIRGIN AND THE CHILD ON THE THRONE THE
  • PROGRAM SREČANJA SPK OB OBISKU PREDSEDNIKA DZ G VEBRA
  • THINK LITERACY CROSSCURRICULAR APPROACHES GRADES 712 TEACHERLIBRARIANS BACKGROUND IN
  • AJAS SUBMISSION CHECKLIST FOR AUTHORS PLEASE BE SURE TO
  • PHASE HAZARD ANALYSIS (PHA) SUBMITTAL A PHASE HAZARD ANALYSIS
  • UNIVERSIDAD JOSÉ CARLOS MARIATEGUI MOQUEGUA AV EJERCITO MZ N
  • BADANIE BENCHMARKINGOWE OBSZAR BADAWCZY 2 JAKOŚĆ NAPIĘCIA SUKCES BADAŃ