Class AbstractBoolVect
- All Implemented Interfaces:
BoolVect
- Direct Known Subclasses:
ArrayBoolVect
,LongBoolVect
,SetBoolVect
BoolVect
.
Questa classe implementa i metodi totali BoolVect.leggi(int)
e BoolVect.scrivi(int, boolean)
grazie ai metodi parziali leggiParziale(int)
e scriviParziale(int, boolean)
che devono essere implementati dalle sue sottoclassi; il vantaggio
è che le sottoclassi, potendo evitare i controlli sulla posizione, potranno fornire una
implementazione molto snella.
Implementa inoltre i metodi BoolVect.and(BoolVect)
, BoolVect.or(BoolVect)
e
BoolVect.xor(BoolVect)
a partire dagli operatori booleani definiti in base
all'interfaccia AbstractBoolVect.BooleanOperator
, grazie alla funzione componenteAComponente(BooleanOperator, BoolVect)
che li estende componente a componente.
Infine, provvede una implementazione elementare di toString()
ed una molto
inefficiente per equals(Object)
, le sottoclassi concrete devono implementare se
possibile una versione ottimizzata di tale medoto, ma in ogni caso una versione coerente di
Object.hashCode()
.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Interfaccia che descrive l'applicazoine di un operatore logico binario questo BoolVect. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Rende questo BoolVect uguale all'and componente a componente di questo BoolVect e quello specificato.void
Metodo parziale che, dato un operatore booleano e un BoolVect applica l'operazione componente a componente ottenuta dall'operatore booleano a questo e il BoolVect dato e ne salva il risultato in questo.boolean
Implementazione non specializzata di equals.boolean
leggi
(int pos) Legge il valore di verità di posizione specificata.protected abstract boolean
leggiParziale
(int pos) Funzione parziale che restituisce il valore di verità di posizione specificata.void
Rende questo BoolVect uguale all'or componente a componente di questo BoolVect e quello specificato.void
scrivi
(int pos, boolean val) Scrive il valore di verità dato nella posizione specificata.protected abstract void
scriviParziale
(int pos, boolean val) Funzione parziale che scrive il valore di verità dato nella posizione specificata.toString()
Restituisce la versione stringa di questo BoolVect.void
Rende questo BoolVect uguale allo xor componente a componente di questo BoolVect e quello specificato.Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface it.unimi.di.prog2.temisvolti.boolvect.BoolVect
daString, dimensione, pulisci, taglia
-
Constructor Details
-
AbstractBoolVect
public AbstractBoolVect()
-
-
Method Details
-
leggiParziale
protected abstract boolean leggiParziale(int pos) Funzione parziale che restituisce il valore di verità di posizione specificata.- Parameters:
pos
- la posizione, deve essere compresa tra 0 (incluso) e la taglia (esclusa).- Returns:
- il valore di verità.
-
scriviParziale
protected abstract void scriviParziale(int pos, boolean val) Funzione parziale che scrive il valore di verità dato nella posizione specificata.- Parameters:
pos
- la posizione, deve essere compresa tra 0 (incluso) e la taglia (esclusa).val
- il valore.
-
leggi
Description copied from interface:BoolVect
Legge il valore di verità di posizione specificata.Se la posizione eccede la dimensione (o la taglia) verrà restituito convenzionalmente il valore
false
.- Specified by:
leggi
in interfaceBoolVect
- Parameters:
pos
- la posizione.- Returns:
- il valore di verità.
- Throws:
IndexOutOfBoundsException
- se la posizione è negativa.
-
scrivi
Description copied from interface:BoolVect
Scrive il valore di verità dato nella posizione specificata.- Specified by:
scrivi
in interfaceBoolVect
- Parameters:
pos
- la posizione.val
- il valore di verità- Throws:
IndexOutOfBoundsException
- se la posizione è negativa, o il valore ètrue
e la posizione è maggiore o uguale alla taglia.
-
componenteAComponente
public void componenteAComponente(AbstractBoolVect.BooleanOperator op, BoolVect other) throws IndexOutOfBoundsException Metodo parziale che, dato un operatore booleano e un BoolVect applica l'operazione componente a componente ottenuta dall'operatore booleano a questo e il BoolVect dato e ne salva il risultato in questo.Gli argomenti non devono essere
null
(questa è una funzione parziale).- Parameters:
op
- l'operatore booleano.other
- il primo BoolVect.- Throws:
IndexOutOfBoundsException
-
and
Description copied from interface:BoolVect
Rende questo BoolVect uguale all'and componente a componente di questo BoolVect e quello specificato.Si osservi che, sebbene la dimensione degli operandi può essere diversa, in nessun caso la dimensione del risultato può eccedere la minore tra le due; l'and infatti è senz'altro
false
per tutte le posizioni che sono maggiori della dimensione di uno, o dell'altro, BoolVect booleano.- Specified by:
and
in interfaceBoolVect
- Parameters:
other
- l'altro BoolVect.- Throws:
NullPointerException
- se l'agromento ènull
.
-
or
Description copied from interface:BoolVect
Rende questo BoolVect uguale all'or componente a componente di questo BoolVect e quello specificato.Si osservi che se la dimensione dell'altro BoolVect è maggiore della taglia (e quindi dimensione) di questo, allora il valore di verità in posizione pari alla dimensione dell'altro BoolVect sarà
true
, ma non potrà essere memorizzato in questo BoolVect per via della sua taglia.- Specified by:
or
in interfaceBoolVect
- Parameters:
other
- l'altro BoolVect.- Throws:
NullPointerException
- se l'agromento ènull
.IllegalArgumentException
- se la taglia di questo BoolVect è minore della dimensione del risultato.
-
xor
Description copied from interface:BoolVect
Rende questo BoolVect uguale allo xor componente a componente di questo BoolVect e quello specificato.Si osservi che se la dimensione dell'altro BoolVect è maggiore della taglia (e quindi dimensione) di questo, allora il valore di verità in posizione pari alla dimensione dell'altro BoolVect sarà
true
, ma non potrà essere memorizzato in questo BoolVect per via della sua taglia.- Specified by:
xor
in interfaceBoolVect
- Parameters:
other
- l'altro BoolVect.- Throws:
NullPointerException
- se l'agromento ènull
.IllegalArgumentException
- se la taglia di questo BoolVect è minore della dimensione del risultato.
-
toString
Restituisce la versione stringa di questo BoolVect.Se la dimensione del BoolVect è 0 restituisce "F", altrimenti restituisce una stringa che comprende un numero di caratteri pari alla dimensione del BoolVect, detto altrimenti i valori di verità
false
che hanno posizione maggiore della dimensione non sono parte della stringa; l'i-esimo carattere della stringa (contando da destra) è `V` se l'i-esima posizione del BoolVect ha valore di veritàtrue
, o `F` se valefalse
. -
equals
Implementazione non specializzata di equals.Questa implementazione è molto inefficiente per il caso sparso; le sottoclassi dovrebbero implementare una versione ottimizzata e in ogni caso sovrascrivere
Object.hashCode()
in modo coerente.
-