Download presentation
Presentation is loading. Please wait.
1
Object Oriented Programming
Lecture 11 Object Oriented Programming Richard Gesick Figures from Lewis, “C# Software Solutions”, Addison Wesley
2
Topics Software Development Identifying Classes & Objects
Static Members Class Relationships “this” Parameters Revisited Overloading Methods Operators Testing
3
The Software Life Cycle
The overall life cycle of a program includes use and maintenance: A version of the software that is made available to user is called a release Use Development Maintenance
4
Development vs. Maintenance
Use and Maintenance
5
The Waterfall Model Establish requirements Create design Implement
code Test system
6
An Iterative Development Process
Establish requirements Create design Implement code Test system
7
Identifying Classes & Objects
Identify potential classes within the specification Nouns
9
In Gaming… How do you identify the classes within a game?
What have you seen so far in labs and assignments?
10
What Goes in the Class How do you decide what should be in the class
Data Methods Not easy, but must be done
11
Static Members Static methods can be invoked via the class name
Static variables are stored at the class level (one copy for all instances)
12
The static Modifier Remember that static methods (also called class methods) that can be invoked through the class name rather than through a particular object For example, the methods of the Math class are static: Math.sqrt (25) To write a static method, we apply the static modifier to the method definition The static modifier can be applied to variables as well It associates a variable or method with the class rather than with an object
13
Static Variables Static variables are also called class variables
Normally, each object has its own data space, but if a variable is declared as static, only one copy of the variable exists private static int count; Memory space for a static variable is created when the class in which it is declared is loaded All objects created from the class share static variables Changing the value of a static variable in one object changes it for all others Local variables cannot be static
14
Static Methods class Helper public static int triple (int num) {
int result; result = num * 3; return result; } class Helper Because it is static, the method can be invoked as: value = Helper.triple (5);
15
Static Methods Static methods cannot reference instance variables, because instance variables don't exist until an object exists However, a static method can reference static variables or local variables
16
Class Relationships Classes can have various relationships to one another. Most common are: Dependency (“uses”) Aggregation (“has a”) Inheritance (“is a”)
17
Object Relationships Objects can have various types of relationships to each other A general association, as we've seen in UML diagrams, is sometimes referred to as a use relationship A general association indicates that one object (or class) uses or refers to another object (or class) in some way We could even annotate an association line in a UML diagram to indicate the nature of the relationship Author Book writes
18
Dependency One class dependent (uses) another class
Game uses ball, paddle Ship uses bullet Sometimes, a class depends on another instance of itself Is one date equal to another date? Is one picture equal to another picture?
19
Rational Class Design Let’s design a class that represents a rational number (fraction) What data needs to be stored? What methods or operations are needed? Look at the following client code:
20
Rational r1 = new Rational(6, 8);
Rational r3, r4, r5, r6, r7; Console.Out.WriteLine("First rational number: " + r1); Console.Out.WriteLine("Second rational number: " + r2); if (r1.Equals(r2)) Console.Out.WriteLine("r1 and r2 are equal."); else Console.Out.WriteLine("r1 and r2 are NOT equal."); r3 = r1.Reciprocal(); Console.Out.WriteLine("The reciprocal of r1 is: " + r3); r4 = r1.Add(r2); r5 = r1.Subtract(r2); r6 = r1.Multiply(r2); r7 = r1.Divide(r2); Console.Out.WriteLine("r1 + r2: " + r4); Console.Out.WriteLine("r1 - r2: " + r5); Console.Out.WriteLine("r1 * r2: " + r6); Console.Out.WriteLine("r1 / r2: " + r7); Console.In.ReadLine(); // Wait for enter key
22
UML Design Rational
23
Constructor public Rational (int numer, int denom) { }
24
Reciprocal public Rational Reciprocal ( ) { }
25
ToString public override string ToString ( ) { }
26
Reduce private void Reduce ( ) { if (numerator != 0) int common = Gcd(Math.Abs(numerator), denominator); numerator = numerator / common; denominator = denominator / common; }
27
Gcd private int Gcd (int num1, int num2) { while (num1 != num2) if (num1 > num2) num1 = num1 - num2; else num2 = num2 - num1; return num1; }
28
Add public Rational Add (Rational op2) { }
29
Subtract public Rational Subtract (Rational op2) { }
30
Multiply public Rational Multiply (Rational op2) { }
31
Divide public Rational Divide (Rational op2) { }
32
Equals public bool Equals (Rational op2) { }
33
Aggregation One class is “made up” of other classes
“has a” relationship Gameboard has a marble Deck has a card
34
Aggregation An aggregate object is an object that contains references to other objects For example, an Account object contains a reference to a String object (the owner's name) An aggregate object represents a has-a relationship A bank account has a name Likewise, a student may have one or more addresses
35
Aggregation in UML An aggregation association is shown in a UML class diagram using an open diamond at the aggregate end StudentBody + Main (args : String[]) : void + ToString() : String 1 2 Student - firstName : String - lastName : String - homeAddress : Address - schoolAddress : Address - streetAddress : String - city : String - state : String - zipCode : long Address
36
The this Reference The this reference allows an object to refer to itself That is, the this reference, used inside a method, refers to the object through which the method is being executed Suppose the this reference is used in a method called tryMe If tryMe is invoked as follows, the this reference refers to obj1: obj1.tryMe(); But in this case, the this reference refers to obj2: obj2.tryMe();
37
The this reference The this reference can also be used to distinguish the parameters of a constructor from the corresponding instance variables with the same names public Account (String name, long acctNumber, double balance) { this.name = name; this.acctNumber = acctNumber; this.balance = balance; }
38
Assignment Revisited The act of assignment takes a copy of a value and stores it in a variable For primitive types: num2 = num1; Before num1 5 num2 12 After num1 5 num2
39
Reference Assignment Before After
For object references, assignment copies the memory location: bishop2 = bishop1; Before bishop1 bishop2 After bishop1 bishop2
40
Aliases Two or more references that refer to the same object are called aliases of each other One object (and its data) can be accessed using different reference variables Aliases can be useful, but should be managed carefully Changing the object’s state (its variables) through one reference changes it for all of its aliases
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.