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/

Slides:



Advertisements
Similar presentations
Based on Java Software Development, 5th Ed. By Lewis &Loftus
Advertisements

1 Classes, Encapsulation, Methods and Constructors (Continued) Class definitions Instance data Encapsulation and Java modifiers Method declaration and.
Chapter 4: Writing Classes
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Writing Classes We've been using predefined classes. Now we will learn.
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Writing Classes The programs we’ve written in previous examples have.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Chapter Day 7. © 2007 Pearson Addison-Wesley. All rights reserved4-2 Agenda Day 7 Questions from last Class?? Problem set 1 Corrected  Good results 3.
ECE122 L6: Problem Definition and Implementation February 15, 2007 ECE 122 Engineering Problem Solving with Java Lecture 6 Problem Definition and Implementation.
Classes, Encapsulation, Methods and Constructors
Aalborg Media Lab 26-Jun-15 Software Design Lecture 5 “ Writing Classes”
Chapter 4 Writing Classes. We've been using predefined classes. Now we will learn to write our own classes to define objects Chapter 4 focuses on:  class.
Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Third Edition by John Lewis and William Loftus.
Chapter 4 Writing Classes 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All rights reserved.
ELC 312 Day 6. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Agenda Questions? Problem set two Posted in WebCT  Due Sept 30  On Page 153&154.
Copyright © 2012 Pearson Education, Inc. Chapter 4 Writing Classes Java Software Solutions Foundations of Program Design Seventh Edition John Lewis William.
1 Creating Classes. 2 Writing Classes Thus far, we have mainly used existing classes in the Java library  (also main classes for executing) True object-oriented.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
© 2011 Pearson Education, publishing as Addison-Wesley Chapter 4: Writing Classes Presentation slides for Java Software Solutions for AP* Computer Science.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley John Lewis, Peter DePasquale, and Joseph Chase Chapter 5: Writing Classes.
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved2/48 Writing Classes We've been using predefined classes. Now we will learn.
Writing Classes (Chapter 4)
Objects and Classes. Problem Solving The key to designing a solution is breaking it down into manageable pieces When writing software, we design separate.
CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Chapter 4 Writing Classes 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All rights reserved.
GP3, Martin Lillholm 1 Introductory Programming (GP) Spring 2006 Lecture 3 We start at 13:00 Slides are available from the course home page Feel free to.
Chapter 4 -2 part Writing Classes 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All.
CSE 1201 Object Oriented Programming Writing Classes.
Chapter 4 Writing Classes Part 2. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Classes A class can contain data declarations and method declarations.
CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
© 2004 Pearson Addison-Wesley. All rights reserved September 12, 2007 Encapsulation ComS 207: Programming I (in Java) Iowa State University, FALL 2007.
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Writing Classes We've been using predefined classes. Now we will learn.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
© 2004 Pearson Addison-Wesley. All rights reserved September 14, 2007 Anatomy of a Method ComS 207: Programming I (in Java) Iowa State University, FALL.
Chapter 4 Writing Classes 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All rights reserved.
SEEM Java – Basic Introduction, Classes and Objects.
Wednesday –POD –I have updated grades in powerschool. If you have a zero for a lab grade, it probably means you didn’t DropItToMe. Please do so. –Slides.
Programming in Java (COP 2250) Lecture 10 Chengyong Yang Fall, 2005.
1 Classes, Encapsulation, Methods and Constructors Class definitions Scope of Data –Instance data –Local data The this Reference Encapsulation and Java.
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Writing Classes We've been using predefined classes. Now we will learn.
Copyright © 2012 Pearson Education, Inc. Chapter 4 Writing Classes Java Software Solutions Foundations of Program Design Seventh Edition John Lewis William.
Chapter 4 Writing Classes. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Writing Classes We've been using predefined classes. Now we will learn.
Chapter 4 Writing Classes 5 TH EDITION Lewis & Loftus java Software Solutions Foundations of Program Design © 2007 Pearson Addison-Wesley. All rights reserved.
Outline Anatomy of a Class Encapsulation Anatomy of a Method Graphical Objects Graphical User Interfaces Buttons and Text Fields Copyright © 2012 Pearson.
1 Chapter 4: Writing Classes  Chapter 4 focuses on: class definitions encapsulation and Java modifiers method declaration, invocation, and parameter passing.
Outline Anatomy of a Class Encapsulation Anatomy of a Method Copyright © 2014 Pearson Education, Inc.
© 2004 Pearson Addison-Wesley. All rights reserved3-1 Objects Declaration: String title;  title (object variable) of type String( Class )  title is just.
Copyright © 2012 Pearson Education, Inc. Chapter 4 Writing Classes : Review Java Software Solutions Foundations of Program Design Seventh Edition John.
CSC 1051 – Data Structures and Algorithms I
Writing Classes Chapter 4.
Writing Classes We've been using predefined classes from the Java API. Now we will learn to write our own classes. Chapter 4 focuses on: class definitions.
Chapter 4: Writing Classes
Chapter 4 Writing Classes.
Chapter 4 Writing Classes.
Chapter 5 – Writing Classes
Ch 4: Writing Classes Java Software Solutions Foundations of Program Design Sixth Edition by Lewis & Loftus Coming up: Classes and Objects.
Chapter 4: Writing classes
Chapter 4 Writing Classes.
Outline Writing Classes Copyright © 2012 Pearson Education, Inc.
Classes, Encapsulation, Methods and Constructors (Continued)
Chapter 4 Writing Classes
Anatomy of a Method.
Writing Classes.
Chapter 4 Writing Classes.
Outline Anatomy of a Class Encapsulation Anatomy of a Method
Encapsulation September 13, 2006 ComS 207: Programming I (in Java)
4 Writing Classes Software Solutions Lewis & Loftus java 5TH EDITION
What to expect this week
Presentation transcript:

CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website: CSC 1051 M.A. Papalaskari, Villanova University Designing Classes II methods and encapsulation

Getting to know classes so far Predefined classes from the Java API. Defining classes of our own … CSC 1051 M.A. Papalaskari, Villanova University Driver classes: –Transactions, OnePercent –RollingDice –YouVeGotShoes (Project 7) –PeopleBeingPeople (Lab 8) Our classes: –Account –Die –Shoe –Person Next: Focus on method definition/invocation

CSC 1051 M.A. Papalaskari, Villanova University //******************************************************************** // RollingDice.java Author: Lewis/Loftus // Demonstrates the creation and use of a user-defined class. //******************************************************************** public class RollingDice { // // Creates two Die objects and rolls them several times. // public static void main (String[] args) { Die die1, die2; int sum; die1 = new Die(); die2 = new Die(); die1.roll(); die2.roll(); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); die1.roll(); die2.setFaceValue(4); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); sum = die1.getFaceValue() + die2.getFaceValue(); System.out.println ("Sum: " + sum); sum = die1.roll() + die2.roll(); System.out.println ("Die One: " + die1 + ", Die Two: " + die2); System.out.println ("New sum: " + sum); } Sample Run Die One: 5, Die Two: 2 Die One: 1, Die Two: 4 Sum: 5 Die One: 4, Die Two: 2 New sum: 6

CSC 1051 M.A. Papalaskari, Villanova University //******************************************************************** // Die.java Author: Lewis/Loftus // // Represents one die (singular of dice) with faces showing values // between 1 and 6. //******************************************************************** public class Die { private final int MAX = 6; // maximum face value private int faceValue; // current value showing on the die // // Constructor: Sets the initial face value. // public Die() { faceValue = 1; } // // Rolls the die and returns the result. // public int roll() { faceValue = (int)(Math.random() * MAX) + 1; return faceValue; } continue

CSC 1051 M.A. Papalaskari, Villanova University continue // // Face value mutator. // public void setFaceValue (int value) { faceValue = value; } // // Face value accessor. // public int getFaceValue() { return faceValue; } // // Returns a string representation of this die. // public String toString() { String result = Integer.toString(faceValue); return result; }

UML Class Diagrams UML = Unified Modelling Language Example: A UML class diagram for the RollingDice program: RollingDice main (args : String[]) : void Die faceValue : int roll() : int setFaceValue (value : int) : void getFaceValue() : int toString() : String

