
- •1. Цели и задачи дисциплины «Программирование».
- •2. Особенности решения задач с использованием эвм.
- •3. Алгоритм и его свойства. Способы описания алгоритмов.
- •4. Схемы алгоритмов. Правила оформления схем алгоритмов.
- •Visual Studio
- •12. Встроенный отладчик. Пошаговое выполнение программы. Использование точек останова. Просмотр значений.
- •15. Характеристики качества программного обеспечения. Жизненный цикл программы.
- •16. Свойства языков программирования, определяющие качество программ: простота, надежность, быстрота трансляции, эффективность, удобочитаемость, блочность.
- •17. Состав языка программирования c#. Алфавит и лексемы. Идентификаторы.
- •18. Состав языка программирования c#. Алфавит и лексемы. Идентификаторы.
- •19. Разделители в c#. Литералы в c#.
- •20. Типы данных в языке c#. Классификация типов. Встроенные типы.
- •21. Типы-значения и ссылочные типы.
- •22. Преобразования встроенных арифметических типов-значений. Примеры использования.
- •23. Переменные. Именованные константы. Операции и выражения. Примеры использования.
- •24. Основные операции c#. Инкремент и декремент. Операция new. Примеры использования.
- •25. Явное преобразование типа. Примеры использования.
- •26. Умножение, деление и остаток от деления. Сложение и вычитание. Примеры использования.
- •27. Условная операция. Операции присваивания. Примеры использования.
- •28. Операции отношения и проверки на равенство. Операция отрицания. Примеры использования.
- •29. Простейший ввод-вывод. Примеры использования.
- •30. Математические функции – класс Math. Примеры использования.
- •31. Операторы. Выражения, блоки и пустые операторы. Примеры использования.
- •32. Составной оператор. Операторные скобки. Примеры использования.
- •33. Условные оператор if. Примеры использования. Алгоритмы разветвленной структуры
- •34. Оператор выбора switch. Примеры использования.
- •35. Понятие цикла. Цикл с предусловием while. Примеры использования.
- •36. Понятие цикла. Цикл с постусловием do. Примеры использования.
- •37. Понятие цикла. Цикл с параметром for. Примеры использования.
- •38. Понятие цикла. Цикл перебора foreach. Примеры использования.
- •39. Оператор break. Оператор continue. Оператор return. Примеры использования.
- •40.Обработка исключительных ситуаций. Оператор try. Примеры использования.
- •41. Оператор throw. Класс Exception. Примеры использования.
- •42. Классы: основные понятия. Члены классов. Спецификаторы доступа. Примеры использования.
- •43. Создание объектов. Конструкторы. Примеры использования.
- •44. Свойства. Ключевое слово this. Примеры использования.
- •45.Методы. Понятие методов. Описание методов. Примеры использования.
- •46. Передача параметров методу. Параметры-значения. Параметры-ссылки. Примеры использования.
- •47.Понятие параметров метода. Выходные параметры. Примеры использования.
- •48. Массивы. Одномерные массивы. Примеры использования.
- •51. Класс System.Array. Основные элементы класса Array. Примеры использования.
- •52. Организация вывода массивов. Вывод одномерных массивов. Примеры использования.
- •Объявления и инициализация
- •Ступенчатые массивы
- •Объявления и инициализация
- •54. Символы. Массивы символов. Примеры использования.
- •55. Строки типа String. Основные элементы класса System.String. Примеры использования.
- •56. Форматирование строк. Примеры использования.
- •57. Класс StringBuilder. Основные элементы класс StringBuilder. Примеры использования.
- •58. Класс Random. Основные элементы класс Random. Примеры использования.
43. Создание объектов. Конструкторы. Примеры использования.
Конструктор предназначен для инициализации объекта. Он вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса. Ниже перечислены свойства конструкторов.
Конструктор не возвращает значение.
Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.
Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов — значение null.
Конструктор, вызываемый без параметров, называется конструктором по умолчанию.
В листинге 1 начальные значения полей класса заданы при описании класса. Если же при создании объектов требуется присваивать полю разные значения, это следует делать в конструкторе.
В листинге 2 в класс Prim добавлен конструктор, а поля сделаны закрытыми. В программе создаются два объекта с различными значениями полей.
Листинг 2- Класс с конструктором
using System;
namespace ConsoleApplication1
(
class Prim {
рublic Prim(int a, double у) // конструктор с параметрами
{
this.a = а;
this.y = у;
}
рublic double Getу() // метод получения поля у
{
return y;
}
int a;
double у;
}
class Class1
{ static void Main( )
{
Prim a = new Prim( 10, 0.01 ); // вызов конструктора
Соnsole.WriteLine( a.Gety( ) ); // результат: 0,01
Prim b = new Prim( 1. 2.2 ): // вызов конструктора
Соnsole.WriteLine( b.Gety( ) ); // результат: 2,2
}
}
}
В классе, чтобы обеспечить возможность инициализации объектов разными способами, можно иметь несколько конструкторов, но при этом они должны иметь разные сигнатуры.
Листинг 3- Класс с 2-мя конструкторами
class Prim
{
рublic Prim( int а ) // конструктор 1
{
this.a = a;
this.y = 0.002;
}
public Prim( double y ) // конструктор 2
{
this.a = 1;
this.y = y;
}
...
}
...
Prim x = new Prim( 300 ) ; // вызов конструктора 1
Prim y = new Prim( 5.71 ); // вызов конструктора 2
Если один из конструкторов выполняет какие-либо действия, а другой должен делать то же самое плюс еще что-нибудь, удобно вызвать первый конструктор из второго. Для этого используется уже известное ключевое слово this, например:
class Prim {
рublic Prim( int а ) // конструктор 1
{
this.a = a;
}
рublic Prim(int a, double y) : this( а ) // вызов конструктора 1
{
this.y = y;
}
}
Конструкция, находящаяся после двоеточия, называется инициализатором, то есть тем кодом, который исполняется до начала выполнения тела конструктора.
Вспомним, что все классы в С# имеют общею предка — класс object. Конструктор любого класса, если не указан инициализатор, автоматически вызывает конструктор своего предка. Это можно сделать и явным образом с помощью ключевого слова basе, обозначающего конструктор базового класса. Таким образом, первый конструктор из предыдущего примера можно записать и так:
рublic Prim ( int a ) : base( ) // конструктор 1
{
this.а = а;
}
Конструктор базового класса вызывается явным образом в тех случаях, когда ему требуется передать параметры.
До сих пор речь шла о конструкторах экземпляра. Существует второй тип конструкторов — статические конструкторы, или конструкторы класса. Конструктор экземпляра инициализирует данные экземпляра, конструктор класса — данные класса.
Статический конструктор не имеет параметров, его нельзя вызвать явным образом. Система сама определяет момент, в который требуется его выполнить. Гарантируется только, что это происходит до создания первого экземпляра объекта и до вызова любого статического метода.
Некоторые классы содержат только статические данные, и, следовательно, создавать экземпляры таких объектов не имеет смысла.
В С# введена возможность описывать статический класс, то есть класс с модификатором static. Экземпляры такого класса создавать запрещено, и кроме того, от него запрещено наследовать. Все элементы такого класса должны явным образом объявляться с модификатором static (константы и вложенные типы классифицируются как статические элементы автоматически). Конструктор экземпляра для статического класса задавать, естественно, запрещается.
Листинг 3 - Статический класс
using System;
namespace ConsoleApplication1
{
static class D
{
static int a = 200;
static double b = 0.002;
рublic static void Print ( )
{
Сonsole.WriteLine( "а = " + а );
Сonsole.WriteLine( "b = " + b );
}
}
class Class1
{ static void Main( )
{
D.Print( );
}
}
}