0% found this document useful (0 votes)
56 views19 pages

Javaact 4,5,6 N 7

Encapsulation in Java bundles code and data together, such as wrapping related variables and methods inside a class. This provides benefits like data

Uploaded by

pompom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views19 pages

Javaact 4,5,6 N 7

Encapsulation in Java bundles code and data together, such as wrapping related variables and methods inside a class. This provides benefits like data

Uploaded by

pompom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

OBJECT ORIENTED PROGRAMMING and

DESIGN with JAVA

ACTIVITY-04

Questions:

1. Study and present how does bytecode work in java


a) Study and present how does bytecode work in java

What is Java Bytecode ?


Java bytecode is the instruction set for the Java Virtual Machine. It acts similar
to an assembler which is an alias representation of a C++ code. As soon as a
java program is compiled, java bytecode is generated. In more apt terms, java
bytecode is the machine code in the form of a .class file. With the help of java
bytecode we achieve platform independence in java.

How does it work ?


When we write a program in Java, firstly, the compiler compiles that program
and a bytecode is generated for that piece of code. When we wish to run this
.class file on any other platform, we can do so. After the first compilation, the
bytecode generated is now run by the Java Virtual Machine and not the
processor in consideration. This essentially means that we only need to have
basic java installation on any platforms that we want to run our code on.
Resources required to run the bytecode are made available by theJava Virtual
Machine, which calls the processor to allocate the required resources. JVM's
are stack-based so they stack implementation to read the codes.
Advantage of Java Bytecode
Platform independence is one of the sole reasons for which James Gosling
started the formation of java and it is this implementation of bytecode which
helps us to achieve this.
Hence bytecode is a very important component of any java program.The set
of instructions for the JVM may differ from system to system but all can
interpret the bytecode.
A point to keep in mind is that bytecodes are non-runnable codes and rely on
the availability of an interpreter to execute and thus the JVM comes into play.

Bytecode is essentially the machine level language which runs on the Java
Virtual Machine. Whenever a class is loaded, it gets a stream of bytecode per
method of the class. Whenever that method is called during the execution of a
program, the bytecode for that method gets invoked.Javac not only compiles
the program but also generates the bytecode for the program.

Thus, we have realised that the bytecode implementation makes Java a


platform-independent language. This helps to add portability to Java which is
lacking in languages like C or C++. Portability ensures that Java can be
implemented on a wide array of platforms like desktops, mobile devices,
servers and many more.

Supporting this, Sun Microsystems captioned JAVA as "write once, read


anywhere" or "WORA" in resonance to the bytecode interpretation.
OBJECT ORIENTED PROGRAMMING and
DESIGN with JAVA

ACTIVITY-05

Questions:

1. Present nesting of conditional and iterative statements


considering a use case
Conditional Statements

Conditional Statements come under Control Structures in Java. As the same


suggests, it controls the flow of the execution of the program. Controlling here
means branching, decision-making, and iterating.

Generally, there are 3 types of Control Structures in Java:

● Conditional Statements or Decisional Statements (if, if-else, switch)


● Iteration Statements or Loops (for, while, do-while, for-each)
● Jump Statements (break, continue, return)

Conditional Statements in Java


Conditional statements in Java are the executable block of code (or branch to
a specific code) dependent on certain conditions. These statements are also
known as decision statements or selection statements in Java.

Following are the statements covered under conditional statements in Java:

● If statement
● If else statement
● Switch Statement

Nested If-Else Statements

The nested if-else statements are statements that incorporate more than one
if-else clause.

Syntax

if (condition)
{
//Statements set 1
}
else if (condition 2)
{
//Statements set 2
}
...

else
{
//Statements to be executed if no condition is satisfied.
}

Example

class nested_if_else_condition {
public static void main(String[] args) {
double total_marks = 382;
char grade;
double perc = (total_marks/500)*100;
if (perc >= 80)
{
grade = 'A';
}
else if ((perc >=70) && (perc <80))
{
grade = 'B';
}
else if ((perc >=60) && (perc <70))
{
grade = 'c';
}
else
{
grade = 'D';
}
System.out.println("The percentage of the student is: " +perc);
System.out.println("\n The grade of the student is: " +grade);
}
}

Output
The percentage of the student: 76.4
The grade of the student is: B
Nested Loop

Nested loop means a loop statement inside another loop statement. That is
why nested loops are also called “loop inside loop“.

Java Nested for Loop

If we have a for loop inside another loop, it is known as nested for loop. The
inner loop executes completely whenever the outer loop executes.

Example

NestedForExample.java
1. public class NestedForExample {
2. public static void main(String[] args) {
3. //loop of i
4. for(int i=1;i<=3;i++){
5. //loop of j
6. for(int j=1;j<=3;j++){
7. System.out.println(i+" "+j);
8. }//end of i
9. }//end of j
10. }
11. }

