Documentos de Académico
Documentos de Profesional
Documentos de Cultura
12 Tabla
12 Tabla
ORIENTADA A OBJETOS
10011
10110
01110
01100
10011
10110
01110
1001
Depto. de Ciencias e Ingeniería de la Computación 1 11
0 0
Universidad Nacional del Sur, Bahía Blanca 1
Tabla
Sectores Sectores (max:entero)
<<Atributos de instancia>> Crea una tabla para representar
t [] Androide max sectores. Requiere max > 0
<<Constructor>>
Sectores (max:entero) asignar (a:Androide, s:entero)
<<Comandos>> Asigna a al sector s. Requiere que el
asignar (a:Androide, s: entero) sector s sea válido y esté disponible.
01100
retirar (s:entero) 10011
retirar (a:Androide) retirar (s:entero)
10110
<<Consultas>> Elimina la asignación del androide
01110
cantSectores():entero del sector s. Requiere que el sector s 01100
cantSectoresAsignados():entero sea válido. 10011
cantSectoresAndroide(a:Androide):entero 10110
retirar (a:Androide)
todosAsignados():boolean 01110
Elimina todas las asignaciones del androide
estaAndroide(a:Androide):boolean 1001
existeSector(s:entero):boolean
a. 1 11
androideSector(s:entero):Androide 0 0
hayANave(n:NaveEspacial):boolean 1
clone():Sectores
2
Tabla
Sectores cantSectores():entero
<<Atributos de instancia>> Retorna el tamaño de la tabla
t [] Androide
cantSectoresAsignados():entero
<<Constructor>> Retorna la cantidad de sectores que tienen
Sectores (max:entero) asignado un androide.
<<Comandos>>
asignar (a:Androide, s: entero) cantSectoresAndroide(a:Androide):entero 01100
retirar (s:entero) Retorna la cantidad de sectores a las que 10011
retirar (a:Androide) está asignado el androide a. 10110
<<Consultas>> 01110
cantSectores():entero todosAsignados ():boolean 01100
cantSectoresAsignados():entero Retorna true si todos los sectores tienen asignado1 0 0 1 1
cantSectoresAndroide(a:Androide):entero un androide 10110
todosAsignados():boolean 01110
estaAndroide(a:Androide):boolean estaAndroide(a:Androide):boolean 1001
existeSector(s:entero):boolean Retorna true si el androide a está asignado al 1 11
androideSector(s:entero):Androide menos a un sector. 0 0
hayANave(n:NaveEspacial):boolean 1
clone():Sectores
Tabla
Sectores
<<Atributos de instancia>>
t [] Androide
<<Constructor>> existeSector(s:entero):boolean
Sectores (max:entero) Retorna true si s es un sector válido
<<Comandos>>
asignar (a:Androide, s: entero) androideSector (s:entero):Androide
Retorna al androide asignado al sector s 01100
retirar (s:entero) 10011
retirar (a:Androide) o nulo
10110
<<Consultas>> 01110
hayANave(n:NaveEspacial):boolean
cantSectores():entero 01100
Retorna verdadero si hay al menos un
cantSectoresAsignados():entero 10011
androide asignado a la nave n.
cantSectoresAndroide(a:Androide):entero 10110
todosAsignados():boolean clone():Sectores 01110
estaAndroide(a:Androide):boolean Implementa clone en profundidad 1001
existeSector(s:entero):boolean 1 11
androideSector(s:entero):Androide 0 0
hayANave(n:NaveEspacial):boolean 1
clone():Sectores 4
Tabla
Androide
Sectores
<<Atributos de instancia>> <<Atributos de instancia>>
t [] Androide vocablos: entero
nave: NaveEspacial
<<Constructor>>
Sectores (max:entero)
<<Constructor>>
<<Comandos>>
Androide (n: NaveEspacial)
asignar (a:Androide, s: entero) 01100
<<Comandos>>
retirar (s:entero) 10011
establecerNave(n: NaveEspacial)
retirar (a:Androide) 10110
aprenderVocablos(v: entero)
<<Consultas>> 01110
copy(a: Androide)
cantSectores():entero 01100
<<Consultas>>
cantSectoresAsignados():entero 10011
obtenerNave(): NaveEspacial
cantSectoresAndroide(a:Androide):entero 10110
obtenerVocablos(): entero
todosAsignados():boolean 01110
clone(): Androide
estaAndroide(a:Androide):boolean 1001
equals(a: Androide): boolean
existeSector(s:entero):boolean 1 11
androideSector(s:entero):Androide 0 0
hayANave(n:NaveEspacial):boolean 1
clone():Sectores
Tabla
class Sectores {
private Androide[] t;
//Constructor
public Sectores(int max) {
/*Crea una tabla para representar max sectores*/
01100
t = new Androide [max]; 10011
} 10110
01110
01100
10011
10110
01110
1001
1 11
0 0
1
6
Tabla
//Comandos
public void asignar(Androide a, int s) {
/*Asigna a al sector s. Requiere que el
sector s sea válido y esté disponible*/
t[s] = a;
01100
} 10011
10110
01110
01100
10011
10110
01110
1001
1 11
0 0
1
7
Tabla
8
Tabla
9
Tabla
//Consultas
public int cantSectores (){
//Retorna el tamaño de la tabla
return t.length;
}
01100
public int cantSectoresAsignados (){ 10011
/*Retorna la cantidad de sectores que tienen 10110
01110
asignado un androide*/ 01100
10011
int cant = 0; 10110
for (int i=0;i < cantSectores();i++) 01110
1001
if (t[i]!=null) cant++; 1 11
return cant; 0 0
1
}
10
Tabla
11
Tabla
12
Tabla
13
Tabla
15
Tabla
16
Tabla
class Estacionamiento {
private Micro[] t;
//Constructor
public Estacionamiento(int max) {
/*Crea una tabla para representar max unidades
01100
de estacionamiento. Requiere max>0 */ 10011
t= new Micro [max]; 10110
01110
} 01100
10011
10110
01110
1001
1 11
0 0
1
23
Tabla
//Comandos
public void estacionar (Micro unMicro) {
/*Busca la primera unidad libre, si existe
asigna el micro a esa unidad. Requiere que unMicro
no esté estacionado en otra unidad*/
01100
int i = 0; 10011
while (i < cantUnidades() && t[i] != null) 10110
01110
i++; 01100
10011
if (i < cantUnidades()) 10110
t[i] = unMicro; 01110
1001
} 1 11
0 0
1
24
Tabla
//Comandos
public void estacionar (Micro unMicro) {
/*Busca la primera unidad libre y asigna unMicro a
la unidad. Requiere que unMicro no esté estacionado
en otra unidad y que haya una unidad libre*/
01100
int i = 0; 10011
while (t[i] != null) 10110
01110
i++; 01100
10011
t[i] = unMicro; 10110
} 01110
1001
1 11
El comentario indica que es la clase cliente la responsable de garantizar que 0 0
hay un unidad libre, por ejemplo invocando a todasOcupadas() 1
25
Tabla
26
Tabla
27
Tabla
//Consultas
public int cantUnidades (){
//Retorna el tamaño de la tabla
return t.length;
}
01100
10011
10110
01110
01100
10011
10110
01110
1001
1 11
La funcionalidad es análoga a la consulta cantSectores() de la clase 0 0
Sectores. 1
29
Tabla
31
Tabla
33
Tabla
34
Reusabilidad
class Sectores {
private Androide[] t;
//Constructor
public Sectores(int max) {
/*Crea una tabla para representar max sectores */
t= new Androide [max]; 01100
} 10011
10110
class Estacionamiento { 01110
01100
private Micro[] t; 10011
//Constructor 10110
public Estacionamiento(int max) { 01110
1001
/*Crea una tabla para representar max unidades de 1 11
estacionamiento */ 0 0
t= new Micro [max]; 1
}
Reusabilidad
//Comandos
public void asignar(Androide a, int s) {
/*Asigna a al sector s. Requiere que el
sector s sea válido y esté disponible*/
t[s] = a;
01100
} 10011
10110
public void estacionar(Micro unMicro,int p) { 01110
01100
/*Estaciona unMicro en la unidad p. Requiere que la
10011
10110
unidad p sea válida y esté disponible. Requiere que
01110
unMicro no esté estacionado*/ 1001
1 11
t[p] = unMicro; 0 0
} 1
Reusabilidad