Class AbstractBoolVect

java.lang.Object
it.unimi.di.prog2.temisvolti.boolvect.AbstractBoolVect
All Implemented Interfaces:
BoolVect
Direct Known Subclasses:
ArrayBoolVect, LongBoolVect, SetBoolVect

public abstract class AbstractBoolVect extends Object implements BoolVect
Classe astratta che provvede l'implementazione di alcuni dei metodi dell'inferfaccia 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 Classes
    Modifier and Type
    Class
    Description
    static interface 
    Interfaccia che descrive l'applicazoine di un operatore logico binario questo BoolVect.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    and(BoolVect other)
    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
    or(BoolVect other)
    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.
    Restituisce la versione stringa di questo BoolVect.
    void
    xor(BoolVect other)
    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

      public boolean leggi(int pos) throws IndexOutOfBoundsException
      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 interface BoolVect
      Parameters:
      pos - la posizione.
      Returns:
      il valore di verità.
      Throws:
      IndexOutOfBoundsException - se la posizione è negativa.
    • scrivi

      public void scrivi(int pos, boolean val) throws IndexOutOfBoundsException
      Description copied from interface: BoolVect
      Scrive il valore di verità dato nella posizione specificata.
      Specified by:
      scrivi in interface BoolVect
      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

      public void and(BoolVect other) throws NullPointerException
      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 interface BoolVect
      Parameters:
      other - l'altro BoolVect.
      Throws:
      NullPointerException - se l'agromento è null.
    • or

      public void or(BoolVect other) throws NullPointerException, IllegalArgumentException
      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 interface BoolVect
      Parameters:
      other - l'altro BoolVect.
      Throws:
      NullPointerException - se l'agromento è null.
      IllegalArgumentException - se la taglia di questo BoolVect è minore della dimensione del risultato.
    • xor

      public void xor(BoolVect other) throws NullPointerException, IllegalArgumentException
      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 interface BoolVect
      Parameters:
      other - l'altro BoolVect.
      Throws:
      NullPointerException - se l'agromento è null.
      IllegalArgumentException - se la taglia di questo BoolVect è minore della dimensione del risultato.
    • toString

      public String 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 vale false.

      Overrides:
      toString in class Object
      Returns:
      la stringa corrispondente a questo BoolVect.
    • equals

      public boolean equals(Object obj)
      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.

      Overrides:
      equals in class Object