- •Конструкторы
- •Елабуга 2013
- •Лабораторная работа №2
- •Конструкторы
- •1. Теоретические сведения
- •Конструктор по умолчанию
- •Конструктор с аргументами
- •Поля только для чтения
- •2. Практическая часть
- •Перечень индивидуальных заданий для выполнения лабораторной работы № 2
- •Вариант 1
- •Вариант 2
- •Вызов конструкторов из других конструкторов
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
Вызов конструкторов из других конструкторов
Очень часто разные конструкторы независимо друг от друга содержат частично совпадающий код. С целью уменьшения объема программы рекомендуется, для выполнения совпадающего кода, осуществлять вызов конструкторов из других конструкторов. Для этого после имени конструктора указывается, через двоеточие, ключевое слово this со списком передаваемых параметров:
public CA(int a,int b,int c):this(a,b)
{
z=c;
}
При вызове конструкторов из других конструкторов, может быть вызван только один конструктор, который всегда выполняется первым.
Пример 4.
using System;
namespace ConsoleApplication4
{
class CA
{
public int x,y,z;
public readonly int rd;
public CA()
{
x=3;
y=2;
z=x+y;
rd=x+y+z;
}
public CA(int a,int b)
{
x=a;
y=b;
z=a+b;
rd=x+y+z;
}
public CA(int a,int b,int c):this(a,b)
{
z=c;
rd=x+y+z;
}
}
class Program
{
static void Main(string[] args)
{ CA obj=new CA();
Console.WriteLine("x={0,2} y={1,2} z={2,2}",obj.x,obj.y,obj.z);
CA obj1=new CA(5,7);
Console.WriteLine("x={0,2} y={1,2} z={2,2}", obj1.x,obj1.y,obj1.z);
CA obj2=new CA(8,9,25);
Console.WriteLine("x={0,2} y={1,2} z={2,2}", obj2.x,obj2.y,obj2.z);
Console.WriteLine("поля для чтения {0,2} {1,2} {2,2}", obj.rd,obj1.rd,obj2.rd);
}
}
}
2. Практическая часть
Порядок выполнения работы
Выполнить примеры программ из лабораторной работы.
Выполнить индивидуальные задания.
Оформить и сдать отчет о выполнении лабораторной работы.
Перечень индивидуальных заданий для выполнения лабораторной работы № 2
Задание №1
Вариант 1
Объявить класс, содержащий одномерный целочисленный массив и функцию для печати элементов этого массива. Конструктор класса принимает два параметра – ссылки на массивы (внешние массивы). Конструктор выделяет память под внутренний массив размерностью равной сумме размерностей внешних массивов, затем формируются значения элементов внутреннего массива путем копирования вначале элементов одного внешнего массивов, а затем второго. Результирующий массив сортируется. Класс также должен содержать поля readonly для минимального и максимального элемента массива. Значения этих полей определяются в результате работы конструктора. Элементы внешних массивов ввести с клавиатуры. Создать объект этого класса. Распечатать элементы массива объекта, минимальное и максимальное значение массива объекта.
Вариант 2
Объявить класс, содержащий одномерный целочисленный массив, также функцию для печати элементов этого массива. Конструктор класса принимает один параметр – ссылку на массив (внешний массив). Конструктор выделяет память под внутренний массив размерностью совпадающий с размерностью внешнего массива, затем значения элементов внешнего массива копирует во внутренний массив. Класс также должен содержать поля readonly для минимального и максимального элемента массива. Значения этих полей определяются в результате работы конструктора. Элементы внешнего массива ввести с клавиатуры. Создать объект этого класса. Распечатать элементы массива объекта, минимальное и максимальное значение массива объекта.
