3. How to work with OOP in .NET
• Structure of Form class
• Adding variables
– Public
– Private
• Adding member functions
– Procedural
• Adding classes by “ref”
• Passing parameters
– %,^
26. DateTime
• Considering today is 22/10/2010, the output will be
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
{
// Calculate what day of the week is 36 days from this instant
DateTime ^today= DateTime::Now;
TimeSpan duration(36, 0, 0, 0);
DateTime ^answer= today->Add(duration);
textBox1->Text= answer->ToString();
}
11/27/2010 1:49:12 AM
e)
33. Properties
• A compromise between a function and a variable!
• See, the following, how awesome!
private:
int MyInt;
public:
// property block
property int intProperty
{
int get()
{
return MyInt;
}
void set(int value)
{
MyInt= value;
}
}
34. Properties
The property keyword
introduces the
declaration of a
property and can
appear in a class,
interface, or value
type. A property can
have a getter function
(read only), a setter
function (write only),
or both (read-write).
public:
int MyInt;
// property block
property int intProperty
{
int get()
{
return MyInt;
}
void set(int value)
{
MyInt= value;
}
}
35. Properties
• So, how to use it? Like the following …
property int intProperty
{
int get()
{
return MyInt;
}
void set(int value)
{
MyInt= value;
}
}
private: System::Void button1_Click(System::Object^ sender,
System::EventArgs^ e)
{
textBox1->Text= intProperty.ToString();
}
37. Properties
• So, how to use it? Like the following …
property int intProperty
{
int get()
{
return MyInt;
}
void set(int value)
{
MyInt= value;
}
}
private: System::Void button1_Click(System::Object^ sender,
System::EventArgs^ e)
{
intProperty= 5;
textBox1->Text= intProperty.ToString();
}
46. stringint Conversion
• NewLine:
– Environment::NewLine;
• Converting from string to int:
– Int32::Parse(textBox1->Text);
– Int32::TryParse(textBox1->Text);
47. stringint Conversion
• Converting from int to string:
– Exp #1:
• int x;
• textBox1->Text= x.ToString();
– Exp #2:
• int ^;
x
• textBox1->Text= x->ToString();
– Exp #3:
• int ^;
x
• String ^S= x->ToString();
48. stringint Conversion
private: System::Void button1_Click_1(System::Object^
System::EventArgs^ e)
{
int i= 3;
i= int::Parse(textBox1->Text);
}
What happens if we have “435345” in textBox1?
What happens if we have “wewe” in textBox1?
What happens if we have “213s” in textBox1?
What happens if we have “” in textBox1?
sender,
49. stringint Conversion
private: System::Void button1_Click_1(System::Object^
System::EventArgs^ e)
{
int i= 3;
i= int::TryParse(textBox1->Text, i ;
}
What happens if we have “435345” in textBox1?
What happens if we have “wewe” in textBox1?
What happens if we have “213s” in textBox1?
What happens if we have “” in textBox1?
sender,
60. Use the console to trackdebug values!
Do not use messagebox for tracking!
61. Change between Console and
Windows Form
• In the project properties for all configurations (Project |
Properties, choose Configuration 'All Configurations', locate
Config Properties -> Linker -> System), change the SubSystem
from Console to Windows.
71. Peak on Exception Handling
• Test it live!
private: System::Void panel1_MouseClick(System::Object^ sender,
System::Windows::Forms::MouseEventArgs^ e)
{
try
{
if (textBox1->text == “Hi”)
{
MessageBox::Show(“It’s time for Exceptions! ");
}
}
catch (System::FormatException ^e)
{
MessageBox::Show("You Should Enter a String in textBox first ");
}
}
84. Strings in Action
• Comparing Strings (int):
– Compare :
• returns an integer that indicates the relationship of one string to a
second string in the sort order.
87. Strings in Action
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I decided not to go!";
int i = String::Compare(str1,str2);
textBox1->Text = i.ToString();
}
88. Strings in Action
• Testing Strings for Equality (bool):
– You call the Equals method to determine whether two strings are
equal.
89.
90.
91. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I decided not to go!";
bool b= String::Equals(str1,str2);
textBox1->Text = b.ToString();
}
sender,
92. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I Wanna go!";
bool b = String::Equals(str1,str2);
textBox1->Text = b.ToString();
}
true
sender,
93. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I Wanna go! ";
bool b = String::Equals(str1,str2);
textBox1->Text = b.ToString();
}
false
sender,
94. Strings in Action
• Finding Characters in a String :
– The String class includes two kinds of search methods:
• Methods that return a “ bool” value to indicate whether a particular
substring is present in a string instance. These include
the Contains, EndsWith, and StartsWith methods.
• Methods that indicate the starting position of a substring in a string
instance “int”. These include the IndexOf,IndexOfAny, LastIndexOf,
and LastIndexOfAny methods.
95. Strings in Action
• String::Contains Method (bool)
– Returns a value indicating whether the specified String object occurs
within this string.
96. Strings in Action
{
String^ s1 = "The brown fox jumps over the lazy dog";
String^ s2 = "fox";
bool b;
b = s1->Contains( s2 );
Console::WriteLine( "Is the string, s2, in the string, s1?: {0}", b );
}
Is string , s2, in string, s1? True
97. Strings in Action
• String::IndexOf Method (int)
– Reports the index of the first occurrence of one or more characters,
or the first occurrence of a string, within this string.
– This member is overloaded. For complete information about this
member, including syntax, usage, and examples, click a name in the
overload list.
98. Name
IndexOf(Char)
IndexOf(String)
IndexOf(Char, Int32)
Description
Reports the index of the first occurrence of the specified Unicode character in this
string.
Reports the index of the first occurrence of the specified string in this instance.
Reports the index of the first occurrence of the specified Unicode character in this
string. The search starts at a specified character position.
IndexOf(String, Int32) Reports the index of the first occurrence of the specified string in this instance.
The search starts at a specified character position.
IndexOf(String,
Reports the index of the first occurrence of the specified string in the
StringComparison)
current Stringobject. A parameter specifies the type of search to use for the
specified string.
IndexOf(Char, Int32,
Reports the index of the first occurrence of the specified character in this
Int32)
instance. The search starts at a specified character position and examines a
specified number of character positions.
IndexOf(String, Int32, Reports the index of the first occurrence of the specified string in this instance.
Int32)
The search starts at a specified character position and examines a specified number
of character positions.
IndexOf(String, Int32, Reports the index of the first occurrence of the specified string in the
StringComparison)
current Stringobject. Parameters specify the starting search position in the current
string and the type of search to use for the specified string.
IndexOf(String, Int32, Reports the index of the first occurrence of the specified string in the
Int32, StringComparison) current Stringobject. Parameters specify the starting search position in the current
string, the number of characters in the current string to search, and the type of
search to use for the specified string.
99. int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
// Create a Unicode String with 5 Greek Alpha characters
String^ szGreekAlpha = gcnew String( L'x0319',5 );
// Create a Unicode String with a Greek Omega character
wchar_t charArray5[3] = {L'x03A9',L'x03A9',L'x03A9'};
String^ szGreekOmega = gcnew String( charArray5,2,1 );
String^ szGreekLetters = String::Concat( szGreekOmega, szGreekAlpha, szGreekOmega>Clone() );
// Examine the result
Console::WriteLine( szGreekLetters );
// The first index of Alpha
int ialpha = szGreekLetters->IndexOf( L'x0319' );
// The last index of Omega
int iomega = szGreekLetters->LastIndexOf( L'x03A9' );
Console::WriteLine( String::Concat( "The Greek letter Alpha first appears at
index ", Convert::ToString( ialpha ) ) );
Console::WriteLine( String::Concat( " and Omega last appears at index ",
Convert::ToString( iomega ), " in this String." ) );
return 0;
}
100. Strings in Action
Hello World
Ω?????Ω
The Greek letter Alpha first appears at index 1
and Omega last appears at index 6 in this String.
Press any key to continue . . .
101. Strings in Action–Trim() method
• String::Trim Method
– Removes all leading and trailing white-space characters from the
current String object.
102. int main()
{
String^ animal1 = "fox";
String^ animal2 = "dog";
String^ strTarget = String::Format( "The {0} jumped over the {1}.", animal1, animal2 );
Console::WriteLine
( "The original string is:{0}{1}{0}", Environment::NewLine, strTarget );
Console::Write
( "Enter an adjective (or group of adjectives) to describe the {0}: ==> ", animal1 );
String^ adj1 = Console::ReadLine();
Console::Write
( "Enter an adjective (or group of adjectives) to describe the {0}: ==> ", animal2 );
String^ adj2 = Console::ReadLine();
adj1 = String::Concat( adj1->Trim(), " " );
adj2 = String::Concat( adj2->Trim(), " " );
strTarget = strTarget->Insert( strTarget->IndexOf( animal1 ), adj1 );
strTarget = strTarget->Insert( strTarget->IndexOf( animal2 ), adj2 );
Console::WriteLine
( " {0}The final string is: {0} {1}", Environment::NewLine, strTarget );
}
103. Strings in Action
The original string is:
The fox jumped over the dog.
Enter an adjective (or group of adjectives) to describe the fox: ==>
bold
Enter an adjective (or group of adjectives) to describe the dog: ==>
lazy
The final string is:
The bold fox jumped over the lazy dog.
104. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I DeciDEd not to go!";
str2 = str2->ToLower();
textBox1->Text = str2;
}
sender,
105. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = "I decided not to go!
";
str2 = (str2->ToLower())->Trim() ;
textBox1->Text = str2+str1;
}
sender,
106. Strings in Action
private: System::Void button1_Click(System::Object^
System::EventArgs^ e)
{
String ^str1 = "I Wanna go!";
String ^str2 = “
I DeCided not to go! ";
str2 = (str2->ToLower())->Trim() ;
textBox1->Text = str2;
}
sender,
107. Strings in Action
• String::Copy Method (String to String)
– Creates a new instance of String with the same value as a specified String.
// Sample for String::Copy()
using namespace System;
int main()
{
String^ str1 = "abc";
String^ str2 = "xyz";
Console::WriteLine( "1) str1 = '{0}'",
Console::WriteLine( "2) str2 = '{0}'",
Console::WriteLine( "Copy..." );
str2 = String::Copy( str1 );
Console::WriteLine( "3) str1 = '{0}'",
Console::WriteLine( "4) str2 = '{0}'",
}
1) str1
2) str2
Copy...
3) str1
4) str2
= 'abc'
= 'xyz'
= 'abc'
= 'abc'
str1 );
str2 );
str1 );
str2 );
108. Strings in Action
• String::CopyTo Method (String)
– Copies a specified number of characters from a specified position in
this instance to a specified position in an array of Unicode characters.
109. Strings in Action
• Parameters
– sourceIndexType: System::Int32
The index of the first character in this instance to copy.
– destinationType: array<System::Char>
An array of Unicode characters to which characters in this instance
are copied.
– destinationIndexType: System::Int32
The index in destination at which the copy operation begins.
– countType: System::Int32
The number of characters in this instance to copy to destination.
110. using namespace System;
int main()
{
// Embed an array of characters in a string
String^ strSource = "changed";
array <Char> ^destination = {'T','h','e',' ','i','n','i','t','i','a','l','
','a','r','r','a','y'};
// Print the char array
Console::WriteLine( destination );
// Embed the source string in the destination string
strSource->CopyTo( 0, destination, 4, strSource->Length );
// Print the resulting array
Console::WriteLine( destination );
strSource = "A different string";
// Embed only a section of the source string in the destination
strSource->CopyTo( 2, destination, 3, 9 );
// Print the resulting array
Console::WriteLine( destination );
}
111.
112. Strings in Action
The initial array
The changed array
Thedifferentarray
Press any key to continue . . .
113. Strings in Action
• String::Replace Method (String , String)
– Returns a new string in which all occurrences of a specified string in
the current instance are replaced with another specified string.
114. Strings in Action
using namespace System;
int main()
{
String^ errString = "This docment uses 3 other docments to docment the
docmentation";
Console::WriteLine( "The original string is:n'{0}'n", errString );
// Correct the spelling of S"document".
String^ correctString = errString->Replace( "docment", "document" );
Console::WriteLine( "After correcting the string, the result is:n'{0}'",
correctString );
}
This code example produces the following output:
The original string is:
'This docment uses 3 other docments to docment the docmentation'
After correcting the string, the result is:
'This document uses 3 other documents to document the documentation'