CSC 1051 – Data Structures and Algorithms I
description
Transcript of CSC 1051 – Data Structures and Algorithms I
![Page 1: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/1.jpg)
CSC 1051 – Data Structures and Algorithms I
Dr. Mary-Angela Papalaskari
Department of Computing Sciences
Villanova University
Course website:
www.csc.villanova.edu/~map/1051/CSC 1051 M.A. Papalaskari, Villanova University
Writing Classes – Part 2
![Page 2: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/2.jpg)
Getting to know classes so far
• Predefined classes from the Java API.
• We have defined a few classes of our own:
– Account
– Die
– Book
– Person
– BigA, Big B, etc
CSC 1051 M.A. Papalaskari, Villanova University
![Page 3: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/3.jpg)
Getting to know classes so far
• Predefined classes from the Java API.
• We have defined a few classes of our own:
– Account
– Die
– Book
– Person
– BigA, Big B, etc
CSC 1051 M.A. Papalaskari, Villanova University
Driver classes:
– Transactions
– RollingDice
– Bookshelf
– (Quiz 7 – we did not write a driver)
– BigAlphabet, BigLettersGUI
![Page 4: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/4.jpg)
More Examples of Classes?
CSC 1051 M.A. Papalaskari, Villanova University
![Page 5: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/5.jpg)
Today• Review what we learned so far
• UML diagrams
• Encapsulation
• Extending classes
• Graphical Objects
CSC 1051 M.A. Papalaskari, Villanova University
![Page 6: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/6.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// Transactions.java Author: MA Papalaskari // (based on Lewis/Loftus example)// Demonstrates the creation and use of multiple Account objects.//********************************************************************
public class Transactions1{ //----------------------------------------------------------------- // Creates some bank accounts and requests various services. //----------------------------------------------------------------- public static void main (String[] args) { Account acct1 = new Account ("Ted Murphy", 72354, 102.56); Account acct2 = new Account ("Jane Smith", 69713, 40.00); System.out.println (acct1); System.out.println (acct2); acct1.deposit (25.85); System.out.println (); System.out.println (acct1); System.out.println (acct2); }}
Review
• driver classes
![Page 7: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/7.jpg)
• class declaration
CSC 1051 M.A. Papalaskari, Villanova University
Constructor
deposit()
withdraw()
long acctNumber;double balance;String name;
Data declarations
Method declarations
toString()
Review
![Page 8: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/8.jpg)
• Method definition–parameters–return type–return statement
char calc (int num1, int num2, String message)
{ int sum = num1 + num2; char result = message.charAt (sum);
return result;}
ch = obj.calc (25, count, "Hello");
CSC 1051 M.A. Papalaskari, Villanova University
Review
![Page 9: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/9.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
• using methods…
Review
![Page 10: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/10.jpg)
Account class: Using methods
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.deposit (25.85);
Review
![Page 11: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/11.jpg)
Account class: Using methods
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.deposit (25.85);
//---------------------------------------------------// Deposits the specified amount into the account. //---------------------------------------------------public void deposit (double amount){ balance = balance + amount;}
Review
![Page 12: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/12.jpg)
Account class: Using methods
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.deposit (25.85);
//---------------------------------------------------// Deposits the specified amount into the account. //---------------------------------------------------public void deposit (double amount){ balance = balance + amount;}
Review
![Page 13: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/13.jpg)
Account class: Using methods
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.deposit (25.85);
//---------------------------------------------------// Deposits the specified amount into the account. //---------------------------------------------------public void deposit (double amount){ balance = balance + amount;}
Review
![Page 14: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/14.jpg)
Account class: Using methods
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.deposit (25.85);
//---------------------------------------------------// Deposits the specified amount into the account. //---------------------------------------------------public void deposit (double amount){ balance = balance + amount;}
Review
![Page 15: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/15.jpg)
Account class: Another Example
acct1 72354acctNumber
128.41balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.withdraw (60,2);
Review
![Page 16: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/16.jpg)
Account class: Another Example
acct1 72354acctNumber
128.41balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.withdraw (60,2);
//------------------------------------------------------- // Withdraws the specified amount from the account // and applies the fee. //----------------------------------------------------- public void withdraw (double amount, double fee) { balance = balance - amount - fee; }
Review
![Page 17: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/17.jpg)
Account class: Another Example
acct1 72354acctNumber
66.41balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
acct1.withdraw (60,2);
//-------------------------------------------------// Withdraws the specified amount from the account// and applies the fee.//-----------------------------------------------public void withdraw (double amount, double fee){ balance = balance - amount - fee;}
Review
![Page 18: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/18.jpg)
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
Object creation: Constructors Account acct1 = new Account ("Ted Murphy", 72354, 102.56);
public Account (String owner, long account, double initial){ acctNumber = account; balance = initial; name = owner;}
Review
![Page 19: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/19.jpg)
acct1 72354acctNumber
102.56balance
name "Ted Murphy"
CSC 1051 M.A. Papalaskari, Villanova University
toString() method System.out.prinltn(acct1);
public String toString (){ NumberFormat fmt = NumberFormat.getCurrencyInstance(); return (acctNumber +"\t”+ name +"\t”+ fmt.format(balance));}
Review
![Page 20: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/20.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
static methods OtherClass.doSomething(acct1);
public static void doSomething(){ System.out.println(" At your service. " );}
Review
OtherClass
![Page 21: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/21.jpg)
• UML diagrams
• encapsulation and Java modifiers
• graphical objects
CSC 1051 M.A. Papalaskari, Villanova University
What’s next?
![Page 22: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/22.jpg)
UML Class Diagrams
• A UML class diagram for the RollingDice program:
RollingDice
main (args : String[]) : void
Die
faceValue : int
roll() : intsetFaceValue (int value) : voidgetFaceValue() : inttoString() : String
![Page 23: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/23.jpg)
Encapsulation• An encapsulated object can be thought of as a black
box -- its inner workings are hidden from the client
• The client invokes the interface methods and they manage the instance data
Methods
Data
Client
CSC 1051 M.A. Papalaskari, Villanova University
![Page 24: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/24.jpg)
Violating Encapsulation• It is possible for a class to access the instance data
of another class directly
Methods
Data
Client
CSC 1051 M.A. Papalaskari, Villanova University
![Page 25: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/25.jpg)
Violating Encapsulation - Example• It is possible for a class to access the instance data
of another class directly - but don’t do this!• See Account.java (modified)• See ImInUrClassMessingUrInstanceData.java
deposit()withdraw()
addInterest()
nameacctNumber
balance
Transactions.java
CSC 1051 M.A. Papalaskari, Villanova University
acct1.name = “Joe”;
Account.java
![Page 26: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/26.jpg)
Visibility Modifiers• In Java, we enforce encapsulation through the
appropriate use of visibility modifiers:
– public – can be referenced from other classes
– private – can be referenced only within that class:
– protected – involves inheritance (discussed later)
• Data declared without a visibility modifier have default visibility and can be referenced by any class in the same package
• An overview of all Java modifiers is presented in Appendix E
CSC 1051 M.A. Papalaskari, Villanova University
![Page 27: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/27.jpg)
public constants are ok - Example
Account acct1 = new Account (”Sartre", 72354, 102.56);
System.out.println (acct1);
System.out.println ("Interest rate = " + acct1.RATE);
CSC 1051 M.A. Papalaskari, Villanova University
![Page 28: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/28.jpg)
Visibility Modifiers – the RULES
public private
Variables
Methods YesYes, for support
methods only
YesNO(but OK for public
constants)
CSC 1051 M.A. Papalaskari, Villanova University
![Page 29: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/29.jpg)
Encapsulation – Accessing the data• Indirect access through methods
• accessors and mutators (“getters” and “setters”)
• Usually named getX() and setX()
deposit()withdraw()
addInterest()
nameacctNumber
balance
Transactions.java
CSC 1051 M.A. Papalaskari, Villanova University
acct1.getBalance()
Account.java
Methods
Data
Example
![Page 30: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/30.jpg)
Encapsulation – Accessing the data• Mutators (setters) can restrict access to the data, as
appropriate
• Example:
public void setQuantity(int num){ if (num<0) { System.out.println("*Error in setQuantity()"); System.out.println("negative quantity."); System.out.println("quantity not changed."); } else quantity = num;}
CSC 1051 M.A. Papalaskari, Villanova University
![Page 31: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/31.jpg)
Graphical Objects• Some objects contain information that determines
how the object should be represented visually
• Most GUI components are graphical objects
• We can have some effect on how components get drawn
• We did this in Chapter 2 when we defined the paint method of an applet
• Let's look at some other examples of graphical objects
CSC 1051 M.A. Papalaskari, Villanova University
![Page 32: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/32.jpg)
Smiling Face Example
• The SmilingFace program draws a face by defining the paintComponent method of a panel
• See SmilingFace.java • See SmilingFacePanel.java
• The SmilingFacePanel class is derived from the JPanel class using inheritance
CSC 1051 M.A. Papalaskari, Villanova University
![Page 33: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/33.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// SmilingFace.java Author: Lewis/Loftus//// Demonstrates the use of a separate panel class.//********************************************************************
import javax.swing.JFrame;
public class SmilingFace{ //----------------------------------------------------------------- // Creates the main frame of the program. //----------------------------------------------------------------- public static void main (String[] args) { JFrame frame = new JFrame ("Smiling Face"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
SmilingFacePanel panel = new SmilingFacePanel();
frame.getContentPane().add(panel);
frame.pack(); frame.setVisible(true); }}
![Page 34: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/34.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// SmilingFace.java Author: Lewis/Loftus//// Demonstrates the use of a separate panel class.//********************************************************************
import javax.swing.JFrame;
public class SmilingFace{ //----------------------------------------------------------------- // Creates the main frame of the program. //----------------------------------------------------------------- public static void main (String[] args) { JFrame frame = new JFrame ("Smiling Face"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
SmilingFacePanel panel = new SmilingFacePanel();
frame.getContentPane().add(panel);
frame.pack(); frame.setVisible(true); }}
![Page 35: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/35.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// SmilingFacePanel.java Author: Lewis/Loftus//// Demonstrates the use of a separate panel class.//********************************************************************
import javax.swing.JPanel;import java.awt.*;
public class SmilingFacePanel extends JPanel{ private final int BASEX = 120, BASEY = 60; // base point for head
//----------------------------------------------------------------- // Constructor: Sets up the main characteristics of this panel. //----------------------------------------------------------------- public SmilingFacePanel () { setBackground (Color.blue); setPreferredSize (new Dimension(320, 200)); setFont (new Font("Arial", Font.BOLD, 16)); }
continue
![Page 36: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/36.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
//----------------------------------------------------------------- // Draws a face. //----------------------------------------------------------------- public void paintComponent (Graphics page) { super.paintComponent (page);
page.setColor (Color.yellow); page.fillOval (BASEX, BASEY, 80, 80); // head page.fillOval (BASEX-5, BASEY+20, 90, 40); // ears
page.setColor (Color.black); page.drawOval (BASEX+20, BASEY+30, 15, 7); // eyes page.drawOval (BASEX+45, BASEY+30, 15, 7);
page.fillOval (BASEX+25, BASEY+31, 5, 5); // pupils page.fillOval (BASEX+50, BASEY+31, 5, 5);
page.drawArc (BASEX+20, BASEY+25, 15, 7, 0, 180); // eyebrows page.drawArc (BASEX+45, BASEY+25, 15, 7, 0, 180);
page.drawArc (BASEX+35, BASEY+40, 15, 10, 180, 180); // nose page.drawArc (BASEX+20, BASEY+50, 40, 15, 180, 180); // mouth
continue
![Page 37: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/37.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
page.setColor (Color.white); page.drawString ("Always remember that you are unique!", BASEX-105, BASEY-15); page.drawString ("Just like everyone else.", BASEX-45, BASEY+105); }}
![Page 38: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/38.jpg)
Jpanel Class – let’s look at Java API
CSC 1051 M.A. Papalaskari, Villanova University
![Page 39: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/39.jpg)
Jpanel Class – let’s look at Java API
CSC 1051 M.A. Papalaskari, Villanova University
SmilingFacePanel
![Page 40: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/40.jpg)
Smiling Face Example• Every Swing component has a paintComponent
method
• The paintComponent method accepts a Graphics object that represents the graphics context for the panel
• We define the paintComponent method to draw the face with appropriate calls to the Graphics methods
• Note the difference between drawing on a panel and adding other GUI components to a panel
CSC 1051 M.A. Papalaskari, Villanova University
![Page 41: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/41.jpg)
Splat Example• The Splat example is structured a bit differently
• It draws a set of colored circles on a panel, but each circle is represented as a separate object that maintains its own graphical information
• The paintComponent method of the panel "asks" each circle to draw itself
• See Splat.java • See SplatPanel.java • See Circle.java
CSC 1051 M.A. Papalaskari, Villanova University
![Page 42: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/42.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// Splat.java Author: Lewis/Loftus//// Demonstrates the use of graphical objects.//********************************************************************
import javax.swing.*;import java.awt.*;
public class Splat{ //----------------------------------------------------------------- // Presents a collection of circles. //----------------------------------------------------------------- public static void main (String[] args) { JFrame frame = new JFrame ("Splat"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SplatPanel());
frame.pack(); frame.setVisible(true); }}
![Page 43: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/43.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// Splat.java Author: Lewis/Loftus//// Demonstrates the use of graphical objects.//********************************************************************
import javax.swing.*;import java.awt.*;
public class Splat{ //----------------------------------------------------------------- // Presents a collection of circles. //----------------------------------------------------------------- public static void main (String[] args) { JFrame frame = new JFrame ("Splat"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SplatPanel());
frame.pack(); frame.setVisible(true); }}
![Page 44: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/44.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// SplatPanel.java Author: Lewis/Loftus//// Demonstrates the use of graphical objects.//********************************************************************
import javax.swing.*;import java.awt.*;
public class SplatPanel extends JPanel{ private Circle circle1, circle2, circle3, circle4, circle5;
//----------------------------------------------------------------- // Constructor: Creates five Circle objects. //----------------------------------------------------------------- public SplatPanel() { circle1 = new Circle (30, Color.red, 70, 35); circle2 = new Circle (50, Color.green, 30, 20); circle3 = new Circle (100, Color.cyan, 60, 85); circle4 = new Circle (45, Color.yellow, 170, 30); circle5 = new Circle (60, Color.blue, 200, 60);
setPreferredSize (new Dimension(300, 200)); setBackground (Color.black); }
continue
![Page 45: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/45.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
//----------------------------------------------------------------- // Draws this panel by requesting that each circle draw itself. //----------------------------------------------------------------- public void paintComponent (Graphics page) { super.paintComponent(page);
circle1.draw(page); circle2.draw(page); circle3.draw(page); circle4.draw(page); circle5.draw(page); }}
![Page 46: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/46.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************// Circle.java Author: Lewis/Loftus//// Represents a circle with a particular position, size, and color.//********************************************************************
import java.awt.*;
public class Circle{ private int diameter, x, y; private Color color;
//----------------------------------------------------------------- // Constructor: Sets up this circle with the specified values. //----------------------------------------------------------------- public Circle (int size, Color shade, int upperX, int upperY) { diameter = size; color = shade; x = upperX; y = upperY; }
continue
![Page 47: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/47.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
//----------------------------------------------------------------- // Draws this circle in the specified graphics context. //----------------------------------------------------------------- public void draw (Graphics page) { page.setColor (color); page.fillOval (x, y, diameter, diameter); }
//----------------------------------------------------------------- // Diameter mutator. //----------------------------------------------------------------- public void setDiameter (int size) { diameter = size; }
//----------------------------------------------------------------- // Color mutator. //----------------------------------------------------------------- public void setColor (Color shade) { color = shade; }
continue
![Page 48: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/48.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
//----------------------------------------------------------------- // X mutator. //----------------------------------------------------------------- public void setX (int upperX) { x = upperX; }
//----------------------------------------------------------------- // Y mutator. //----------------------------------------------------------------- public void setY (int upperY) { y = upperY; }
//----------------------------------------------------------------- // Diameter accessor. //----------------------------------------------------------------- public int getDiameter () { return diameter; }
continue
![Page 49: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/49.jpg)
CSC 1051 M.A. Papalaskari, Villanova University
continue
//----------------------------------------------------------------- // Color accessor. //----------------------------------------------------------------- public Color getColor () { return color; }
//----------------------------------------------------------------- // X accessor. //----------------------------------------------------------------- public int getX () { return x; }
//----------------------------------------------------------------- // Y accessor. //----------------------------------------------------------------- public int getY () { return y; }}
![Page 50: CSC 1051 – Data Structures and Algorithms I](https://reader036.fdocuments.us/reader036/viewer/2022070416/56815188550346895dbfc11b/html5/thumbnails/50.jpg)
Homework• Review Sections 4.1- 4.6
– Always do all self-review exercises when you review material
• Do Exercises EX 4.9 - 4.11
• Run all the programs to prepare for the lab Monday
• Read Sections 4.7- 4.9 to prepare for class Wednesday
Some slides in this presentation are adapted from the slides accompanying Java Software Solutions by Lewis & Loftus
CSC 1051 M.A. Papalaskari, Villanova University