Difference between revisions of "OOP Class6"
(→Association - 'Uses A') |
(→Inheritance - 'Is A') |
||
Line 479: | Line 479: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==Association - 'Uses A'== | ==Association - 'Uses A'== |
Revision as of 15:56, 17 June 2008
Contents
Review
- Accessibility
- restrict the visibility of a class and it's members
- Classes
- Abstraction that has properties and methods. properties and the nouns and methods are the verbsClasses are used to define objects.
- Objects
- Instance of a class
- Abstraction
- Factor out details to work on fewer concepts at a time
- Encapsulation
- Allows us to use objects with out completely understanding how everything inside the object works. Encapsulation also allows the internal state of objects to be changed easily without affecting other objects or interfaces. Real barking dogs...DogBark an example of how you don't need to know how all of the classes work just how to use them
- Polymorphism
- many forms that have the same attributes and abilities
- UML
- Unified Modeling Language.
TODO
- Virtual Functions
- Functions that can be overridden.
- Static
- Members that are associayed with a class not an instance of the class
aka Shared Properties
Static - A type of member modifier that indicates that the member applies to the type rather than an instance of the type
<csharp>public class Dog { //some code
static private int dogCount; // total number of dogs
public Dog() { barkSound = "Woof!!!";
//Add a dog to the total dog count
dogCount++; } public Dog(string newName) { name = newName; barkSound = "Woof!!!"; //Add a dog to the total dog count dogCount++; }</csharp> }
Static dougCount Example
dogStatic.cs - source
OverLoading
You can overload a method to make it more flexible.
Simple Bark Method
<csharp> public class Dog {
public string Name; // the dog's name
public string BarkSound; // the sound of the dog's bark
public Dog() { BarkSound = "Woof!!!"; }
public string Bark() { string strBark = this.BarkSound;
barkCount ++; return strBark;
}
public void Eat() { //put eat code here } } </csharp>
overloaded method that makes a dog bark more than once.
<csharp> public class Dog {
public string Name; // the dog's name
public string BarkSound; // the sound of the dog's bark
public Dog() { BarkSound = "Woof!!!"; }
public string Bark() { string strBark = this.BarkSound;
barkCount ++; return strBark;
}
public string Bark(int numBarks) { string strBark = "";
for(int i =0; i < numBarks; i++) //bark many times { strBark += this.BarkSound; barkCount ++; } return strBark;
} } </csharp>
You can overload a method as much as you want as long as each overload has a unique argument signature
Overload Constructor
Overloading the constructor of you class can make it easier to use.
here is a simple dog contructor
<csharp> public class Dog {
public string BarkSound; // the sound of the dog's bark
public Dog() { BarkSound = "Woof!!!"; }
} </csharp>
we can modify this so that we can pass in the sound of the dogs bark when the object is created
<csharp> public class Dog {
public string BarkSound; // the sound of the dog's bark
public Dog(string newBarkSound) { this.BarkSound = newBarkSound; }
} </csharp>
or the name of the dog and the barksound
<csharp>
public class Dog
{
public string BarkSound; // the sound of the dog's bark
public string Name;
public Dog(string newBarkSound, string NewName) { this.BarkSound = newBarkSound;
this.Name = newName;
}
} </csharp>
you can have as many overoads as you want as long as each overload has a unique argument signature
Association - 'Uses A'
A dog uses a hydrant to relieve them self.
<csharp>//Dog simple class definition public class Dog {
//some dog code... public void Relieve(Hydrant h) { h.Clean = false; }
}
public class Hydrant {
public string Color; //the color of the hydrant public bool Clean; //if the hydrant is clean or dirty public Hydrant() { Color = "red"; Clean = true; } public override string ToString () { if (this.Clean == true) { return ("The " + this.Color + " hydrant is clean."); } else { return ("The " + this.Color + " hydrant is not clean."); } }
}</csharp>
Dog Association example DogHydrant.cs - source
Containment - 'Has A'
A dog has an owner
<csharp>Dog fido = new Dog("fido");
fido.Owner = new Person("Sue");</csharp>
<csharp>//Dog simple class definition public class Dog {
public string Name; // the dog's name public string BarkSound; // the sound of the dog's bark public Person Owner; // the dogs owner public Dog(string dogName) { Name = dogName; BarkSound = "Woof!!!"; }
public string Bark() { string s; s = this.Name + " says " + this.BarkSound; //Make sure the the dog has an owner if (!(this.Owner == null)) s += "\n" + Owner.Name + " says be quiet."; return s; }
}
public class Person
{ public string Name; //the color of the hydrant public Person(string newName) { Name = newName; } }</csharp>
Containment example
DogOwner.cs -source
Homework
READ
Finish you tv radio class and add overloads to you example class quiz #2 next week