Object-Oriented Programming Using C# Objectives In this session, you will learn to: Describe memory allocation Use structure Use enumerations Implement arrays Use collections
Ver. 1.0
Session 7
Slide 1 of 32
Object-Oriented Programming Using C# Describing Memory Allocation The memory allocated to variables is referred to in the following ways: Value types: Contains data. Built-in data types, such as int, char, and float are value types. Reference types: Contains address referring to a block of memory. Data types, such as string and class are reference types.
Let us understand the concept of memory allocation in detail.
Ver. 1.0
Session 7
Slide 2 of 32
Object-Oriented Programming Using C# Describing Memory Allocation (Contd.) Value Type: int Num1; Num1=50;
Variable Declaration Num1
Initialization
50 Both Num1 and Num2 Contain 50 Num2 int Num2;
Variable Declaration
Num2=Num1;
Initializing Num2 with Num1
Ver. 1.0
Session 7
50
Slide 3 of 32
Object-Oriented Programming Using C# Describing Memory Allocation (Contd.) Value Type (Contd.): Num1 New Value Assigned to Num1
Num1=60;
The Value of Num2 Remains Unaffected
60
Num2 50
Ver. 1.0
Session 7
Slide 4 of 32
Object-Oriented Programming Using C# Describing Memory Allocation (Contd.) Reference Type: Car Suzuki= new Car();
Object of Class Car()
Suzuki.Model=10;
Initialization Member Variable of Class Car()
Ver. 1.0
Car Mercedes;
Object of Class Car()
Mercedes=Suzuki;
Initializing Mercedes with Suzuki
Session 7
Slide 5 of 32
Object-Oriented Programming Using C# Describing Memory Allocation (Contd.) Reference Type (Contd.): Suzuki Referring to Memory Location Where the Data is Stored
***
10
Mercedes Referring to Memory Location Where the Data is Stored
Ver. 1.0
***
Session 7
Slide 6 of 32
Object-Oriented Programming Using C# Using Structure A structure is a value type data type. When you want a single variable to hold related data of various data types, you can create a structure. To create a structure you use the struct keyword. The following code shows the example of a declaring a structure names Bill_Details: struct Bill_Details { public string inv_No; // Invoice Number string ord_Dt; // Order Date string custName; // Customer name
Ver. 1.0
Session 7
Slide 7 of 32
Object-Oriented Programming Using C# Using Structure (Contd.) public string product; // Product Name public double cost; // Cost of the product public double due_Amt; // Total amount due }
Ver. 1.0
Session 7
Slide 8 of 32
Object-Oriented Programming Using C# Using Enumeration Enumeration is a value type data type. Enumeration contains its own values and cannot inherit or pass inheritance. Enumerators allows you to assign symbolic names to integral constants. To enumerate, you can use the enum keyword.
Ver. 1.0
Session 7
Slide 9 of 32
Object-Oriented Programming Using C# Declaring an Enumeration The following code is an example of declaring an enumeration named Days: enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri };
Ver. 1.0
Session 7
Slide 10 of 32
Object-Oriented Programming Using C# Implementing Enumerations After declaring the enumeration type, you can use the enumeration type in the same manner as any other data type: int First_Day = (int)Days.Sat; int Last_Day = (int)Days.Fri;
Ver. 1.0
Session 7
Slide 11 of 32
Object-Oriented Programming Using C# Implementing Arrays An array is a collection of values of the same data type. The following figure shows the array structure in the system’s memory.
Ver. 1.0
Index
Index
Value 0
Value 6
Session 7
Slide 12 of 32
Object-Oriented Programming Using C# Declaring an Array An array needs to be declared before it can be used in a program. You can declare an array by using the following statement: datatype[] Arrayname;
Let us understand the explanation of the various elements of the array declaration through an example.
Ver. 1.0
Session 7
Slide 13 of 32
Object-Oriented Programming Using C# Declaring an Array (Contd.) int[ ] Score;
Ver. 1.0
Datatype Is used to specify the data type for the elements
Session 7
Slide 14 of 32
Object-Oriented Programming Using C# Declaring an Array (Contd.) int[ ] Score;
Ver. 1.0
[] Is used to specify the rank of the array
Session 7
Slide 15 of 32
Object-Oriented Programming Using C# Declaring an Array (Contd.) int[ ] Score;
Ver. 1.0
Arrayname Is used to specify the name of the array using which the elements of the array will be initialized and manipulated
Session 7
Slide 16 of 32
Object-Oriented Programming Using C# Initializing and Assigning Values to Array In C#, you can initialize the array variable and can assign values to the array elements. In addition, you can copy the array variable to another variable. During initialization, you need to use the new keyword to create an instance of the array. In addition, the size of the array is also specified while it is initialized. The following is an example of array initialization: int[] Score; // Array declaration Score = new int[10]; //Array Instance
Ver. 1.0
Session 7
Slide 17 of 32
Object-Oriented Programming Using C# Initializing and Assigning Values to Array (Contd.) You can assign values to each element of the array by using the index number, which is called the array subscript of the element. The following is an example of assigning values to the array: int[] Score = new int[3]; Score[0]=10;
Or int[] Score={5,10,15};
When you copy the array variable, both the source and target variable refer to the same array instance in the memory. The following is an example of copying the array variables: int[] Source = new int[10] {0, 1, 2, 3, 4}; int[] Target= Source;
Ver. 1.0
Session 7
Slide 18 of 32
Object-Oriented Programming Using C# Manipulating Array Elements When an array is initialized, you can access the element values and manipulate them. The foreach loop is specially used for manipulating arrays. The following is the syntax of the foreach loop: foreach (type identifier in expression) { //statements }
Ver. 1.0
Session 7
Slide 19 of 32
Object-Oriented Programming Using C# Manipulating Array Elements (Contd.) The following is the example of foreach loop: int[] Numbers = { 4, 3, 2, 1, 0, -1, -2, 9, 5 }; Console.WriteLine("The Contents of an Array is:"); foreach (int K in Numbers) { Console.WriteLine("{0} \t",K); }
Ver. 1.0
Session 7
Slide 20 of 32
Object-Oriented Programming Using C# Manipulating Array Elements (Contd.) While declaring a method if you are not sure about the number of arguments passed as a parameter, you can use the param array. The following is the example of param array: public int Adding_ArrayElement(params int[] List) { int Total = 0; foreach ( int I in List ) { Total += I; } return Total; }
Ver. 1.0
Session 7
Slide 21 of 32
Object-Oriented Programming Using C# Demo: Matrix Subtraction Using Arrays Problem Statement: David, a student of California University, is currently pursuing mathematics. He is working on a project named Matrix Subtraction. He needs to perform the following tasks for his project: Accept data in two Arrays. Perform the subtraction operation. Verify the value of subtraction.
Help David to create the C# program using Visual Studio IDE.
Ver. 1.0
Session 7
Slide 22 of 32
Object-Oriented Programming Using C# Demo: Matrix Subtraction Using Arrays (Contd.) Solution: To solve the preceding problem, David needs to perform the following tasks: 1. Create a console-based application for Matrix Subtraction. 2. Build and execute an application.
Ver. 1.0
Session 7
Slide 23 of 32
Object-Oriented Programming Using C# Multidimensional Arrays The rank value of the array is also known as the dimension of the array. The array can be single dimensional or multidimensional. Single dimensional array stores data in a row. Multidimensional array stores data using different dimensions. The following figure is a graphical representation of values stored in a single dimensional array and a multidimensional array. int [] Num;
int[,] Num; 0
0
1
2
3
4
1 0
Ver. 1.0
Session 7
1
2
3
4
Slide 24 of 32
Object-Oriented Programming Using C# Multidimensional Arrays (Contd.) The Array class is the base class for all the arrays in C#. The Array class provides properties and methods to work with arrays. Properties: The following table explains some of the most commonly used properties of the Array class.
Ver. 1.0
Properties
Explanation
Length
Returns the total number of items in all the dimensions of an array
Rank
Returns the total number of items in all the dimensions of an array
IsFixedSize
Return a value indicating if an array has a fixed size or not
IsReadOnly
Returns a value indicating if an array is read-only or not
Session 7
Slide 25 of 32
Object-Oriented Programming Using C# Multidimensional Arrays (Contd.) Methods: The following table explains some of the most commonly used methods of the Array class.
Ver. 1.0
Properties
Explanation
Sort
Performs sort operation on an array passed to it as a parameter
Clear
Removes all items of an array and sets a range of items in the array to 0
GetLength
Returns the number of items in an Array
GetValue
Returns the value of the specified item in an Array
IndexOf
Returns the index of the first occurrence of a value in a one-dimensional Array or in a portion of the Array
Session 7
Slide 26 of 32
Object-Oriented Programming Using C# Using Collections Arrays are used to collect the elements of same data type. The .NET Framework provides several classes that also collect elements in specialized ways. Theses classes are the Collection classes, and are declared in the System.Collections namespace and sub-namespaces.
Ver. 1.0
Session 7
Slide 27 of 32
Object-Oriented Programming Using C# Using Collections (Contd.) The collection classes accept, hold, and return their elements as items. The element type of collection class is an object. Object is a reference type. The following figure shows the storage of values in array of type int: HEAP
STACK
Array
@
9
7
3
2
int [] array= {9, 7, 3, 2};
Ver. 1.0
Session 7
Slide 28 of 32
Object-Oriented Programming Using C# Using Collections (Contd.) The action which automatically converts the value type to the reference type, is known as boxing. The following figure shows the boxing technique. HEAP
STACK
2
7 Array @
@
@
9
@
@
3
int [] array= {9, 7, 3, 2};
Ver. 1.0
Session 7
Slide 29 of 32
Object-Oriented Programming Using C# Using Collections (Contd.) When you want to access the elements of an array through its index value location in an array, use an ArrayList class. The following table describes the use of various methods of an ArrayList class.
Ver. 1.0
Method
Use
Add
Adds an object to the end of the ArrayList
Remove
Removes the element at the first occurrence of a specific object from the ArrayList
Clear
Removes all the elements from the ArrayList
Insert
Inserts an element into the ArrayList at the specified index
TrimToSize
Sets the capacity to the actual number of elements in the ArrayList
Sort
Sorts the elements in the ArrayList
Reverse
Reverses the element in the ArrayList
Session 7
Slide 30 of 32
Object-Oriented Programming Using C# Summary In this session, you learned that: Memory allocated to variables are of two types, value type and reference type. Value-types are the simplest types in C#. Variables of value types directly contain their data in the variable. Reference-types variables contain only a reference to data. The data is stored in a separate memory area. A value type variable holds its value in the stack. A reference type variable holds a reference to an object in the heap. To hold related data of various data type in single variable, structures are used. C# provides the features of enum to create user defined data types with numbers as an index value to access them. An array is a collection of values of the same data type.
Ver. 1.0
Session 7
Slide 31 of 32
Object-Oriented Programming Using C# Summary (Contd.) The foreach statement interprets the common loop process and removes the need for you to check the array size. Param arrays are used in the methods with parameter list when the total number of parameters is not known. The .NET Framework provides several classes that also collect elements together in other specialized ways. These are the Collection classes, and they live in the System namespace. ArrayList is useful when you want to manipulate the values in an array easily.
Ver. 1.0
Session 7
Slide 32 of 32