OOP

advertisement
Object-Oriented
Programming
Agenda
•
•
•
•
Static
Const
Overloading
Inheritance
Static
• Each instance of a class (called an
object) has a copy of the attributes
– Changing an attribute in one object
doesn’t affect the attribute of another
object
• But what if we want persistence
(shared) among all instances?
Static Variables
void PrintNumbers ()
{
static int count = 0; // this is only set to 0 ONCE
Console.WriteLine(count);
count++;
}
static void Main()
{
...
for(i=0; i < 50; i++)
PrintNumbers();
...
}
Static Attributes
class BMW_Z4
{
private static int VehicleId = 0;
public int MyID;
public BMW_Z4 ()
{
MyID = VehicleId;
VehicleId++;
}
...
}
static void Main()
{
...
BMW_Z4 my_z4 = new BMW_Z4(); // has VehicleId of 0
BMW_Z4 your_z4 = new BMW_Z4(); // has VehicleId of 1
...
}
Const
• Variables are just that – variable
– They can be changed programmatically
via the assignment operator (=)
• But there are times when some values
should be immutable
– Preface the declaration with “const”
– Cannot be changed – EVER!
Const Example
class BMW_Z4
{
public const int MaxSpeed = 185;
private int currentSpeed;
public void Accelerate
{
currentSpeed += 5;
if (currentSpeed > MaxSpeed)
currentSpeed = MaxSpeed;
}
...
}
Overloading
• Overloading involves using the same
method/function name
– Vary the number of parameters
– Vary the type of parameters
– Cannot just change return type (ambiguity
in invocation)
• Useful to keep things simple
– Squaring a number…
Overloading Example
int Square (int i)
{
return i * i;
}
float Square (float i)
{
return i * i;
}
static void Main()
{
...
float x = Square(5.3);
int y = Square(9);
...
}
Operator
Overloading
class BMW_Z4
{
...
public BMW_Z4 ()
{
Initialize(0, 2004, false);
}
public BMW_Z4 (int my)
{
Initialize(0, my, false);
}
Notice same method
name, different
parameters
private Initialize(int cs, int my, bool tu)
{
currentSpeed = cs;
ModelYear = my;
TopUp = tu;
}
...
}
Place common
initialization in a
separate function
Inheritance
• Inheritance allows one class to take on the
properties of another
• Superclass-subclass relationship
• Sometimes called parent-child relationship
• Use the keyword extends to express this
relationship
• Subclass will “inherit” certain attributes and
methods
• Benefit: good design, reuse of code
Class Hierarchy
Mammal
int weight
giveBirth( )
LandMammal
int numLegs
Dog
boolean rabid
Chihuahua
Question: how many
attributes does Dog
have?
SheepDog
Things to Note
• LandMammal is a superclass to Dog,
but a subclass to Mammal
• Dog has three attributes
– weight, numLegs and rabid
– Two from inheritance, one it declared itself
Visibility and Inheritance
• Public – allows all to see
• Private – allows only class in which defined
to see
• Protected – allows class and all subclasses
that inherit to see
• Consequently, we’ll now use protected
instead of private by default… (common)
C# Syntax
class Person
{
...
}
class Student : Person
{
...
}
class Professor : Person
{
...
}
Notice the use of “:”
The Base Class: “Object”
• All classes in C# inherit (sometimes
implicitly) from Object
– Includes common set:
• ToString()
• GetType()
• Equals()
• Often useful to override (implement) these
virtual functions
– “public override string ToString()…”
FIN
Download