2. ASSOCIATION
Association is a relationship between two objects.
Objects might not be completely dependent on each
other.
One-to-many, many-to-one, many-to-many all these
words define an association between objects
Example: A Student and a Faculty are having an
association.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
2
3. AGGREGATION
A directional association between objects.
Aggregation can be considered as a “has-a”
relationship.
Child object can also survive or exist without the
enclosing class.
For Example, Room has a table, but the table can
exist without the room.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
3
4. COMPOSITION
A restricted aggregation is called composition.
The member object (part) cannot exist without the
containing class.
For example, A class contains students. A student
cannot exist without a class. There exists composition
between class and students.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
4
5. UML Diagrams of
Relationships
Association
Association is denoted by simple
arrow
Aggregation
aggregation is denoted by empty
diamond head arrow
Composition
composition is denoted by filled
diamond head arrow
Satyam Shrivastav
http://programmingpoints.blogspot.in/
5
6. Difference Between
Composition And Aggregation
When there is a composition between two objects, the
composed object cannot exist without the other object.
In case of Aggregation,
Though one object can contain the other object,
there is no condition that the composed object must
exist.
For Ex: Facebook has-a-User i.e. Aggregation
Every User has a different Session i.e.
Composition.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
6
7. METHODS OVERRIDING
Overriding is a feature of OOP languages like
Java that is related to run-time polymorphism.
Method overriding is when a child class
redefines the same method as a parent class,
with the same parameters.
The key benefit of overriding is the ability to
define behavior that is specific to a particular
subclass type.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
7
8. The rules for overriding a method
are as follows:
The argument list must exactly match that of the
overridden method.
Overriding method CAN throw any unchecked
runtime exception.
You cannot override a method marked final.
You cannot override a method marked static.
If a method can't be inherited, you cannot
override it.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
8
9. METHOD OVERLOADING
Overloading is also a feature of OOP languages like
Java that is related to compile time (or static)
polymorphism.
Method overloading is defining several methods in
the same class, that accept different numbers and
types of parameters.
In this case, the actual method called is decided at
compile-time, based on the number and types of
arguments.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
9
10. Overloading Rules
Overloaded methods MUST change the argument
list.
Overloaded methods CAN change the return type.
Overloaded methods CAN change the access
modifier.
Overloaded methods CAN declare new or broader
checked exceptions.
A method can be overloaded in the same class or
in a subclass.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
10
12. Enum
An enumeration, or “enum” is simply a set of
constants to represent various values.
An enum type is a special data type that enables for
a variable to be a set of predefined constants.
The variable must be equal to one of the values that
have been predefined for it.
enums extend java.lang.Enum and implement
java.lang.Comparable.
Hence, enums can be sorted.
Enums override toString() and provide valueOf().
Satyam Shrivastav
http://programmingpoints.blogspot.in/
12
13. Defining Enum
Old way of doing it:
public final int SPRING = 0;
public final int SUMMER = 1;
public final int FALL = 2;
public final int WINTER = 3;
New way of doing it:
enum <enumname>{}
Satyam Shrivastav
http://programmingpoints.blogspot.in/
13
14. Advantages
Enums provide compile-time type safety.
Enums provide a proper name space for the
enumerated type.
Enums are robust.
Enum printed values are informative
Because enums are objects, you can put them in
collections.
Because enums are classes, you can add fields and
methods.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
14
15. Inner Class
The class defined inside another class or interface is
called inner class
We can also create an interface in another class or
interface.
For example
class Example{
class Sample{}
}
class Example{
interface Sample{}
}
interface Example{
class Sample{}
}
Satyam Shrivastav
http://programmingpoints.blogspot.in/
15
16. Need of Inner Class
Inner class is used for creating an object logically
inside another object with clear separation of
properties region.
A inner class has access to the variables and methods
of the outer class, even if they are declared private.
Nested classes can be hidden from other classes in
the same package.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
16
17. Nested class (static inner class)
The inner class defined at class level with static
keyword is called static inner class.
Syntax:
Allowed Modifiers:
class Example{
static class A{}
}
private, protected, public, final, abstract, strictfp
Types of Members allowed:
* static variable * non-static variable
* static block * non-static block
* static method * non-static method
* main method * constructor
Satyam Shrivastav
http://programmingpoints.blogspot.in/
17
18. Inner class (non-static inner class)
The inner class defined at class level without static
keyword is called non-static inner class.
Syntax:
Allowed Modifiers:
private, protected, public, final, abstract, strictfp
Types of Members allowed:
* non-static variable
* non-static block
* non-static method
* constructor
class Example{
class A{}
}
Satyam Shrivastav
http://programmingpoints.blogspot.in/
18
19. Method Local class (local inner class)
The inner class defined inside a method of outer
class called method inner class.
Syntax:
Allowed Modifiers:
final, abstract, strictfp
Types of Members allowed:
* non-static variable
* non-static block
* non-static method
* constructor
class A{
void m1(){
class B{}
}
}
Satyam Shrivastav
http://programmingpoints.blogspot.in/
19
20. Anonymous class (argument inner class)
It is a nameless subclass of some other existed
class/interface.
Like other inner classes it is not individual class.
Using anonymous class we can do 3 things at a time-
1. Inner class creation as a subclass of outer class.
2. Overriding outer class method.
3. Creating and sending its object as argument or
return type to another method.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
20
21. Syntax:
new outerclassname(){
//overriding outer class methods
}
Allowed Modifiers:
no modifier is allowed
Types of Members allowed:
* non-static variables
* non-static blocks
* non-static methods
Satyam Shrivastav
http://programmingpoints.blogspot.in/
21
23. Cohesion
Defintion:-
Cohesion means that a certain class performs a set of
closely related actions. Cohesion focuses on how
single class is designed.
Types of Cohesion:-
High Cohesion
Low Cohesion
Satyam Shrivastav
http://programmingpoints.blogspot.in/
23
24. High cohesion:-
High cohesion is when you have a class that does a
well defined job.
Low cohesion:-
Low cohesion is when a class does a lot of jobs that
don't have much in common.
Higher the cohesiveness of the class, better is the OO
design.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
24
25. Example:-
You have a class that adds two numbers, but the
same class creates a window displaying the result.
This is a low cohesive class because the window
and the adding operation don't have much in
common.
The window is the visual part of the program and
the adding function is the logic behind it.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
25
26. What is Coupling?
Coupling:-
Coupling is the degree to which one class knows
about another class.
It refers to how related are two classes / modules
and how dependent they are on each other.
Types of Coupling:-
Tight coupling
Loose coupling
Satyam Shrivastav
http://programmingpoints.blogspot.in/
26
27. Tight coupling:-
Tight coupling is when a group of classes are
highly dependent on one another.
Loose coupling:-
Loose coupling would mean that changing
something major in one class should not affect the
other.
Generally, good OO design should be loosely
coupled and highly cohesive.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
27
28. What is Garbage Collection ?
Garbage collection is the process of identifying
which objects are in use and which are not, and
deleting the unused objects.
In Java, process of deallocating memory is handled
automatically by the garbage collector.
This enables faster development with less code,
eliminate memory leaks and other memory-related
problems.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
28
29. The ways to make an Object
eligible for GC:-
Even though the programmer is not responsible for
distruction of Object. It is a good programming
practice to make our object is eligible for the
Garbage Collection, if it is no longer required.
Nullifying the reference variable :-
Re-assigning the reference variable:-
The Object created inside a method… are by
default eligible for GC.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
29
30. When the Garbage Collector Runs?
The garbage collector is under the control of the JVM.
The JVM will typically run the garbage collector when it
senses that memory is running low.
User can request the JVM for garbage Collection
by Calling “System.gc()”.
User can rely on ‘System.gc()’ to free up enough memory
without worrying for running out of memory.
But the garbage collector will run before it throws an
OutOfMemoryException.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
30
31. Role of finalize() method in GC
Java has a mechanism to run some code just before
your object is deleted by the garbage collector.
This code is located in a method named finalize()
that all classes inherit from class Object.
For any given object, finalize() will be called only
once (at most) by the garbage collector.
Calling finalize() can actually result in saving an
object from deletion.
Satyam Shrivastav
http://programmingpoints.blogspot.in/
31