Abstraction: Hiding the implementation details,
concentrating on essentials things,
without worrying about the details
■ In java, abstraction is achieved via abstract class or interface
■ Abstraction cannot exist without inheritance
3.1. Abstract class a class that's meant to be inherited
(cannot be private or final)
■ To create an abstract class: add keyword abstract
before the class declaration
■ A class that we cannot create object
when abstract class extended by regular class:
we MUST override all the abstract methods of super class
when abstract class extended by abstract class:
no need to override any abstract methods
abstract class vs non-abstract class:
NON-ABSTRACT CLASS:
cannot have: abstract methods
can have: constructor, instance method, static method,
instance block, static block, instance variable, static variable
ABSTRACT CLASS:
can have: constructor, instance method, static method, instance block,
static block, instance variable, static variable...
ABSTRACT METHOD: method without implementation, meant to be override
(cannot create object, cannot be final,static,private)
FRAMEWORK EXAMPLE:
In my framework I have achieved abstraction by using collections
or Map, because it’s all interface. Most of the cases I come
across using List. If we want to access elements frequently
by using index, List is a way to go. ArrayList provides
faster access if we know index. If we want to store elements and
want them to maintain an order, List is a better choice.
i) List webs = driver.getWindowHandles();
=>create a list first to store web URLs in list
ii)To handle dynamic elements store it in the list and identify by index
List all = driver.findElements(By.tagname(“”));
In my framework I follow POM and had situations where some pages
shared similar actions that were similar but worked slightly
different, so I was able to use abstraction to define those
actions and implement them in each page according to what was needed
for that webpage