Output

11
12
13
21
22
23
31
32
33
Nested while loop
When a while loop exists inside the body of another while loop, it is known as
a nested while loop in Java. Initially, the outer loop executes once and the
afterwards inner loop begins to execute. Execution of the inner loop continues
until the condition of the inner loop is satisfied(until the test expression is
false).
Once the Condition of the inner loop is satisfied, the flow of control comes out
to the outer loop for next iteration.

Example

class nestedwhile{
public static void main(String args[]){
int i=1,j=1;
while(i<=10)
{
while(j<=10)
{
System.out.print(j);
j++;
}
i++;
System.out.println("");
j=1;
}
}
}

Output

12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
Nested do-while Loop

one do-while loop inside another do-while loop is known as nested do -while
loop

Example

class NestedDoWhile{
public static void main(String args[]){
int row=1,column=1;
int x;
do{
x=4;
do{
System.out.print("");
x--;
}while(x>=row);
column=1;
do{
System.out.print(column+" ");
column++;

}while(column<=5);
System.out.println(" ");
row++;
}while (row<=5);
}

Output

12345
12345
12345
12345
12345
OBJECT ORIENTED PROGRAMMING and
DESIGN with JAVA

ACTIVITY-06

Questions:

1. Identify advantages and disadvantages of

a) Encapsulation

b) Inheritance

c) Abstraction

d) Polymorphism
a) Encapsulation in Java
Encapsulation in Java is a process of wrapping code and data together into a
single unit, for example, a capsule which is mixed with several medicines.
We can create a fully encapsulated class in Java by making all the data
members of the class private. Now we can use setter and getter methods to
set and get the data in it.
The Java Bean class is the example of a fully encapsulated class.

Advantages of Encapsulation

● Data Protection: The program runner will not be able to identify or see
which methods are present in the code. Therefore he/she doesn’t get
any chance to change any specific variable or data and hinder the
running of the program.

● Flexibility: The code which is encapsulated looks more cleaner and


flexible, and can be changed as per the needs. We can change the
code read-only or write-only by getter and setter methods. This also
helps in debugging the code if needed.

● Reusability: The methods can be changed and the code is reusable.

Disadvantages of Encapsulation
● Code Size:The length of the code increases drastically in the case of
encapsulation as we need to provide all the methods with the specifiers.

● More Instructions: As the size of the code increases, therefore, you


need to provide additional instructions for every method.

● Increased code execution: Encapsulation results in an increase in the


duration of the program execution. It is because more instructions are
added to the code therefore they require more time to execute.
b) Inheritance in Java
Inheritance in Java is a mechanism in which one object acquires all the
properties and behaviours of a parent object. It is an important part of OOPs
(Object Oriented programming system).
The idea behind inheritance in Java is that you can create new classes that
are built upon existing classes. When you inherit from an existing class, you
can reuse methods and fields of the parent class. Moreover, you can add new
methods and fields in your current class also.
Inheritance represents the IS-A relationship which is also known as a
parent-child relationship.

Advantages of Inheritance

● Minimising duplicate code: Key benefits of Inheritance include


minimising the identical code as it allows sharing of the common code
among other subclasses.

● Flexibility: Inheritance makes the code flexible to change, as you will


adjust only in one place, and the rest of the code will work smoothly.

● Overriding: With the help of Inheritance, you can override the methods
of the base class.

● Data Hiding: The base class in Inheritance decides which data to be


kept private, such that the derived class will not be able to alter it.

Disadvantages of Inheritance

● No Independence: One of the main disadvantages of Inheritance in


Java is that two classes, both the base and inherited class, get tightly
bound by each other. In simple terms, Programmers can not use these
classes independently of each other.

● Decreases Execution Speed: Another con of Inheritance is that it


decreases the execution speed because Inheritance execution takes
time and effort.

● Refactoring the Code: If the user deletes the Super Class, then they
have to refactor it if they have used it.
c) Abstraction in Java

Abstraction is a process of hiding the implementation details and showing only


functionality to the user.

Data Abstraction is the property by virtue of which only the essential details
are displayed to the user. The trivial or the non-essential units are not
displayed to the user. Ex: A car is viewed as a car rather than its individual
components.

Advantages of Abstraction

● It reduces the complexity of viewing things.

● Avoids code duplication and increases reusability.

● Helps to increase the security of an application or program as only


essential details are provided to the user.

● It improves the maintainability of the application.

● It improves the modularity of the application.

Disadvantages of Abstraction in Java:

● Abstraction can make it more difficult to understand how the system


works.

● It can lead to increased complexity, especially if not used properly.

● May limit the flexibility of the implementation.

● Abstraction can add unnecessary complexity to code if not used


appropriately, leading to increased development time and effort.

● Abstraction can make it harder to debug and understand code,


particularly for those unfamiliar with the abstraction layers and
implementation details
d) Polymorphism in Java

