170 likes | 185 Views
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
E N D
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); ... }
OperatorOverloading class BMW_Z4 { ... public BMW_Z4 () { Initialize(0, 2004, false); } public BMW_Z4 (int my) { Initialize(0, my, false); } private Initialize(int cs, int my, bool tu) { currentSpeed = cs; ModelYear = my; TopUp = tu; } ... } Notice same methodname, differentparameters Place commoninitialization in aseparate 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 Question: how many attributes does Dog have? Dog boolean rabid Chihuahua 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()…”