Difference between revisions of "OOP Class6"

esse quam videri
Jump to: navigation, search
Line 8: Line 8:
 
;Abstraction : Factor out details to work on fewer concepts at a time
 
;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...[http://iam.colum.edu/oop/browser/browser.aspx?f=/classsource/class4/DogBark DogBark] an example of how you don't need to know how all of the classes work just how to use them
 
;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...[http://iam.colum.edu/oop/browser/browser.aspx?f=/classsource/class4/DogBark DogBark] an example of how you don't need to know how all of the classes work just how to use them
;Polymorphism:
+
;Polymorphism: many forms that have the same attributes and abilities
 
;UML : Unified Modeling Language.
 
;UML : Unified Modeling Language.
  
 
TODO
 
TODO
 
;Virtual Functions: Functions that can be overridden.
 
;Virtual Functions: Functions that can be overridden.
;Static: Mem
+
;Static: Members that are associayed with a class not an instance of the class
  
 
==Shared Members - static members==
 
==Shared Members - static members==

Revision as of 15:43, 17 June 2008


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

Shared Members - static members

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


Pair Programming

Pair Programming

We are going to pair off to do our next assignment. Many of the paired programming principles come from XP (http://www.extremeprogramming.org/ Extreeme Progamming)

Pairs are good because

  • Pairs keep each other on track
  • A partner can help when you are stuck
  • Keep each other accountable


Some XP Principles

Fail - If you are having trouble succeeding fail.

Baby Steps - Do the smallest thing that you possible can that moves you in the right direction

If you do decide to dive and conqure the problem please remember that integration process is unpredictable and can be quite difficult. Try to integrate your code often. Try posting up your code and emailing or plan on meeting several times.

When two pair programmers are together one you should sit a one computer (yeah that right two of you at one computer) and one should type while the other watches and reflects. Feel free to slide the keyboard back and forth when someone get tired, stuck or has a new idea.

I would like you and your paired partner to create and demonstate classes in c# from the diagram below.


Homework

READ

Finish you tv radio class and add overloads to you example class quiz #2 next week