SlideShare a Scribd company logo
Java 102: Intro to Object-oriented
Programming in Java
Hands-on Exercises
Hands-on Exercise
Creating Objects
Exercise: Creating Objects
• Create a new Java project named Java102
• Create a new package named exercise.carfactory
• Create a class named Car in the exercise.carfactory
package
• Add color, make and model properties to the Car class
• Create a java program named CarFactory (in same
package) that creates two instances of the class Car,
changes their colors to Blue and Pink and prints a message
to the console
• Run the class CarFactory and observe the message in the
Console.
Solution: Creating Objects
package exercise.creatingobjects;
public class Car {
String make;
String model;
String color;
}
package exercise.creatingobjects;
public class CarFactory {
public static void main(String[] args) {
Car firstCar = new Car();
Car secondCar = new Car();
firstCar.color = "Blue";
secondCar.color = "Pink";
System.out.println("Just finished painting new cars");
}
}
Car.java
CarFactory.java
Hands-on Exercise
Working with Methods
Exercise: Working with Methods
• What happens when you compile and run the
following code?
public class Cubes {
static int cube (int i){
int j = i * i * i;
return j;
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
for (int i=0 ;i<= N; i++) {
System.out.println(i + " " + cube(i));
}
}
}
Solution: Working with Methods
public class Cubes {
static int cube (int i){
int j = i * i * i;
return j;
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
for (int i=0 ;i<= N; i++) {
System.out.println(i + " " + cube(i));
}
}
}
% java Cubes 6
0 0
1 1
2 8
3 27
4 64
5 125
6 216
Hands-on Exercise
Method Overloading
Exercise : Method Overloading
• Create a new package named exercise.methodoverloading
• Create a BasicRateTax class with a method calcTax() that returns 20% of a fixed
base income of £1000
• Create a java program named TaxCollector that creates a new BasicRateTax object,
calls the calcTax() method and prints the output to the console
• Run the TaxCollector program and ensure it always prints 200.00 as calculated tax
• Add new calcTax() method to BasicRateTax class that takes a double grossIncome
parameter and calculates the tax as 20% of the grossIncome if it’s greater than the
base income of £1000
• Change the TaxCollector program to call the new calcTax(double grossIncome)
method and passing the gross Income value from the command line
• Run the TaxCollector program and see if the tax is correctly calculated.
• Re-run the program with different Gross Income values and check the output
Solution: Method Overloading
package exercise.methodoverloading;
public class BasicRateTax {
private static final double BASE_INCOME = 1000.00;
private static final double BASIC_TAX_RATE = 0.20;
public double calcTax (){
return BASE_INCOME * BASIC_TAX_RATE;
}
public double calcTax(double grossIncome){
if (grossIncome < BASE_INCOME){
return calcTax();
}
return grossIncome * BASIC_TAX_RATE;
}
}
Solution: Method Overloading
package exercise.methodoverloading;
public class TaxCollector {
public static void main(String[] args) {
double grossIncome = Double.parseDouble(args[0]);
BasicRateTax taxCalculator = new BasicRateTax();
double tax = taxCalculator.calcTax(grossIncome);
System.out.println("Tax due is " + tax);
}
}
% java TaxCollector 2000
Tax due is 400.0
% java TaxCollector 10000
Tax due is 2000.0
Hands-on Exercise
Inheritance
Exercise: Inheritance
• Create a new package named exercise.inheritance
• Create a class named HigherRateTax in the exercise.inheritance package that
extends BasicRateTax and add an empty calcTax(double grossIncome) method
• Add the code to HigherRateTax.calcTax(double grossIncome) method to calculate
the tax as follows:
– 20% of grossIncome if up to £34,000 (hint: reuse the BasicRateTax.calcTax(double
grossIncom) method)
– 40% of grossIncome if above £34,000 but less than £150,000
– 50% of grossIncome if £150,000 or above
• Run the existing TaxCollector program with some large gross income amounts and
observe that your changes didn’t have any effect on the calculate tax. Why?
• Change the code of the TaxCollector to instantiate HigherRateTax instead of
BasicRateTax
• Run the TaxCollector program again and observe that now the new percentage is
properly applied. You are now using the overridden version of the method
calcTax().
Solution: Inheritance
package exercise.inheritance;
import exercise.methodoverloading.BasicRateTax;
public class HigherRateTax extends BasicRateTax {
public double calcTax(double grossIncome){
double tax = 0.0;
if (grossIncome <=34000.00){
tax = super.calcTax(grossIncome);
}else if (grossIncome > 34000 && grossIncome <=150000) {
tax = grossIncome * 0.40;
}else if (grossIncome > 150000){
tax = grossIncome * 0.50;
}
return tax;
}
}
Solution: Inheritance
package exercise.methodoverloading;
import exercise.inheritance.HigherRateTax;
public class TaxCollector {
public static void main(String[] args) {
double grossIncome = Double.parseDouble(args[0]);
BasicRateTax taxCalculator = new HigherRateTax ();
double tax = taxCalculator.calcTax(grossIncome);
System.out.println("Tax due is " + tax);
}
}
% java TaxCollector 51000
Tax due is 20400.0
% java TaxCollector 32000
Tax due is 6400.0
% java TaxCollector 155000
Tax due is 77500.0
Hands-on Exercise
Using a Java Library
Exercise: Using Libraries
• Create a new package named exercise.libraryclient
• Create a class named CardDealer with an empty
deal() method that takes no arguments and returns
a String
• Implement the card dealer to use the StdRandom
library to deal playing cards ramdomly from an
infinite deck of cards
• Create a CardDealerTest program to test the
CardDealer class
Exercise: Using the StdRandom Library
public class CardDealer {
private static final String[] SUITES = { "D", "H", "C", "S"
};
private static final int TOTAL_CARDS_PER_SUITE = 13;
public String deal() {
// select a random suite
String suite = SUITES[StdRandom.uniform(SUITES.length)];
// select a random rank
int rank = StdRandom.uniform (TOTAL_CARDS_PER_SUITE ) +
1;
String card = rank + suite;
// return the dealt card
return card;
}
}
Testing the CardDealer Program
public class CardDealerTest {
public static void main(String[] args) {
CardDealer dealer = new CardDealer();
for (int i=0;i<5;i++){
String card = dealer.deal();
System.out.println( “ Card “ + i + “ is “ + card);
}
}
}

