Difference between revisions of "OOP Class9"
(→Private instance data members - accessors) |
|||
(19 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:IAM Classes]] |
+ | |||
+ | ==PolyMorphism== | ||
+ | |||
+ | Using the least specific class to increase reuse. | ||
+ | |||
+ | ==Value vs Reference Types== | ||
+ | |||
+ | int, float, string and most built in types are value types | ||
+ | |||
+ | defined classes are Reference types. | ||
==Review Coins== | ==Review Coins== | ||
Line 20: | Line 30: | ||
Private class memebers the use get and set keyword to set and retrieve data. Get and set are known as accessor methods private members are helpful when you want to also do other things when a data member is changed or change the rutern value under certain conditions. C# Programmer's Reference - Accessors http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfaccessorspg.asp. Lastly accessor also make read only and write only variables possible | Private class memebers the use get and set keyword to set and retrieve data. Get and set are known as accessor methods private members are helpful when you want to also do other things when a data member is changed or change the rutern value under certain conditions. C# Programmer's Reference - Accessors http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfaccessorspg.asp. Lastly accessor also make read only and write only variables possible | ||
− | <csharp>//private string color read/write | + | <syntaxhighlight lang="csharp">//private string color read/write |
private string color; | private string color; | ||
Line 44: | Line 54: | ||
return color; | return color; | ||
} | } | ||
− | }</ | + | }</syntaxhighlight> |
Another property that is a good candidate for a private instance data member is the dogs age | Another property that is a good candidate for a private instance data member is the dogs age | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
private string age; | private string age; | ||
Line 69: | Line 79: | ||
− | </ | + | </syntaxhighlight> |
==Windows forms== | ==Windows forms== | ||
+ | |||
+ | ===Separation of Concern=== | ||
+ | https://en.wikipedia.org/wiki/Separation_of_concerns | ||
+ | |||
+ | Keep you Moodle Object (logic) classes and your UI Presentation classes separate. This will probably be very different from how you handled login in form in previous classes. We will try to keep all the Model login in the Model classes and UI Logic in the Form class. This will allow us to easily move the Model classes to a different UI like the Web or XAML. | ||
Events | Events | ||
Line 82: | Line 97: | ||
http://iam.colum.edu/oop/MotorvehicleRace.zip | http://iam.colum.edu/oop/MotorvehicleRace.zip | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
private void button1_Click(object sender, EventArgs e) | private void button1_Click(object sender, EventArgs e) | ||
{ | { | ||
Line 88: | Line 103: | ||
MessageBox.Show("button1 Clicked"); | MessageBox.Show("button1 Clicked"); | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
Create a windows form with a button the uses your class. | Create a windows form with a button the uses your class. | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
using System; | using System; | ||
using System.Collections.Generic; | using System.Collections.Generic; | ||
Line 105: | Line 120: | ||
public partial class Form1 : Form | public partial class Form1 : Form | ||
{ | { | ||
− | Dog fido; | + | Dog fido; //The form 'has a' dog |
public Form1() | public Form1() | ||
Line 115: | Line 130: | ||
private void btnBark_Click(object sender, EventArgs e) | private void btnBark_Click(object sender, EventArgs e) | ||
{ | { | ||
− | lblBark.Text = fido.Bark(); | + | lblBark.Text = fido.Bark(); //UIEvents are delegated to the model class |
} | } | ||
− | + | ||
− | + | } | |
− | + | </syntaxhighlight> | |
− | + | ||
− | + | ==XAML Example== | |
− | + | ||
+ | Timer in XAML | ||
+ | https://msdn.microsoft.com/en-us/library/cc189084(v=vs.95).aspx | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Home Work== | ==Home Work== | ||
− | + | Create a windows form and port your classes. The form should have UI elements (buttons, dropdown, etc) that demonstrate the use of you classes. | |
+ | |||
+ | Get Android Studio Installed | ||
+ | |||
+ | You wili need | ||
+ | *Java JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html I'm still using Java 7 Java 8 also should ve fine | ||
+ | *Android Studio http://developer.android.com/sdk/installing/index.html?pkg=studio | ||
+ | |||
+ | |||
+ | Watch the Android-Studio-First-Look https://www.lynda.com/Android-tutorials/Welcome/143103/168098-4.html | ||
+ | |||
+ | You should logon to Oasis http://oasis.colum.edu First then select the training tab. Then search for 'Android-Studio-First-Look' | ||
+ | |||
+ | *Section 0 Introduction | ||
+ | *Section 1 Getting Started | ||
+ | *Section 2 Exploring the User Interface (fine to watch next week) | ||
+ | *Section 3 Designing and Coding (fine to watch next week) | ||
+ | |||
+ | |||
+ | https://www.lynda.com/Android-tutorials/Welcome/143103/168098-4.html |
Latest revision as of 16:31, 10 June 2019
Contents
PolyMorphism
Using the least specific class to increase reuse.
Value vs Reference Types
int, float, string and most built in types are value types
defined classes are Reference types.
Review Coins
?'s
Review MotorVehicle
?'s
Motorvehicle Diagram
http://iam.colum.edu/oop/browser/browser.aspx?f=/classsource/class7/MotorvehicleRace
Private instance data members - accessors
Microsoft has stared calling private variables with accessors Properties
Private class memebers the use get and set keyword to set and retrieve data. Get and set are known as accessor methods private members are helpful when you want to also do other things when a data member is changed or change the rutern value under certain conditions. C# Programmer's Reference - Accessors http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfaccessorspg.asp. Lastly accessor also make read only and write only variables possible
//private string color read/write
private string color;
public string Color
{
get
{
return color;
}
set
{
color = value;
}
}
//private string color read only
private string color;
public string Color
{
get
{
return color;
}
}
Another property that is a good candidate for a private instance data member is the dogs age
private string age;
public int Age
{
//age can only be accessed with get there is no set accessor
//age must be set with HappyBirthday()
get
{
return age;
}
}
public int HappyBirthday()
{
age++;
return age;
}
Windows forms
Separation of Concern
https://en.wikipedia.org/wiki/Separation_of_concerns
Keep you Moodle Object (logic) classes and your UI Presentation classes separate. This will probably be very different from how you handled login in form in previous classes. We will try to keep all the Model login in the Model classes and UI Logic in the Form class. This will allow us to easily move the Model classes to a different UI like the Web or XAML.
Events
- events from a windows form or web page are handled by event handlers. Events are raised when a user interacts with interface elements and handled by the event handlers.
http://www.csharphelp.com/archives/archive253.html
Examaple of event handlers and classes
http://iam.colum.edu/oop/MotorvehicleRace.zip
private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine("button1 Clicked");
MessageBox.Show("button1 Clicked");
}
Create a windows form with a button the uses your class.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsDog
{
public partial class Form1 : Form
{
Dog fido; //The form 'has a' dog
public Form1()
{
InitializeComponent();
fido = new Dog();
}
private void btnBark_Click(object sender, EventArgs e)
{
lblBark.Text = fido.Bark(); //UIEvents are delegated to the model class
}
}
XAML Example
Timer in XAML https://msdn.microsoft.com/en-us/library/cc189084(v=vs.95).aspx
Home Work
Create a windows form and port your classes. The form should have UI elements (buttons, dropdown, etc) that demonstrate the use of you classes.
Get Android Studio Installed
You wili need
- Java JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html I'm still using Java 7 Java 8 also should ve fine
- Android Studio http://developer.android.com/sdk/installing/index.html?pkg=studio
Watch the Android-Studio-First-Look https://www.lynda.com/Android-tutorials/Welcome/143103/168098-4.html
You should logon to Oasis http://oasis.colum.edu First then select the training tab. Then search for 'Android-Studio-First-Look'
- Section 0 Introduction
- Section 1 Getting Started
- Section 2 Exploring the User Interface (fine to watch next week)
- Section 3 Designing and Coding (fine to watch next week)
https://www.lynda.com/Android-tutorials/Welcome/143103/168098-4.html