public abstract class AbstractSearcher
Specifikace
Částečná implementace, typicky předek konkrétních tříd, plných implementací
(Úplná) implementace
abstract
v hlavičce, např.:
public abstract class AbstractSearcher
Abstract
není povinný ani nutný.
public abstract int indexOf(double d);
Searcher ch = new AbstractSearcher(...);
searching
pro BlueJ:
rozhraní - specifikuje, co má prohledávač umět
abstraktní třída - předek konkrétních plných implementací prohledávače
konkrétní třída - plná implementace prohledávače
specifikuje, co má prohledávač umět
public interface Searcher { // Nastav do vyhledávače pole, kde se bude vyhledávat void setData(double[] a); // Zjisti, zda pole obsahuje číslo d boolean contains(double d); // Zjisti pozici, na níž je v poli číslo d. // Není-li tam, vrať -1 int indexOf(double d); }
předek konkrétních plných implementací prohledávače
public abstract class AbstractSearcher implements Searcher { // třída rozhraní implementuje, ale ne úplně // úložiště prvků JE implementováno private double[] array; // nastavení úložiště prvků JE implementováno public void setData(double[] a) { array = a; } public double[] getData() { return array; } // rozhodnutí, zda prvek je přítomen na základě vyhledání jeho pozice // též může být již implementováno! public boolean contains(double d) { return indexOf(d) >= 0; } // samotné vyhledání prvku není implementováno public abstract int indexOf(double d); }
plná implementace prohledávače — tentokrát pomocí lineárního prohledání
public class LinearSearcher extends AbstractSearcher { // doimplementuje se, co zbývá a to je metoda indexOf! public int indexOf(double d) { double[] data = getData(); for(int i = 0; i < data.length; i++) { if(data[i] == d) { return i; } } return -1; } }