More Related Content

PDF
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
Syahriha Ruslan
 
PPTX
Strings in Java
Abhilash Nair
 
PDF
Cours c#
zan
 
PPT
Core java concepts
Ram132
 
PDF
Cours php -partie 1.pdf
ssuserc46a93
 
DOCX
Python - Regular Expressions
Mukesh Tekwani
 
DOC
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Hazrat Bilal
 
PDF
Ejercicios de XSD
Abrirllave
 
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
Syahriha Ruslan
 
Strings in Java
Abhilash Nair
 
Cours c#
zan
 
Core java concepts
Ram132
 
Cours php -partie 1.pdf
ssuserc46a93
 
Python - Regular Expressions
Mukesh Tekwani
 
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Hazrat Bilal
 
Ejercicios de XSD
Abrirllave
 

What's hot (20)

PPTX
Type casting in java
Farooq Baloch
 
PPT
OOP V3.1
Sunil OS
 
PDF
Assignment for Factory Method Design Pattern in C# [ANSWERS]
Kasun Ranga Wijeweera
 
PPT
Chapter 13 - Recursion
Adan Hubahib
 
PPT
Java Basics V3
Sunil OS
 
PPTX
Programming in c Arrays
janani thirupathi
 
PDF
VTU DSA Lab Manual
AkhilaaReddy
 
PPT
Unit 5.ppt
JITTAYASHWANTHREDDY
 
PDF
Cours php
Narûtö Bàl'Sèm
 
PPT
Jsp/Servlet
Sunil OS
 
PPT
Chapter 02 php basic syntax
Dhani Ahmad
 
PDF
Let us c chapter 4 solution
rohit kumar
 
PDF
SQL practice questions set
Mohd Tousif
 
DOCX
Data Structures Using C Practical File
Rahul Chugh
 
PPTX
Structures in c programming
Kousalya M
 
PPT
Recursion in c
Saket Pathak
 
