Professional Documents
Culture Documents
Lab Manual
CPCS203 Programming II
(Object-oriented)
1432/1433H
Lab - 6
Learning Procedure
1) 2) 3) 4)
Stage J (Journey inside-out the concept) Stage a1 (apply the learned) Stage v (verify the accuracy) Stage a2 (assess your work)
Term I 2011
Laboratory 6:
Statement Purpose:
This lab will give you practical implementation of different types of Repetition Statements (loops) and defining custom class in java.
Activity Outcomes:
This lab teaches you the following topics: Implement repetition control in a program using (while, do while, for loop structure) and break statement. Nest a loop repetition statement inside another repetition statement. Describe how the reserved word this is used Define overloaded methods and constructors Describe how the arguments are passed to the parameters using the pass-by-value scheme.
Instructor Note:
As pre-lab activity, read Chapter 6 and 7 from the book (An Introduction to Object-Oriented Programming with Java, 4th Edition by C. THOMAS WU (Books website www.mhhe.com/wu), and also as given by your theory instructor.
Names I.D.
...
Lab-6
Term I 2011
Solution:
A. Create Java Main Class and named it PalindromeNumberExample B. Copy the Code and test it by running the application
public class PalindromeNumberExample { public static void main(String[] args) { //int number = use scanner to read the number from user int number=7887; int numbertemp=number; int reversedNumber = 0; int temp=0; while (numbertemp > 0){ CPCS203 The Lab Note Lab-6
2
Term I 2011
temp = numbertemp % 10; numbertemp = numbertemp / 10; reversedNumber = reversedNumber * 10 + temp; } // to check if the number is palindrome or not if (number == reversedNumber) System.out.println(number + " is a palindrome number"); else System.out.println(number + " is not a palindrome number"); } }
Activity 2:
Example shows how to generate pyramid or triangle like given below using for loop based on the given size of pyramid. 1 12 123 1234 12345
Solution:
A. Create Java Main Class and named it JavaPyramid1 B. Copy the Code and test it by running the application
public class JavaPyramid1 { public static void main(String[] args) { for(int i=1; i<= 5 ;i++){ for(int j=0; j < i; j++){ System.out.print(j+1); } System.out.println(""); } } }
Break is often used in terminating for loop but it can also be used for terminating other loops as well such as while, do while etc. . Break is a tool inside Java branching category.
Lab-6
Term I 2011
Activity 3:
The example below, how to terminate the while loop is demonstrated. In the program we breaking while loop when the user enter choice ==stop and value0 == true.
import javax.swing.JOptionPane; public class Java_Break_While { public static void main(String args[]) { String str = "stop", choice = "", strb = ""; boolean value = true; String value0 = "true"; while (value) { choice = JOptionPane.showInputDialog(null, "Type 'stop'", "Input box ", 1); strb = JOptionPane.showInputDialog(null, "Type boolean 'true'", "Input box ", 1); if(choice.equals(str) && strb.equals(value0)){ JOptionPane.showMessageDialog(null, "Well ! now you have break the \n\t\twhile loop \n\t\tSuccessfully", "Congrats ", 1); break ; } else JOptionPane.showMessageDialog(null, "Type correct value", "Alert ", 1); } } }
Activity 4:
Practical Learning: Passing Arguments 1. Start NetBeans 2. Create a New Project as a Java Application and name it Geometry2 3. In the Projects window, under Geometry2, expand Sources Packages if necessary. To create a new class, under the Geometry2 folder, right-click the Geometry2 sub-folder -> New -> Java Class... 4. Set the Name to Cylinder and click Finish Change the file as follows:
CPCS203 The Lab Note Lab-6
4
Term I 2011
package geometry2; import java.util.Scanner; public class Cylinder { double specifyRadius() { double rad; Scanner scnr = new Scanner(System.in); System.out.print("Radius: "); rad = scnr.nextDouble(); return rad; } double specifyHeight() { double h; Scanner scnr = new Scanner(System.in); System.out.print("Height: "); h = scnr.nextDouble(); return h; } double calculatebaseArea(double rad) { return rad * rad * 3.14159; } double calculateLateralArea(double rad, double hgt) { return 2 * 3.14159 * rad * hgt; } double calculateTotalArea(double rad, double hgt) { return 2 * 3.14159 * rad * (hgt + rad); } double calculateVolume(double rad, double hgt) { return 3.14159 * rad * rad * hgt; } void process() { double radius; double height; double baseArea; double lateralArea; double totalArea; double volume; System.out.println("Enter the dimensions of the cylinder"); radius = specifyRadius(); height = specifyHeight(); CPCS203 The Lab Note Lab-6
5
Term I 2011
Lab-6: Repetition Statements baseArea = calculatebaseArea(radius); lateralArea = calculateLateralArea(radius, height); totalArea = calculateTotalArea(radius, height); volume = calculateVolume(radius, height); System.out.println("\nCylinder Characteristics"); System.out.printf("Radius: %g\n", radius); System.out.printf("Height: %g\n", height); System.out.printf("Base: %f\n", baseArea); System.out.printf("Lateral: %f\n", lateralArea); System.out.printf("Total: %f\n", totalArea); System.out.printf("Volume: %f\n", volume); }
6. Execute the application to test it. Here is an example: Enter the dimensions of the cylinder Radius: 35.95 Height: 30.25 Cylinder Radius: Height: Base: Lateral: Total: Volume: Characteristics 35.9500 30.2500 4060.198770 6832.879710 14953.277250 122821.012792
Lab-6
Term I 2011
Activity 5:
Method Overloading In Java it is possible to define two or more methods within the same class that share the same name, as long as their parameter declarations are different. When this is the case, the methods are said to be overloaded, and the process is referred to as method overloading. // the following example demonstrate the method overloading in OOP (Java). Step 1: Create a java class and name it OverloadDemo
class OverloadDemo { void test() { System.out.println("No parameters"); } // Overload test for one integer parameter. void test(int a) { System.out.println("a: " + a); } // Overload test for two integer parameters. void test(int a, int b) { System.out.println("a and b: " + a + " " + b); } // overload test for a double parameter double test(double a) { System.out.println("double a: " + a); return a*a; } }
Term I 2011
As you can see, test( ) is overloaded four times. The first version takes no parameters, the second takes one integer parameter, the third takes two integer parameters, and the fourth takes one double parameter. The fact that the fourth version of test( ) also returns a value is of no consequence relative to overloading, since return types do not play a role in overload resolution. When an overloaded method is called, Java looks for a match between the arguments used to call the method and the method's parameters.
Activity 6:
Using the this Keyword:
The most common reason for using the this keyword is because a field is
shadowed by a method or constructor parameter.
You can also use the this keyword to call another constructor in the
same class. // the following example demonstrate the use of this and constructor overloading in OOP (Java). Step 1: Create a java class and name it Rectangle
class Rectangle{ int x,y,width,height; public Rectangle() { this(0, 0, 0, 0); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } CPCS203 The Lab Note Lab-6
8
Term I 2011
void show(int width, int height){ this.width = width; this.height = height; } int calculate(){ return(width*height); } }
" +
2. (Printing numbers in a pyramid pattern) Write a nested for loop that prints the following output:
Lab-6
Term I 2011
1 1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 16 8 4 2 1 1 2 4 8 16 32 16 8 4 2 1 1 2 4 8 16 32 64 32 16 8 4 2 1 1 2 4 8 16 32 64 128 64 32 16 8 4 2 1 3. Write a Java program to generate Fibonacci Series like given below using loop up to given number by user. If user enter number = 20, your output must be Fibonacci Series upto 20 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 [Hint: add the last two number in the series to get new number of the series] 4. Write a program that prompts the user to enter the number of students and each student's name and score, and finally displays the student with the highest score. 5. Write a program that displays all the numbers from 100 to 1000, ten per line, that are divisible by 5 and 6. 6. Complete the first four constructors of the following class. Each of the four constructors calls the fifth one by using the reserved word this.
Class Cat{ private static final String DEFAULT_NAME = "No Name"; private static final int DEFAULT_HGT = 6; private static final double DEFAULT_WGT = 10.0; private String name; private int height; private double weight; public Cat() { // assign defaults to all data members } public Cat(String name) { // assign the passed name to the data member // use defaults for height and weight } public Cat(String name, int height) { // assign the passed name to the name and height // use defaults for weight CPCS203 The Lab Note Lab-6
10
Term I 2011
public Cat(String name, double weight) { // assign the passed name to the name and weight // use defaults for height } public Cat(String name, int height, double weight) { this.name = name; this.height = height; this.weight = weight; } }
Activity 7:
1. Start a new Java Application named MomentOfInertia1
11
Term I 2011
Lab-6: Repetition Statements double base, height; Scanner scnr = new Scanner(System.in);
System.out.println("Enter the dimensions of the Rectangle"); System.out.print("Base: "); base = scnr.nextDouble(); System.out.print("Height: "); height = scnr.nextDouble(); System.out.println("\nMoment of inertia with " + "regard to the X axis: "); System.out.printf("I = %.2fmm", calculateMomentOfInertia(base, height)); } }
3. Execute the application. Here is an example of running the program: Enter the dimensions of the Rectangle Base: 2.44 Height: 3.58 Moment of inertia with regard to the X axis: I = 37.317939mm
Activity 8:
1. A circle, and thus a semi-circle, requires only a radius. Since the other version of the calculateMomentOfInertia() function requires two arguments, we can overload it by providing only one argument, the radius. To overload the above calculateMomentOfInertia() method, type the following in the file:
12
Term I 2011
public class Main { // Rectangle static double calculateMomentOfInertia(double b, double h) { return b * h * h * h / 3; } // Semi-Circle static double calculateMomentOfInertia(double R) { final double PI = 3.14159; return R * R * R * R * PI/ 8; } static void main(String[] args) { double radius; double base, height; Scanner scnr = new Scanner(System.in); System.out.println("Enter the dimensions of the Rectangle"); System.out.print("Base: "); base = scnr.nextDouble(); System.out.print("Height: "); height = scnr.nextDouble(); System.out.println("\nMoment of inertia with " + "regard to the X axis: "); System.out.printf("I = %fmm", calculateMomentOfInertia(base, height)); System.out.print("\nEnter the radius: "); radius = scnr.nextDouble(); System.out.println("Moment of inertia of a semi-circle " + "with regard to the X axis: "); System.out.printf("I = %fmm", calculateMomentOfInertia(radius)); } }
Lab-6
13
Term I 2011
Lab Homework:
The laboratory homework of this lab (and also all the following labs in this manual) should include the following items/sections: A cover page with your name, course information, lab number and title, and date of submission. Programming: a brief description of the process you followed in conducting the coding of the homework solution. Results obtained throughout the written code followed with brief analysis of these results. A zip file including both the Java project folder and the work file contains all items/sections above.
Lab Report:
The laboratory report of this lab (and also all the following labs in this manual) should include the following items/sections: A cover page with your name, course information, lab number and title, and date of submission. A summary of the addressed topic and objectives of the lab. Implementation: a brief description of the process you followed in conducting the implementation of the lab scenarios. Results obtained throughout the lab implementation, the analysis of these results, and a comparison of these results with your expectations. Answers to the given exercises at the end of the lab. If an answer incorporates new graphs, analysis of these graphs should be included here. A conclusion that includes what you learned, difficulties you faced, and any suggested extensions/improvements to the lab. Note: only a softcopy is required for both homework and report, please do not print or submit a hard copy.
Lab-6
14