Difference between revisions of "OOP Class7"
(→Home Work) |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:IAM Classes]] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[OOP Arrays]] | [[OOP Arrays]] | ||
==Review== | ==Review== | ||
+ | |||
+ | {{OOP Review Midterm}} | ||
Cat app with multiple toys | Cat app with multiple toys | ||
Line 22: | Line 18: | ||
[:interface-list {struct members} | [:interface-list {struct members} | ||
− | <csharp>struct Dog | + | <syntaxhighlight lang="csharp">struct Dog |
{ | { | ||
public string name; | public string name; | ||
public string weight; | public string weight; | ||
public int age; | public int age; | ||
− | }</ | + | }</syntaxhighlight> |
==Enumerators== | ==Enumerators== | ||
Line 37: | Line 33: | ||
[:base-type {enumerator-list}; | [:base-type {enumerator-list}; | ||
− | <csharp>//An enumerator for ServingSizes at BK | + | <syntaxhighlight lang="csharp">//An enumerator for ServingSizes at BK |
enum ServingSizes : uint | enum ServingSizes : uint | ||
{ | { | ||
Line 44: | Line 40: | ||
Large = 2, | Large = 2, | ||
SuperSize = 3 | SuperSize = 3 | ||
− | }</ | + | }</syntaxhighlight> |
− | <csharp>//another more useful example | + | <syntaxhighlight lang="csharp">//another more useful example |
// forced sequence to start | // forced sequence to start | ||
// from 1 instead of 0 (default) | // from 1 instead of 0 (default) | ||
Line 53: | Line 49: | ||
January = 1, February , March, April , | January = 1, February , March, April , | ||
May , June , July , August , Sept , Oct , Nov , Dec | May , June , July , August , Sept , Oct , Nov , Dec | ||
− | }</ | + | }</syntaxhighlight> |
Enumerator Example [http://iam.colum.edu/Poop/gbrowser.php?file=/classsource/class2/Enum.cs Enum.cs] | Enumerator Example [http://iam.colum.edu/Poop/gbrowser.php?file=/classsource/class2/Enum.cs Enum.cs] | ||
Line 71: | Line 67: | ||
single dimension arrays | single dimension arrays | ||
− | <csharp>string [] aryNames = new string[5]; | + | <syntaxhighlight lang="csharp">string [] aryNames = new string[5]; |
aryNames [0] = "Feta"; | aryNames [0] = "Feta"; | ||
Line 77: | Line 73: | ||
aryNames [2] = "Gruyere"; | aryNames [2] = "Gruyere"; | ||
aryNames [3] = "Edam"; | aryNames [3] = "Edam"; | ||
− | aryNames [4] = "Colby";</ | + | aryNames [4] = "Colby";</syntaxhighlight> |
Arrays are actually objects and support various methods. | Arrays are actually objects and support various methods. | ||
Line 90: | Line 86: | ||
GetValue | GetValue | ||
− | <csharp>string s = aryNames.GetValue(1).ToString();</ | + | <syntaxhighlight lang="csharp">string s = aryNames.GetValue(1).ToString();</syntaxhighlight> |
:s="Colby" | :s="Colby" | ||
IndexOf | IndexOf | ||
− | <csharp>int i = Array.IndexOf(aryNames, "Colby");</ | + | <syntaxhighlight lang="csharp">int i = Array.IndexOf(aryNames, "Colby");</syntaxhighlight> |
:i=1 | :i=1 | ||
LastIndexOf | LastIndexOf | ||
− | <csharp>int Lasti= Array.LastIndexOf(aryNames, "Colby");</ | + | <syntaxhighlight lang="csharp">int Lasti= Array.LastIndexOf(aryNames, "Colby");</syntaxhighlight> |
:Lasti=4 | :Lasti=4 | ||
SetValue | SetValue | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
aryNames.SetValue("Gouda", 1); | aryNames.SetValue("Gouda", 1); | ||
− | string setValue = aryNames.GetValue(1).ToString();</ | + | string setValue = aryNames.GetValue(1).ToString();</syntaxhighlight> |
Now Array(1) == "Gouda" | Now Array(1) == "Gouda" | ||
Reverse | Reverse | ||
:Reverse reverses the array | :Reverse reverses the array | ||
− | <csharp>Array.Reverse(aryNames);</ | + | <syntaxhighlight lang="csharp">Array.Reverse(aryNames);</syntaxhighlight> |
The Reversed array looks like Reverse | The Reversed array looks like Reverse | ||
Line 125: | Line 121: | ||
:The Sort method sort the array. Arrays are sorted accourding to how objects compare to each other usually implemented using the IComparer interface | :The Sort method sort the array. Arrays are sorted accourding to how objects compare to each other usually implemented using the IComparer interface | ||
− | <csharp>Array.Sort(aryNames);</ | + | <syntaxhighlight lang="csharp">Array.Sort(aryNames);</syntaxhighlight> |
The Sorted Array List Looks like | The Sorted Array List Looks like | ||
Line 168: | Line 164: | ||
===List=== | ===List=== | ||
The List of now part of System.Collections. In order to user it you must add a using statement | The List of now part of System.Collections. In order to user it you must add a using statement | ||
− | <csharp>using System.Collections.Generic;</ | + | <syntaxhighlight lang="csharp">using System.Collections.Generic;</syntaxhighlight> |
create an arraylist | create an arraylist | ||
− | <csharp>List<String> myList = new List<String>();</ | + | <syntaxhighlight lang="csharp">List<String> myList = new List<String>();</syntaxhighlight> |
add and element or two | add and element or two | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
myList.Add("Feta"); | myList.Add("Feta"); | ||
myList.Add("Colby"); | myList.Add("Colby"); | ||
Line 181: | Line 177: | ||
myList.Add("Edam"); | myList.Add("Edam"); | ||
myList.Add("Colby"); | myList.Add("Colby"); | ||
− | </ | + | </syntaxhighlight> |
This produces and List like | This produces and List like | ||
<pre> | <pre> | ||
Line 193: | Line 189: | ||
Insert an element | Insert an element | ||
− | <csharp>myList.Insert(1,"Gouda");</ | + | <syntaxhighlight lang="csharp">myList.Insert(1,"Gouda");</syntaxhighlight> |
Now our ArrayList Looks like | Now our ArrayList Looks like | ||
Line 207: | Line 203: | ||
Remove an element | Remove an element | ||
− | <csharp>//remove by index | + | <syntaxhighlight lang="csharp">//remove by index |
myList.RemoveAt(1); | myList.RemoveAt(1); | ||
//remove by data | //remove by data | ||
myList.Remove("Colby"); //removes first occurance of Colby | myList.Remove("Colby"); //removes first occurance of Colby | ||
− | </ | + | </syntaxhighlight> |
Now our List looks like | Now our List looks like | ||
Line 238: | Line 234: | ||
foreach | foreach | ||
− | <csharp>foreach (string n in aryNames) | + | <syntaxhighlight lang="csharp">foreach (string n in aryNames) |
{ | { | ||
aryDropDown.Items.Add(n); | aryDropDown.Items.Add(n); | ||
− | }</ | + | }</syntaxhighlight> |
==Pair Programming== | ==Pair Programming== | ||
Line 271: | Line 267: | ||
− | [[OOP Students Classes Diagram]] | + | Practice for Medterm Exam [[OOP Students Classes Diagram]] |
If you need to add any supporting methods or properties that are not on the diagram feel free. | If you need to add any supporting methods or properties that are not on the diagram feel free. | ||
Line 277: | Line 273: | ||
<pre> | <pre> | ||
− | + | CourseName:Object Oriented Programming CoureseNumber:36-2600 | |
− | + | Hello my name is Jeff Meyers my ID is 47167 | |
− | + | I'm teaching: | |
− | + | CourseName:Object Oriented Programming CoureseNumber:36-2600 | |
− | + | Hello my name is Sean my ID is 666 | |
− | + | I'm taking: | |
− | + | CourseName:Object Oriented Programming CoureseNumber:36-2600 | |
− | + | CourseName:Writing and Retoric CoureseNumber:42-1000 | |
− | + | ConsoleApplicationExtreemeCourse.Pencil is sharp | |
− | + | ConsoleApplicationExtreemeCourse.Pencil is not sharp | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | CourseName: Object Oriented Programming | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | CourseName: Object Oriented Programming | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | CourseName: Object Oriented Programming | ||
− | CourseName: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 16:30, 10 June 2019
Contents
Review
- OOP Class1 Introduction to .NET and C#
- Compliled vs Interpreted Languages
- OOP Class2 C# fundamentals
- Basic Data Types
- Operators
- Conversion Casting
- Constants
- Arrays
- Single Arrays
- Multi Dimensianal Arrays
- Jagged Arrays
- Enumerators
- OOP Class3 CSharp Control Structures
- Operators
- Branching Statements
- Branching
- If
- Switch
- Looping
- for
- foreach
- do
- while
- Branching
- OOP Class4 Classes and Objects
- Encapsulation
- Classes
- Fields
- Methods
- Constuctor
- Overloading
- OOP Class5 Object Relationships
- Access Modifiers
- Accessors
- Static Members
- Relationships
- Association 'Uses a'
- Containment 'Has a'
- Inhertance 'Is a'
- OOP Class6 Object Relation Ships 2 / UML
- UML
- Inheritance 'Is A'
- Virual Functions Override
- Polymorphism
- Structs
- OOP Class7 Polymorphism / Visual Studio 2005
- Fancy Arrays
- Colections
- Polymorphism
Cat app with multiple toys
Course App in console and windows
Structs
Lightweight alternatives to classes. Structs do not support inheritance or destructors. Don't worry if you don't understand structs yet it hard cuz the book teaches them before classes. We will talk more about stucts after we talk about classes Syntax
[ attributes] [access-modifiers] struct identifier [:interface-list {struct members}
struct Dog
{
public string name;
public string weight;
public int age;
}
Enumerators
Enumerators are used to set predefined list of named constants. Syntax
[ attributes] [modifiers] enum identifier [:base-type {enumerator-list};
//An enumerator for ServingSizes at BK
enum ServingSizes : uint
{
Small = 0,
Regular = 1,
Large = 2,
SuperSize = 3
}
//another more useful example
// forced sequence to start
// from 1 instead of 0 (default)
enum Months
{
January = 1, February , March, April ,
May , June , July , August , Sept , Oct , Nov , Dec
}
Enumerator Example Enum.cs
Fancy Arrays
Arrays
- Regular Array objects are like list collections
Arrays are groups of variables of the same type
- Syntax
type [] identifier
single dimension arrays
string [] aryNames = new string[5];
aryNames [0] = "Feta";
aryNames [1] = "Colby";
aryNames [2] = "Gruyere";
aryNames [3] = "Edam";
aryNames [4] = "Colby";
Arrays are actually objects and support various methods.
- GetValue
- IndexOf
- LastIndexOf
- SetValue
- Reverse
- Sort
GetValue
string s = aryNames.GetValue(1).ToString();
- s="Colby"
IndexOf
int i = Array.IndexOf(aryNames, "Colby");
- i=1
LastIndexOf
int Lasti= Array.LastIndexOf(aryNames, "Colby");
- Lasti=4
SetValue
aryNames.SetValue("Gouda", 1);
string setValue = aryNames.GetValue(1).ToString();
Now Array(1) == "Gouda"
Reverse
- Reverse reverses the array
Array.Reverse(aryNames);
The Reversed array looks like Reverse
0 Colby 1 Edam 2 Gruyere 3 Gouda 4 Feta
Sort
- The Sort method sort the array. Arrays are sorted accourding to how objects compare to each other usually implemented using the IComparer interface
Array.Sort(aryNames);
The Sorted Array List Looks like
0 Colby 1 Edam 2 Feta 3 Gouda 4 Gruyere
Array Example 2
Pros and Cons of working with arrays pros
- East to use
- Fast to alter
- Flast to iterate though
- Specific type of elements ( single type)
cons
- Fixed size
- Insterting is difficult
Collections
Collections are groups of objects. types of collections
- set - no index
- list - has index
- map - has key/value pair
Set is like storing a bunch of objects in a bag. The order they are removed from the bag has nothing to do with the order they are removed. Set collections do not have a unique identifier.
List types of collections have an integer for an indexer. This gives them a unique identifier and an order.
Map types also have an index but it is not necessarily an integer. It could be anything unique.
List
The List of now part of System.Collections. In order to user it you must add a using statement
using System.Collections.Generic;
create an arraylist
List<String> myList = new List<String>();
add and element or two
myList.Add("Feta");
myList.Add("Colby");
myList.Add("Gruyere");
myList.Add("Edam");
myList.Add("Colby");
This produces and List like
Feta Colby Gruyere Edam Colby
Insert an element
myList.Insert(1,"Gouda");
Now our ArrayList Looks like
Feta Gouda Colby Gruyere Edam Colby
Remove an element
//remove by index
myList.RemoveAt(1);
//remove by data
myList.Remove("Colby"); //removes first occurance of Colby
Now our List looks like
Feta Gruyere Edam Colby
Pros and con of Generic Lists Pros
- No fixed size
- Insert and Remove
Cons
- Slower than arrays
- Inefficient with memory (when the array size exceeds the upper bound .NET doubles the size of the array.
ArrayList Example
Polymorphism
Arrays and Collections of objects allow for polymorphism.
foreach
foreach (string n in aryNames)
{
aryDropDown.Items.Add(n);
}
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
Integrate and communicate 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 demonstrate classes in c# from the diagram below.
Home Work
Practice for Medterm Exam OOP Students Classes Diagram
If you need to add any supporting methods or properties that are not on the diagram feel free.
CourseName:Object Oriented Programming CoureseNumber:36-2600 Hello my name is Jeff Meyers my ID is 47167 I'm teaching: CourseName:Object Oriented Programming CoureseNumber:36-2600 Hello my name is Sean my ID is 666 I'm taking: CourseName:Object Oriented Programming CoureseNumber:36-2600 CourseName:Writing and Retoric CoureseNumber:42-1000 ConsoleApplicationExtreemeCourse.Pencil is sharp ConsoleApplicationExtreemeCourse.Pencil is not sharp