PPT
Inheritance C#
Raghuveer Guthikonda
 
PDF
第2章 數位資料表示法
Seng Chi Ao
 
PPTX
Interface in java ,multiple inheritance in java, interface implementation
HoneyChintal
 
PPTX
Compiler design lab
ilias ahmed
 
Type casting in java
Farooq Baloch
 
OOP V3.1
Sunil OS
 
Assignment for Factory Method Design Pattern in C# [ANSWERS]
Kasun Ranga Wijeweera
 
Chapter 13 - Recursion
Adan Hubahib
 
Java Basics V3
Sunil OS
 
Programming in c Arrays
janani thirupathi
 
VTU DSA Lab Manual
AkhilaaReddy
 
Jsp/Servlet
Sunil OS
 
Chapter 02 php basic syntax
Dhani Ahmad
 
Let us c chapter 4 solution
rohit kumar
 
SQL practice questions set
Mohd Tousif
 
Data Structures Using C Practical File
Rahul Chugh
 
Structures in c programming
Kousalya M
 
Recursion in c
Saket Pathak
 
Inheritance C#
Raghuveer Guthikonda
 
第2章 數位資料表示法
Seng Chi Ao
 
Interface in java ,multiple inheritance in java, interface implementation
HoneyChintal
 
Compiler design lab
ilias ahmed
 
Ad

Similar to Java 102 intro to object-oriented programming in java - exercises (20)

PPTX
Java 102
Manuela Grindei
 
PPTX
Java 102 intro to object-oriented programming in java
agorolabs
 
PDF
Big Java Early Objects 5th Edition Horstmann Solutions Manual
budmarumbet
 
PPTX
Stop that!
Doug Sparling
 
PDF
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
ThinkOpen
 
PPTX
Overview of ECE Engineer
piyushkumar979747
 
PPTX
Joy of scala
Maxim Novak
 
PPT
Inheritance & Polymorphism - 1
PRN USM
 
PPT
Ch02 primitive-data-definite-loops
James Brotsos
 
PDF
Core Java Programming Language (JSE) : Chapter VI - Class Design
WebStackAcademy
 
PDF
SOLID Java Code
Omar Bashir
 
PPTX
Object Oriented Programming Concepts
Bhushan Nagaraj
 
TXT
CORE JAVA
Shohan Ahmed
 
PDF
Built-in Classes in JAVA
Mahmoud Ali Ibrahim
 
PDF
Built in classes in java
Mahmoud Ali
 
PPTX
A Case Study on Java. Java Presentation
Ayush Gupta
 
PPT
Java htp6e 09
Ayesha ch
 
PDF
Howto get input with java
Syed Faizan Hassan
 
PDF
Java Classes | Java Tutorial for Beginners | Java Classes and Objects | Java ...
Edureka!
 
PDF
Week 4
EasyStudy3
 
Java 102
Manuela Grindei
 
Java 102 intro to object-oriented programming in java
agorolabs
 
Big Java Early Objects 5th Edition Horstmann Solutions Manual
budmarumbet
 
Stop that!
Doug Sparling
 
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
ThinkOpen
 
Overview of ECE Engineer
piyushkumar979747
 
Joy of scala
Maxim Novak
 
Inheritance & Polymorphism - 1
PRN USM
 
Ch02 primitive-data-definite-loops
James Brotsos
 
Core Java Programming Language (JSE) : Chapter VI - Class Design
WebStackAcademy
 
SOLID Java Code
Omar Bashir
 
Object Oriented Programming Concepts
Bhushan Nagaraj
 
CORE JAVA
Shohan Ahmed
 
Built-in Classes in JAVA
Mahmoud Ali Ibrahim
 
Built in classes in java
Mahmoud Ali
 
A Case Study on Java. Java Presentation
Ayush Gupta
 
Java htp6e 09
Ayesha ch
 
Howto get input with java
Syed Faizan Hassan
 
Java Classes | Java Tutorial for Beginners | Java Classes and Objects | Java ...
Edureka!
 
Week 4
EasyStudy3
 
Ad

More from agorolabs (6)

PDF
Introduction to Agile
agorolabs
 
PPTX
Computer Programming Overview
agorolabs
 
