cs 200 - programming i: classes · classes uml class definingclasses...

54
CS 200 - Programming I: Classes Marc Renault Department of Computer Sciences University of Wisconsin – Madison Fall 2019 TopHat Sec 3 (1:20 PM) Join Code: 682357 TopHat Sec 4 (3:30 PM) Join Code: 296444

Upload: others

Post on 05-Feb-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

CS 200 - Programming I: Classes

Marc Renault

Department of Computer SciencesUniversity of Wisconsin – Madison

Fall 2019TopHat Sec 3 (1:20 PM) Join Code: 682357TopHat Sec 4 (3:30 PM) Join Code: 296444

Page 2: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Classes

Page 3: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class

Defining ClassesClasses provide a way of defining new types.They are data structures that:

can group member variables.can group member methods.

publicmembers are accessible outside the class.privatemembers are only accessible inside the class.

Creating instances of classesMyClass varName = new MyClass(arg1, ...)

Creating instances of your own classes work just as thepredefined Java classes.

1/23

Page 4: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class

Defining ClassesClasses provide a way of defining new types.They are data structures that:

can group member variables.can group member methods.

publicmembers are accessible outside the class.privatemembers are only accessible inside the class.

Creating instances of classesMyClass varName = new MyClass(arg1, ...)

Creating instances of your own classes work just as thepredefined Java classes.

1/23

Page 5: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class

Defining ClassesClasses provide a way of defining new types.They are data structures that:

can group member variables.can group member methods.

publicmembers are accessible outside the class.privatemembers are only accessible inside the class.

Creating instances of classesMyClass varName = new MyClass(arg1, ...)

Creating instances of your own classes work just as thepredefined Java classes.

1/23

Page 6: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 1What is the output when executed?

public class MyClass {

public int a;

public MyClass () {a = 5;

}

public static void main(String [] args) {MyClass b = new MyClass ();b.a = 10;System.out.print(b.a);

}}

2/23

Page 7: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 2What is the output when executed?

public class MyClassBis {

private int a;

public MyClassBis () {a = 5;

}

public static void main(String [] args) {MyClassBis b = new MyClassBis ();b.a = 10;System.out.print(b.a);

}}

3/23

Page 8: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 3What is the output when UseMyClass is executed?public class UseMyClass {

public static void main(String [] args) {MyClass b = new MyClass ();b.a = 10;System.out.print(b.a);

}

}

public class MyClass {

public int a;

public MyClass () {a = 5;

}

public static void main(String [] args) {MyClass b = new MyClass ();b.a = 10;System.out.print(b.a);

}}

4/23

Page 9: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 4What is the output when UseMyClassBis is executed?public class UseMyClassBis {

public static void main(String [] args) {MyClassBis b = new MyClassBis ();b.a = 10;System.out.print(b.a);

}

}

public class MyClassBis {

private int a;

public MyClassBis () {a = 5;

}

public static void main(String [] args) {MyClassBis b = new MyClassBis ();b.a = 10;System.out.print(b.a);

}}

5/23

Page 10: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class Interface

Class InterfacePublic view of the class.publicmethods and members that can be accessed fromoutside.

Good Practice: Keep Things privateCode smell: indecent exposure.private unless reason to make public.Encapsulation is one of the fundamental principals inobject-oriented programming (OOP).

6/23

Page 11: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class Interface

Class InterfacePublic view of the class.publicmethods and members that can be accessed fromoutside.

Good Practice: Keep Things privateCode smell: indecent exposure.private unless reason to make public.Encapsulation is one of the fundamental principals inobject-oriented programming (OOP).

6/23

Page 12: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Member Variables

public class HockeyPlayer {

private String name;private int goals;private int assists;private int gamesPlayed;private double toi;private double penaltyMin;

public HockeyPlayer () {name = "";initMemberVars ();

}

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}

private void initMemberVars () {goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public String getName () {return name;

}

public void setName(String name) {this.name = name;

}

public int getGoals () {return goals;

}

public int getAssists () {return assists;

}

public int getPoints () {return goals + assists;

}

public int getGamesPlayed () {return gamesPlayed;

}

public double getToi () {return toi;

}

public double getPenaltyMin () {return penaltyMin;

}

public void addPenaltyTime(double time) {penaltyMin += time;

}

public void addGoal () {goals ++;

}

public void addAssist () {assists ++;

}

public void addToi(double time) {toi += time;

}

public void addGamePlayed () {gamesPlayed ++;

}

}