The word polymorphism means having many forms. In simple words, we can
define polymorphism as the ability of a message to be displayed in more than
one form.Polymorphism allows us to perform a single action in different ways.

Advantages of Polymorphism in Java

● Increases code reusability by allowing objects of different classes to be


treated as objects of a common class.

● Improves readability and maintainability of code by reducing the amount


of code that needs to be written and maintained.

● Supports dynamic binding, enabling the correct method to be called at


runtime, based on the actual class of the object.

● Enables objects to be treated as a single type, making it easier to write


generic code that can handle objects of different types.

Disadvantages of Polymorphism in Java:

● Can make it more difficult to understand the behaviour of an object,


especially if the code is complex.

● May lead to performance issues, as polymorphic behaviour may require


additional computations at runtime.
OBJECT ORIENTED PROGRAMMING and
DESIGN with JAVA

ACTIVITY-07

Questions:

1. Study and report

a) java Arrays class their methods

b) java String class their methods


a) java Arrays class and their methods

The Arrays class in the java.util package is a part of the Java Collection
Framework. This class provides static methods to dynamically create and
access Java arrays. It consists of only static methods and the methods of
Object class. The methods of this class can be used by the class name itself.

Methods in Java Array Class

The Arrays class of the java.util package contains several static methods that
can be used to fill, sort, search, etc in arrays.

Methods Action Performed

Returns a fixed-size list backed by the specified


asList()
Arrays

Searches for the specified element in the array


binarySearch()
with the help of the Binary Search Algorithm

Searches a range of the specified array for the


binarySearch(array, fromIndex,
specified object using the Binary Search
toIndex, key, Comparator)
Algorithm

Compares two arrays passed as parameters


compare(array 1, array 2)
lexicographically.

Copies the specified array, truncating or padding


copyOf(originalArray,
with the default value (if necessary) so the copy
newLength)
has the specified length.

copyOfRange(originalArray, Copies the specified range of the specified array


fromIndex, endIndex) into new Arrays.

deepEquals(Object[] a1, Object[] Returns true if the two specified arrays are
a2) deeply equal to one another.
Returns a hash code based on the “deep
deepHashCode(Object[] a)
contents” of the specified Arrays.

Returns a string representation of the “deep


deepToString(Object[] a)
contents” of the specified Arrays.

equals(array1, array2) Checks if both the arrays are equal or not.

fill(originalArray, fillValue) Assigns this fill value to each index of this arrays.

Returns an integer hashCode of this array


hashCode(originalArray)
instance.

Finds and returns the index of the first


mismatch(array1, array2) unmatched element between the two specified
arrays.

parallelPrefix(originalArray,
Performs parallelPrefix for the given range of the
fromIndex, endIndex,
array with the specified functional operator.
functionalOperator)

parallelPrefix(originalArray, Performs parallelPrefix for complete array with


operator) the specified functional operator.

parallelSetAll(originalArray, Sets all the elements of this array in parallel,


functionalGenerator) using the provided generator function.

parallelSort(originalArray) Sorts the specified array using parallel sort.

setAll(originalArray, Sets all the elements of the specified array using


functionalGenerator) the generator function provided.
rt(originalArray) Sorts the complete array in ascending order.

sort(originalArray, fromIndex, Sorts the specified range of array in ascending


endIndex) order.

sort(T[] a, int fromIndex, int Sorts the specified range of the specified array of
toIndex, Comparator< super T> objects according to the order induced by the
c) specified comparator.

sort(T[] a, Comparator< super Sorts the specified array of objects according to


T> c) the order induced by the specified comparator.

Returns a Spliterator covering all of the specified


spliterator(originalArray)
Arrays.

Returns a Spliterator of the type of the array


spliterator(originalArray,
covering the specified range of the specified
fromIndex, endIndex)
arrays.

Returns a sequential stream with the specified


stream(originalArray)
array as its source.

It returns a string representation of the contents


of this array. The string representation consists of
a list of the array’s elements, enclosed in square
toString(originalArray) brackets (“[]”). Adjacent elements are separated
by the characters a comma followed by a space.
Elements are converted to strings as by
String.valueOf() function.
b) java String class and their methods

A String Array is an Array of a fixed number of String values. A String is a


sequence of characters. Generally, a string is an immutable object, which
means the value of the string can not be changed. The String Array works
similarly to other data types of Array.

Method Description

length Returns the number of elements in the array.

toString Returns a string representation of the array.

equals Compares two arrays for equality.

clone Returns a copy of the array.

copyOf Returns a copy of the array with a specified length.

copyOfRange Returns a copy of a range of elements in the array.

sort Sorts the elements in the array in ascending order.

Searches the array for a specified value using a binary search


binarySearch
algorithm.

fill Fills the array with a specified value.

Returns a List object containing the elements of the array.


asList

You might also like