PPTX
Java 101 Intro to Java Programming - Exercises
agorolabs
 
PPTX
Java 201 Intro to Test Driven Development in Java
agorolabs
 
PPTX
Java 103 intro to java data structures
agorolabs
 
PPTX
Java 101 Intro to Java Programming
agorolabs
 
Introduction to Agile
agorolabs
 
Computer Programming Overview
agorolabs
 
Java 101 Intro to Java Programming - Exercises
agorolabs
 
Java 201 Intro to Test Driven Development in Java
agorolabs
 
Java 103 intro to java data structures
agorolabs
 
Java 101 Intro to Java Programming
agorolabs
 

Recently uploaded (20)

PDF
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
PDF
Wondershare Filmora 14.5.20.12999 Crack Full New Version 2025
gsgssg2211
 
PDF
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
PDF
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
PPTX
Presentation of Computer CLASS 2 .pptx
darshilchaudhary558
 
PPT
Order to Cash Lifecycle Overview R12 .ppt
nbvreddy229
 
PPTX
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 
PDF
A REACT POMODORO TIMER WEB APPLICATION.pdf
Michael624841
 
PPTX
Explanation about Structures in C language.pptx
Veeral Rathod
 
PPTX
oapresentation.pptx
mehatdhavalrajubhai
 
PDF
Appium Automation Testing Tutorial PDF: Learn Mobile Testing in 7 Days
jamescantor38
 
PDF
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
PDF
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
PPTX
Role Of Python In Programing Language.pptx
jaykoshti048
 
PDF
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
PDF
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
NSIQINFOTECH
 
PDF
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
Wondershare Filmora 14.5.20.12999 Crack Full New Version 2025
gsgssg2211
 
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
Presentation of Computer CLASS 2 .pptx
darshilchaudhary558
 
Order to Cash Lifecycle Overview R12 .ppt
nbvreddy229
 
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 
A REACT POMODORO TIMER WEB APPLICATION.pdf
Michael624841
 
Explanation about Structures in C language.pptx
Veeral Rathod
 
oapresentation.pptx
mehatdhavalrajubhai
 
Appium Automation Testing Tutorial PDF: Learn Mobile Testing in 7 Days
jamescantor38
 
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
Role Of Python In Programing Language.pptx
jaykoshti048
 
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
NSIQINFOTECH
 
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 