FieldsFields are membervariables.Non-static membervariables are instancevariables.

PropertiesFields that can be set bythose using the class.

Default ValuesUninitialized membervariables are given defaultvalues.

7/23

Page 13: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Member Variables

public class HockeyPlayer {

private String name;private int goals;private int assists;private int gamesPlayed;private double toi;private double penaltyMin;

public HockeyPlayer () {name = "";initMemberVars ();

}

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}

private void initMemberVars () {goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public String getName () {return name;

}

public void setName(String name) {this.name = name;

}

public int getGoals () {return goals;

}

public int getAssists () {return assists;

}

public int getPoints () {return goals + assists;

}

public int getGamesPlayed () {return gamesPlayed;

}

public double getToi () {return toi;

}

public double getPenaltyMin () {return penaltyMin;

}

public void addPenaltyTime(double time) {penaltyMin += time;

}

public void addGoal () {goals ++;

}

public void addAssist () {assists ++;

}

public void addToi(double time) {toi += time;

}

public void addGamePlayed () {gamesPlayed ++;

}

}

FieldsFields are membervariables.Non-static membervariables are instancevariables.

PropertiesFields that can be set bythose using the class.

Default ValuesUninitialized membervariables are given defaultvalues.

7/23

Page 14: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Member Variables

public class HockeyPlayer {

private String name;private int goals;private int assists;private int gamesPlayed;private double toi;private double penaltyMin;

public HockeyPlayer () {name = "";initMemberVars ();

}

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}

private void initMemberVars () {goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public String getName () {return name;

}

public void setName(String name) {this.name = name;

}

public int getGoals () {return goals;

}

public int getAssists () {return assists;

}

public int getPoints () {return goals + assists;

}

public int getGamesPlayed () {return gamesPlayed;

}

public double getToi () {return toi;

}

public double getPenaltyMin () {return penaltyMin;

}

public void addPenaltyTime(double time) {penaltyMin += time;

}

public void addGoal () {goals ++;

}

public void addAssist () {assists ++;

}

public void addToi(double time) {toi += time;

}

public void addGamePlayed () {gamesPlayed ++;

}

}

FieldsFields are membervariables.Non-static membervariables are instancevariables.

PropertiesFields that can be set bythose using the class.

Default ValuesUninitialized membervariables are given defaultvalues.

7/23

