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

PPTX
Python/Flask Presentation
PDF
Exercice 1 java Héritage
PDF
MongoDB and Node.js
PPTX
Exceptions in Java
PDF
NodeJS for Beginner
PDF
A Basic Django Introduction
PPTX
Core java complete ppt(note)
PPT
Exception Handling in JAVA
Python/Flask Presentation
Exercice 1 java Héritage
MongoDB and Node.js
Exceptions in Java
NodeJS for Beginner
A Basic Django Introduction
Core java complete ppt(note)
Exception Handling in JAVA

What's hot (20)

PPTX
Java(Polymorphism)
PPT
JavaScript - An Introduction
PPTX
Exception handling in Java
PDF
cours developpement web javascript 2023/2024
PPTX
L14 exception handling
PDF
Cours JavaScript
PPTX
Introduction to numpy Session 1
PPTX
oops concept in java | object oriented programming in java
PPTX
Python-Polymorphism.pptx
PPTX
JAVA ENVIRONMENT
PDF
Asynchronous JavaScript Programming with Callbacks & Promises
PDF
Python programming : Classes objects
PDF
Java 8 Lambda Expressions
PDF
Trends and future of C++: Evolving a systems language for performance - by Bj...
PPTX
Introduction to Node.js
PPTX
Introduction Node.js
PPTX
Polymorphism in Python
PDF
PDF
Introduction à Python - Achraf Kacimi El Hassani
PPT
Java Streams
Java(Polymorphism)
JavaScript - An Introduction
Exception handling in Java
cours developpement web javascript 2023/2024
L14 exception handling
Cours JavaScript
Introduction to numpy Session 1
oops concept in java | object oriented programming in java
Python-Polymorphism.pptx
JAVA ENVIRONMENT
Asynchronous JavaScript Programming with Callbacks & Promises
Python programming : Classes objects
Java 8 Lambda Expressions
Trends and future of C++: Evolving a systems language for performance - by Bj...
Introduction to Node.js
Introduction Node.js
Polymorphism in Python
Introduction à Python - Achraf Kacimi El Hassani
Java Streams
Ad

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

PPTX
Java 102
PPTX
Java 102 intro to object-oriented programming in java
PDF
Big Java Early Objects 5th Edition Horstmann Solutions Manual
PPTX
Stop that!
PDF
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
PPTX
Overview of ECE Engineer
PPTX
Joy of scala
PPT
Inheritance & Polymorphism - 1
PPT
Ch02 primitive-data-definite-loops
PDF
Core Java Programming Language (JSE) : Chapter VI - Class Design
PDF
SOLID Java Code
PPTX
Object Oriented Programming Concepts
TXT
CORE JAVA
PDF
Built-in Classes in JAVA
PDF
Built in classes in java
PPTX
A Case Study on Java. Java Presentation
PPT
Java htp6e 09
PDF
Howto get input with java
PDF
Java Classes | Java Tutorial for Beginners | Java Classes and Objects | Java ...
PDF
Week 4
Java 102
Java 102 intro to object-oriented programming in java
Big Java Early Objects 5th Edition Horstmann Solutions Manual
Stop that!
"Java 8, Lambda e la programmazione funzionale" by Theodor Dumitrescu
Overview of ECE Engineer
Joy of scala
Inheritance & Polymorphism - 1
Ch02 primitive-data-definite-loops
Core Java Programming Language (JSE) : Chapter VI - Class Design
SOLID Java Code
Object Oriented Programming Concepts
CORE JAVA
Built-in Classes in JAVA
Built in classes in java
A Case Study on Java. Java Presentation
Java htp6e 09
Howto get input with java
Java Classes | Java Tutorial for Beginners | Java Classes and Objects | Java ...
Week 4
Ad

More from agorolabs (6)

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

Recently uploaded (20)

PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
medical staffing services at VALiNTRY
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
System and Network Administraation Chapter 3
PDF
Nekopoi APK 2025 free lastest update
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Introduction to Artificial Intelligence
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
System and Network Administration Chapter 2
PDF
Digital Strategies for Manufacturing Companies
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
How Creative Agencies Leverage Project Management Software.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Upgrade and Innovation Strategies for SAP ERP Customers
medical staffing services at VALiNTRY
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Adobe Illustrator 28.6 Crack My Vision of Vector Design
wealthsignaloriginal-com-DS-text-... (1).pdf
Design an Analysis of Algorithms II-SECS-1021-03
How to Migrate SBCGlobal Email to Yahoo Easily
System and Network Administraation Chapter 3
Nekopoi APK 2025 free lastest update
L1 - Introduction to python Backend.pptx
Introduction to Artificial Intelligence
Softaken Excel to vCard Converter Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Operating system designcfffgfgggggggvggggggggg
System and Network Administration Chapter 2
Digital Strategies for Manufacturing Companies
2025 Textile ERP Trends: SAP, Odoo & Oracle

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); } } }