Java 102 intro to object-oriented programming in java - exercises

  • 1. Java 102: Intro to Object-oriented Programming in Java Hands-on Exercises
  • 3. Exercise: Creating Objects • Create a new Java project named Java102 • Create a new package named exercise.carfactory • Create a class named Car in the exercise.carfactory package • Add color, make and model properties to the Car class • Create a java program named CarFactory (in same package) that creates two instances of the class Car, changes their colors to Blue and Pink and prints a message to the console • Run the class CarFactory and observe the message in the Console.
  • 4. Solution: Creating Objects package exercise.creatingobjects; public class Car { String make; String model; String color; } package exercise.creatingobjects; public class CarFactory { public static void main(String[] args) { Car firstCar = new Car(); Car secondCar = new Car(); firstCar.color = "Blue"; secondCar.color = "Pink"; System.out.println("Just finished painting new cars"); } } Car.java CarFactory.java
  • 6. Exercise: Working with Methods • What happens when you compile and run the following code? public class Cubes { static int cube (int i){ int j = i * i * i; return j; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); for (int i=0 ;i<= N; i++) { System.out.println(i + " " + cube(i)); } } }
  • 7. Solution: Working with Methods public class Cubes { static int cube (int i){ int j = i * i * i; return j; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); for (int i=0 ;i<= N; i++) { System.out.println(i + " " + cube(i)); } } } % java Cubes 6 0 0 1 1 2 8 3 27 4 64 5 125 6 216
  • 9. Exercise : Method Overloading • Create a new package named exercise.methodoverloading • Create a BasicRateTax class with a method calcTax() that returns 20% of a fixed base income of £1000 • Create a java program named TaxCollector that creates a new BasicRateTax object, calls the calcTax() method and prints the output to the console • Run the TaxCollector program and ensure it always prints 200.00 as calculated tax • Add new calcTax() method to BasicRateTax class that takes a double grossIncome parameter and calculates the tax as 20% of the grossIncome if it’s greater than the base income of £1000 • Change the TaxCollector program to call the new calcTax(double grossIncome) method and passing the gross Income value from the command line • Run the TaxCollector program and see if the tax is correctly calculated. • Re-run the program with different Gross Income values and check the output
  • 10. Solution: Method Overloading package exercise.methodoverloading; public class BasicRateTax { private static final double BASE_INCOME = 1000.00; private static final double BASIC_TAX_RATE = 0.20; public double calcTax (){ return BASE_INCOME * BASIC_TAX_RATE; } public double calcTax(double grossIncome){ if (grossIncome < BASE_INCOME){ return calcTax(); } return grossIncome * BASIC_TAX_RATE; } }
  • 11. Solution: Method Overloading package exercise.methodoverloading; public class TaxCollector { public static void main(String[] args) { double grossIncome = Double.parseDouble(args[0]); BasicRateTax taxCalculator = new BasicRateTax(); double tax = taxCalculator.calcTax(grossIncome); System.out.println("Tax due is " + tax); } } % java TaxCollector 2000 Tax due is 400.0 % java TaxCollector 10000 Tax due is 2000.0
  • 13. Exercise: Inheritance • Create a new package named exercise.inheritance • Create a class named HigherRateTax in the exercise.inheritance package that extends BasicRateTax and add an empty calcTax(double grossIncome) method • Add the code to HigherRateTax.calcTax(double grossIncome) method to calculate the tax as follows: – 20% of grossIncome if up to £34,000 (hint: reuse the BasicRateTax.calcTax(double grossIncom) method) – 40% of grossIncome if above £34,000 but less than £150,000 – 50% of grossIncome if £150,000 or above • Run the existing TaxCollector program with some large gross income amounts and observe that your changes didn’t have any effect on the calculate tax. Why? • Change the code of the TaxCollector to instantiate HigherRateTax instead of BasicRateTax • Run the TaxCollector program again and observe that now the new percentage is properly applied. You are now using the overridden version of the method calcTax().
  • 14. Solution: Inheritance package exercise.inheritance; import exercise.methodoverloading.BasicRateTax; public class HigherRateTax extends BasicRateTax { public double calcTax(double grossIncome){ double tax = 0.0; if (grossIncome <=34000.00){ tax = super.calcTax(grossIncome); }else if (grossIncome > 34000 && grossIncome <=150000) { tax = grossIncome * 0.40; }else if (grossIncome > 150000){ tax = grossIncome * 0.50; } return tax; } }
  • 15. Solution: Inheritance package exercise.methodoverloading; import exercise.inheritance.HigherRateTax; public class TaxCollector { public static void main(String[] args) { double grossIncome = Double.parseDouble(args[0]); BasicRateTax taxCalculator = new HigherRateTax (); double tax = taxCalculator.calcTax(grossIncome); System.out.println("Tax due is " + tax); } } % java TaxCollector 51000 Tax due is 20400.0 % java TaxCollector 32000 Tax due is 6400.0 % java TaxCollector 155000 Tax due is 77500.0
  • 17. Exercise: Using Libraries • Create a new package named exercise.libraryclient • Create a class named CardDealer with an empty deal() method that takes no arguments and returns a String • Implement the card dealer to use the StdRandom library to deal playing cards ramdomly from an infinite deck of cards • Create a CardDealerTest program to test the CardDealer class
  • 18. Exercise: Using the StdRandom Library public class CardDealer { private static final String[] SUITES = { "D", "H", "C", "S" }; private static final int TOTAL_CARDS_PER_SUITE = 13; public String deal() { // select a random suite String suite = SUITES[StdRandom.uniform(SUITES.length)]; // select a random rank int rank = StdRandom.uniform (TOTAL_CARDS_PER_SUITE ) + 1; String card = rank + suite; // return the dealt card return card; } }
  • 19. Testing the CardDealer Program public class CardDealerTest { public static void main(String[] args) { CardDealer dealer = new CardDealer(); for (int i=0;i<5;i++){ String card = dealer.deal(); System.out.println( “ Card “ + i + “ is “ + card); } } }