Showing posts with label OOP. Show all posts
Showing posts with label OOP. Show all posts

Saturday, 17 August 2013

Abstraction simplified

Abstraction


Abstraction is an essential element of object oriented programming. Abstraction is used to manage the complexity of an implementation. Through Abstraction, relevant details are shown and irrelevant details are hidden.
For example, A car is driven by a person without knowing its internal architecture and construction. Here the relevant work for a person is to drive so other details like that of engine is not needed to be provided to him and thus abstraction comes into the picture.
The abstraction can be achieved by hierarchical classification of a complex system.
For example, If we take the example of a Car as a single object. It consists of several sub systems such as Seat, Brakes, Steering, Engine etc. and similarly these subsystems are again made up of more specialized parts.

Abstraction implementation in Java

In Java, Abstraction is achieved by declaring the methods without any implementation in interface or class and then defining these methods in the derived classes. This simply means that the actual definition of what a method will do is left for implementation on the class which can define the method according to the need. Abstraction is used when we know that something has to be there but not sure how exactly it should look like.
there are two ways to implement and attain the abstraction.
1. Abstract Class
2. Interface

1. Abstract Class : 

                             An Abstract class is a class of which no instance is created. To use an abstract class, it needs to be extended and the derived class must not have any abstract method. Abstract methods are declared in the abstract class which does not contain any method body. To use this method, it needs to be overridden in the sub class extending this abstract class.

For example :
When we have to create a class Shape, we know that each shape must have the method called area() but it may have different implementation for different types of shapes
skeleton for Abstract class is as explained below :
one abstract class Shape is created with two abstract methods area() and perimeter().

Abstract class Shape 








The Circle and Rectangle class extends this abstract class and they need to implement the abstract methods of Shape class. A shown below, both methods are implemented as per the type of shape. Her we can see that every shape needs to have its area and perimeter, thus these are defined in the abstract class and then implemented in the derived class and every subclass of this base class will have to implement these methods.

Derived class Circle

Derived class Rectangle

2. Interface: 

                   It is another way to implement Abstraction in java. Interfaces are just like classes with its all member variables defined as public, final and static i.e. no instance variables and all methods as abstract and public. It is denoted with keyword interface. The classes can implement any number of interfaces and any number of classes can implement same interface. the implementing class must define all the methods declared in the interface. Interfaces are created when we know that what a class must do but not how to do.
Like Abstract class, interface van not have any concrete method in it.
An interface abstraction is implemented like as below:
Shape is one interface and Circle and Rectangle are two classes which implement this interface.

Interface definition

Circle class implements Shape interface


Rectangle class implements Shape



.






















































When to Use Interface and When to use Abstract Class

  1. When we know that one functionality should be same across all the sub classes, Abstract class is to be used. For example : Every vehicle must have a method called start() which should be their in every vehicle derived     and its implementation must be same.
  2. When we use Interface, there is always a possibility that we can implement more than 1 interfaces thus multiple inheritance can be used.

Thursday, 15 August 2013

Features of JAVA - Reasons to use java over other languages

Java - Features

Java was developed by James Gosling, Chris Warth, Patrick Naughton, Ed Frank and Mike Sheridan at Sun Microsystems Inc. in 1991 which was initially termed as 'Oak' and later renamed to 'Java' in 1995. The fundamental necessities which led to evolution of java were portability and security.
There are several reasons on why to use java as the programming language over other languages. Few of them are as listed below:

Salient features of JAVA: 

Platform Independent
It is also termed as Write Once, Run Anywhere, any time, forever . A Java program that is written and compiled in one platform can run on any other platform without any recompilation or modification. This was achieved with the creation of Java Virtual Machine(JVM). The JVM is an interpreter which is platform dependent. All the JVMs accept the same input i.e. byte code and interpret it into machine language format of the corresponding platform. the basic flow is as given in below diagram.

basic flow in java programming

Simple
Java is designed in such a way that a professional programmer can learn it very easily and effectively.It is even better for a person to learn it if he understands the basic concepts of object oriented programming or has experience in C/C++.

Secured
It is one of the most innovative aspect of Java. It is achieved by confining an applet to the Java execution environment and not allowing access to other parts of the computer where the applet is downloaded. This is ensured by the use of JVM which is in control, can contain program  and prevent it from generating the side effects.

Potability
Portability becomes very important feature when we move to internet as many different types of computers and operating systems are connected to it. One single java program must be running on different kinds of CPU's, operating systems or browsers. this is achieved when we have the byte code of the java program which can be run on variety of environments as only JVM needs to be implemented there on platform.

Object Oriented
Java is one of the most powerful OOP languages.The Object model in java is simple and very easy extend. Java provides ways to implement all OOP concepts like Inheritance, Polymorphysm, Abstraction, Encapsulation and many more.

Robust
When it comes to a multi-platformed environment, reliability becomes the most demanding aspect of a program. Java forces you to find your mistakes early in the programming. Compile time and run time checks implemented in java helps to be free of worries about very common causes of errors. two very important feature to be considered for robustness in java are Memory management and Exception handling.

Multithreaded
java supports multithreaded programming which allows a programmer to write programs that can perform different actions simultaneously. In this feature, multiple light weighed process can run concurrently to use resources more effectively.

Distributed
Java handles TCP/IP protocols thus can be used for programs in distributed environment. Java also supports Remote Method Invocation (RMI) which makes it possible to call method from one program across the network.

High Performance
Just-in-time compiler plays the big role in making java with high performance. this converts the byte code in the native machine code for efficient outputs.