0% found this document useful (0 votes)
150 views

Workshop #4: Inheritance: Learning Outcomes

This document describes a workshop on inheritance in Java. The learning outcomes are to design and implement classes in an "is-a" relationship, practice casting, and describe what was learned. Students will create classes for items like Vases, Statues, and Paintings that inherit from a parent Item class. The AntiqueShop class will utilize these subclasses by declaring references to them. Students will write input and output methods for each subclass and use casting when calling these methods via the parent Item reference variable. The memory map explains that objects are stored in the dynamic heap, while primitives and references are in the stack. The item variable stores a reference to the subclass object. Casting is needed to call subclass methods, and an exception
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)
150 views

Workshop #4: Inheritance: Learning Outcomes

This document describes a workshop on inheritance in Java. The learning outcomes are to design and implement classes in an "is-a" relationship, practice casting, and describe what was learned. Students will create classes for items like Vases, Statues, and Paintings that inherit from a parent Item class. The AntiqueShop class will utilize these subclasses by declaring references to them. Students will write input and output methods for each subclass and use casting when calling these methods via the parent Item reference variable. The memory map explains that objects are stored in the dynamic heap, while primitives and references are in the stack. The item variable stores a reference to the subclass object. Casting is needed to call subclass methods, and an exception
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/ 4

Workshop #4: Inheritance

Learning Outcomes:

Upon successful completion of this workshop, you will have demonstrated the abilities to:

 Design and implement classes in the “is-a” relationship.


 Practice casting
 Describe to your instructor what you have learned in completing this workshop.

Requirements:

Part 1: [7 points]

To complete this task you should read and study the lecture Inheritance

Step 1: Create a new project named “ItemManager”.

Step 2: Create a package named “DTO”, it contains some files: Item.java, Vase.java,
Statue.java, and Painting.java

Step 3: Create another package named “GUI”, it contains the AntiqueShop.java file

1
Implement the class diagram as follows:

Item

#value: int
#creator: String

+Item()
+Item(int, String)
+getters/setters
+output():void
+input():void

Vase Statue Painting

-height: int -weight: int -height: int


-material: String -colour: String -width: int
-isWatercolour: boolean
+Vase() +Statue() -isFramed: boolean
+Vase(int, String, int, String) +Statue(int, String, int, String) +Painting()
+getters/setters +getters/setters +Painting(int, String, int, int,
+outputVase():void +outputStatue():void boolean, boolean )
+InputVase(): void +inputStatue():void +getters/setters
+outputPaiting():void
+inputPainting():void

AntiqueShop

+main():void

The AntiqueShop class is making use of Vase, Statue, and Painting, in the sense that it has declared references
to them, and thus there is a dependency.

Requirement:
1. In the file Item.java,

 The method input(): Using Scanner class to input all fields of the Item class.
Verify: value>0, creator is not empty

 The method output(): print out all fields

2. In the file Vase.java,


 The method inputVase(): Using Scanner class to input all fields of the Vase class.
 The method outputVase(): print out all fields of the Vase class

2
Hint:
public class Vase{

//this method is used to input all fileds of a vase object
public void inputVase(){
input(); // call the inherited method to input two fields: value, creator

//TODO: you is required to add more your code to input two fields : height, material
// use try..catch/throws to handle exceptions
}

//this method displays information of a vase object


public void outputVase(){
output(); // call the inherited method to print two fields out: value, creator
System.out.println(“Height:” + height);
System.out.println(“Material:”+ material);
}

}

3. You do the same for Statue class, Painting class


4. In the file “AntiqueShop.java”. you type like as follow:

public class AntiqueShop {

public static void main(String[] args){


Item item=null;
int choice=0;
Scanner sc=….
do{

System.out.println(“1. Create a Vase:”);


System.out.println(“2. Create a Statue:”);
System.out.println(“3. Create a Painting:”);
System.out.println(“4. Display the Item:”);
System.out.println(“Input a choice:”);
Choice=sc.nextInt();
switch(choice){
case 1:
item=new Vase();
((Vase)item).inputVase();
break;
case 2:
item =new Statue();
((Statue) item).inputStatue();
break;
case 3:
item =new Painting();
((Painting) item).inputPainting();
break;
case 4:
if(item!=null){
if(item instanceof Vase)
((Vase) item).outputVase();
else if(item instanceof Statue)
((Statue) item).outputStatue ();
else if(item instanceof Painting)
((Painting) item).outputPainting ();
}
else System.out.println(“ you need to create an object”); 3
break;
}

}while(choice<=4); }
5. (Optional) Now, you is required to update the above program. You should create a new
class named Menu. This class contains one static method

//use this method to show pre-defined options


//input: an array contains the list of options
//output: return a user’s choice that is inputted from the keyboard.

 Update the main method to use the Menu class.

public class AntiqueShop {

public static void main(String[] args){


String[] options={“ Create a Vase “,”Create a Statue”,” Create a Statue”,” display the item”};
Item item=null;
int choice=0;
do{

choice=Menu.getChoice(options);
switch(choice){
case 1:
item=new Vase();
((Vase)item).inputVase();
break;
….
}while(…);
}

Part 2: Draw the memory map when the program runs [3 points]

Explain step by step what happened when the program runs and answer some questions.

- What is stored in the static heap, stack, dynamic heap?


- What are objects in the program?
- What is the item variable storing?
- Why must you cast to call the method inputVase()/outputVase()?
- What is the error thrown when you cast it wrong?
- What methods can you call if you don’t cast the item variable?

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy