package lectures.inheritance_vs_delegation.shared_vars;
import util.annotations.WebDocuments;
import lectures.inheritance.InheritingStringDatabase;
@WebDocuments({"Lectures/InheritanceVsDelegationSharedVars.pptx", "Lectures/InheritanceVsDelegationSharedVars.pdf", "Videos/InheritanceVsDelegationSharedVars.avi"})
public class ADelegatingStringDatabase implements InheritingStringDatabase {
ADelegateStringHistory stringHistory = new ADelegateStringHistory();
public int indexOf (String element) {
int index = 0;
while ((index < stringHistory.size()) && !element.equals(stringHistory.elementAt(index)))
index++;
return index;
}
void shiftUp(int startIndex) {
for (int index = startIndex; index + 1 < stringHistory.size(); index++) {
stringHistory.contents[index] = stringHistory.elementAt(index + 1);
}
stringHistory.size--;
}
public void removeElement(String element) {
shiftUp(indexOf(element));
}
public boolean member(String element) {
return indexOf (element) < stringHistory.size();
}
public void clear() {
stringHistory.size = 0;
}
public int size() {
return stringHistory.size();
}
public String elementAt(int index) {
return stringHistory.elementAt(index);
}
public void addElement(String element) {
stringHistory.addElement(element);
}
public void deleteElement (String element) {
shiftUp(indexOf(element));
}
}