Page 15: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Member Instance Methodsprivate void initMemberVars () {

goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public String getName () {return name;

}

public void setName(String name) {this.name = name;

}

public int getGoals () {return goals;

}

public int getAssists () {return assists;

}

public int getPoints () {return goals + assists;

Instance MethodsNon-static methods whosebehaviour depends on theparticular object instance.

8/23

Page 16: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Constructorspublic class HockeyPlayer {

private String name;private int goals;private int assists;private int gamesPlayed;private double toi;private double penaltyMin;

public HockeyPlayer () {name = "";initMemberVars ();

}

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}

private void initMemberVars () {goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

ConstructorSpecial method with noreturn type.Same name as the class.Called when creating aninstance.Can be overloaded.

Default ConstructorIf no constructor isdefined, Java provides adefault constructor with noparameters.It is good practice to definea constructor.

9/23

Page 17: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Constructorspublic class HockeyPlayer {

private String name;private int goals;private int assists;private int gamesPlayed;private double toi;private double penaltyMin;

public HockeyPlayer () {name = "";initMemberVars ();

}

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}

private void initMemberVars () {goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

ConstructorSpecial method with noreturn type.Same name as the class.Called when creating aninstance.Can be overloaded.

Default ConstructorIf no constructor isdefined, Java provides adefault constructor with noparameters.It is good practice to definea constructor.

9/23

Page 18: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

What is this?

public HockeyPlayer(String name) {this.name = name;initMemberVars ();

}public void setName(String name) {

this.name = name;}

this keywordthis is a reference to the object (or the current instance).The object is an implicit parameter of all instance methods.

10/23

Page 19: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

What is this?this keyword

this is a reference to the object (or the current instance).The object is an implicit parameter of all instance methods.Can also be used to call other constructors:

public HockeyPlayer () {name = "";goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public HockeyPlayer(String name) {this ();this.name = name;

}10/23

Page 20: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Mutators, Accessors, and Helpersprivate void initMemberVars () {

goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public int getPoints () {return goals + assists;

}

public void addGoal () {goals ++;

}

Helpersprivatemethod usedwithin the class.

AccessorsMethods that access themember variables withoutchanging them.

MutatorsMethods that change themember variables.

11/23

Page 21: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Mutators, Accessors, and Helpersprivate void initMemberVars () {

goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public int getPoints () {return goals + assists;

}

public void addGoal () {goals ++;

}

Helpersprivatemethod usedwithin the class.

AccessorsMethods that access themember variables withoutchanging them.

MutatorsMethods that change themember variables.

11/23

Page 22: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Mutators, Accessors, and Helpersprivate void initMemberVars () {

goals = 0;assists = 0;gamesPlayed = 0;toi = 0.0;penaltyMin = 0.0;

}

public int getPoints () {return goals + assists;

}

public void addGoal () {goals ++;

}

Helpersprivatemethod usedwithin the class.

AccessorsMethods that access themember variables withoutchanging them.

MutatorsMethods that change themember variables.

11/23

Page 23: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Getters and Setterspublic String getName () {

return name;}

public void setName(String name) {this.name = name;

}

GetterAccessor method thatretrieves a property.

SetterMutator method to changea property.

Best PracticeGood for properties.Violates OOP encapsulation when used for all fields.Why getter and setter methods are evilhttps://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html

12/23

Page 24: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Getters and Setterspublic String getName () {

return name;}

public void setName(String name) {this.name = name;

}

GetterAccessor method thatretrieves a property.

SetterMutator method to changea property.

Best PracticeGood for properties.Violates OOP encapsulation when used for all fields.Why getter and setter methods are evilhttps://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html

12/23

Page 25: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Getters and Setterspublic String getName () {

return name;}

public void setName(String name) {this.name = name;

}

GetterAccessor method thatretrieves a property.

SetterMutator method to changea property.

Best PracticeGood for properties.Violates OOP encapsulation when used for all fields.Why getter and setter methods are evilhttps://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html 12/23

Page 26: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 5

What is the output?

public class UseHockeyPlayer {

public static void main(String [] args) {HockeyPlayer h = new HockeyPlayer("Auston Matthews");System.out.print(h);

}

}

a. Auston Matthewsb. HockeyPlayer@5e265ba4

13/23

Page 27: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 6What is the output when executed?

public class SimpleClass {

public int x;

public SimpleClass(int x) {this.x = x;

}

public String toString () {return "" + x;

}

public static void main(String [] args) {SimpleClass a = new SimpleClass (10);SimpleClass b = new SimpleClass (10);b.x = 20;System.out.print(a + " " + b);

}}

14/23

Page 28: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

Heap

15/23

Page 29: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

y: 0

StaticA:x: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

15/23

Page 30: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

y: 0

StaticA:x: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;

15/23

Page 31: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

y: 1

StaticA:x: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;

15/23

Page 32: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

y: 1

StaticA:x: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;

15/23

Page 33: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

s

y: 1

StaticA:x: 2

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;

15/23

Page 34: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 2

y: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();

15/23

Page 35: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 2

y: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;

15/23

Page 36: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 3

y: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;

15/23

Page 37: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 3

y: 0

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;t.y = 4;

15/23

Page 38: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 3

y: 4

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;t.y = 4;

15/23

Page 39: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 3

y: 4

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;t.y = 4;StaticA.x = 5;

15/23

Page 40: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Static Member VariablesStatic Member Variables

Class variablesStored in a special part of the heap.

Stack

st

y: 1

StaticA:x: 5

y: 4

Heap class StaticA {public static int x;public int y;

}public class StaticEx {

public staticvoid main(String [] args){

StaticA s= new StaticA ();

s.y = 1;s.x = 2;StaticA t

= new StaticA ();t.x = 3;t.y = 4;StaticA.x = 5;

15/23

Page 41: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 7

What is the output when executed?

public class SimpleStaticClass {

public static int x = 10;

public String toString () {return "" + x;

}

public static void main(String [] args) {SimpleStaticClass a = new SimpleStaticClass ();SimpleStaticClass b = new SimpleStaticClass ();b.x = 20;System.out.print(a + " " + b);

}}

16/23

Page 42: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

TopHat Question 8

What is the output?

public class StaticEx2 {

private static int i = 0;

public static int f() {return ++i;

}

public static void main(String [] args) {System.out.print(f() + " " + f() + " " + f());

}

}

17/23

Page 43: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

UML

Page 44: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Unified Modeling Language (UML)UML

A modeling language used in software engineering.A visual way to describe a software system.

Some UML DiagramsUse Case DiagramClass DiagramInstance Diagram

UML Resourceshttp://agilemodeling.com/

https://www.uml-diagrams.org/

Online Drawing Tool:http://www.umlet.com/umletino/umletino.html

18/23

Page 45: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Unified Modeling Language (UML)UML

A modeling language used in software engineering.A visual way to describe a software system.

Some UML DiagramsUse Case DiagramClass DiagramInstance Diagram

UML Resourceshttp://agilemodeling.com/

https://www.uml-diagrams.org/

Online Drawing Tool:http://www.umlet.com/umletino/umletino.html

18/23

Page 46: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Unified Modeling Language (UML)UML

A modeling language used in software engineering.A visual way to describe a software system.

Some UML DiagramsUse Case DiagramClass DiagramInstance Diagram

UML Resourceshttp://agilemodeling.com/

https://www.uml-diagrams.org/

Online Drawing Tool:http://www.umlet.com/umletino/umletino.html

18/23

Page 47: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Use Case DiagramBP1 MastermindBP1 Mastermind

Choose the random seed

Enter a guess

Choose to play againPlayer

Use Case DiagramSimple graphical representation of the system.Describes how the external actors (users) interact with thesystem.

19/23

Page 48: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Class Diagram

5..* 0..1

1..*

0..1 2..*

0..1

HockeyPlayer

name: Stringgoals: intassists: int

addGoal()setName(name: String)

Goalie

saves: intshots: int

getSavePct(): double

HockeyTeam

HockeyLeague

plays for I

plays f

or Ibelongs to

I

Class DiagramDescribes the structure of the system at the class level.

20/23

Page 49: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Instance DiagramHockeyLeague

name = NHL

wildHockeyTeam

name =Wildlocation = Minnesota

hawksHockeyTeam

name = Blackhawkslocation = Chicago

HockeyTeam

name = Maple Leafslocation = Toronto

HockeyPlayer

name = Auston MatthewsGoals = 10Assists = 6

Goalie

name = Frederik Andersensaves = 505shots = 540

Object / Instance DiagramDescribes the state of the system at the object level at agiven instance in time. 21/23

Page 50: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

UML ExerciseDraw the use-case and class diagrams for the following UsedCar Sale system.

Vehicles are identified by a VIN, colour, engine type, gastype, and transmission type.Each vehicle has certificate recording the number ofkilometres, date of last inspection, number of accidents.Vehicles are sub-divided into:

cars, noting the number of passengerstrucks, noting the weight classvans, noting the number of passenger and the weight class

Clients are registered, indicating their name, address andphone number.Clients can search for and buy the used vehicles.Clients sign purchase contracts indicating the purchasedate, sale price, number of payments.

22/23

Page 51: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Classes UML

Further Reading

COMP SCI 200: Programming IzyBooks.com, 2015.zyBook code:WISCCOMPSCI200Fall2019

Chapter 12. Creating ClassesChapter 13. More Classes

23/23

Page 52: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Appendix References

Appendix

Page 53: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Appendix References

References

Page 54: CS 200 - Programming I: Classes · Classes UML Class DefiningClasses Classesprovideawayofdefiningnewtypes. Theyaredatastructuresthat: cangroupmembervariables. cangroupmembermethods

Appendix References

Image Sources I

https://brand.wisc.edu/web/logos/

http://www.zybooks.com/

24/23