UML class diagram for Transactions program?

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; } char ch = obj.calc (start, 2, "ABCDE"); CSC 1051 M.A. Papalaskari, Villanova University

myMethod(); myMethodcompute Method Control Flow If the called method is in the same class, only the method name is needed CSC 1051 M.A. Papalaskari, Villanova University

doIt helpMe helpMe(); obj.doIt(); main Method Control Flow The called method is often part of another class or object CSC 1051 M.A. Papalaskari, Villanova University

Invoking methods within the same class An object’s method may access any of its other methods directly. Eg: CSC 1051 M.A. Papalaskari, Villanova University public addInterest(double rate) { deposit (rate*balance); } Thus the dot operator is an addressing mechanism. Note that it can also be used to access an object’s or class’s data directly, for example –acct1.name –Color.black more on this later (encapsulation)

public static void main (String[] args) { printManyGreetings(5); } CSC 1051 M.A. Papalaskari, Villanova University The main method can do this too! assumes printManyGreetings() is defined in the same class  A convenient way to test methods Invoking methods within the same class

public static void main (String[] args) { printManyGreetings(5); } CSC 1051 M.A. Papalaskari, Villanova University The main method can do this too! assumes printManyGreetings() is defined in the same class NOTE: Since main() is static, printManyGreetings() must also be static Invoking methods within the same class

Implementing printManyGreetings() method: Invoking the method: CSC 1051 M.A. Papalaskari, Villanova University printManyGreetings(5);

More Method Examples: Write a method with two double paramenters a and b that computes and returns the sum of squares of its two parameters (i.e., a 2 + b 2 ). How do we invoke the method to compute & print: (14.8) 2 + (37.65) 2 ? CSC 1051 M.A. Papalaskari, Villanova University

More Method Examples: Write a method with one int parameter num, that returns a String composed of “Happy Birthday” num times How do we invoke the method to print “happy birthday” 4 times? CSC 1051 M.A. Papalaskari, Villanova University

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 Violating Encapsulation It is possible for a class to access the instance data of another class directly

Violating Encapsulation - WRONG It is possible for a class to access the instance data of another class directly – but it’s not a good idea! See Account.java Account.java See ImInUrClassMessingUrInstanceData.java ImInUrClassMessingUrInstanceData.java deposit() withdraw() addInterest() name acctNumber balance ImInUrClassMessingUrInstanceData.java CSC 1051 M.A. Papalaskari, Villanova University acct1.name = “Joe”; Account.java

Use Accessors & Mutators - RIGHT Indirect access through methods accessors and mutators (“getters” and “setters”) Usually named getX() and setX() deposit() withdraw() addInterest() name acctNumber balance Transactions.java CSC 1051 M.A. Papalaskari, Villanova University int x1 = acct1.getBalance(); Account.java Methods Data Example

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

Violating Encapsulation experiment Revisit your solution for the Account Class ExerciseAccount Class Exercise Add some code to the OnePercent.java class to modify the value of an instance variable, eg: This should work as expected Now modify Account.java – insert the modifier private in front of that variable declaration: Re-compile the Account class and run your program again. Note the error you get. CSC 1051 M.A. Papalaskari, Villanova University acct1.name = “Joe”; private String name;

public constants are ok Example: The Account class can have a constant for the interest rate: A driver class (eg, OnePercent.java) can access this constant directly: CSC 1051 M.A. Papalaskari, Villanova University System.out.print ("Interest rate = " + acct1.RATE); public final double RATE = 0.015;

public constants are ok Example: The Account class can have a constant for the interest rate: A driver class (eg, OnePercent.java) can access this constant directly without creating an object: CSC 1051 M.A. Papalaskari, Villanova University System.out.print ("Interest rate = " + acct1.RATE); public final static double RATE = 0.015; Usually, constants are declared static System.out.print ("Interest rate = " + Account.RATE);

Visibility Modifiers – the RULES publicprivate Variables Methods Yes Yes, for support methods only Yes NO (but OK for public constants) CSC 1051 M.A. Papalaskari, Villanova University