- •Кратко опишите объектно-ориентированный стиль программирования. В чем его преимущества в сравнении с процедурным стилем?
- •Что такое объект? Из чего он состоит?
- •Расскажите о том, как соотносятся классы и объекты?
- •Назовите базовый модуль повторного использования в Си#. Опишите его.
- •Каковы достоинства инкапсуляции в создании по. Какие два ключевых слова реализуют концепцию инкапсуляции?
- •В чем разница между классом и его объектами?
- •Что представляют собой ключевые слова и идентификаторы?
- •Как вызывается метод? Что при этом происходит?
- •Что представляют собой фундаментальные части метода? Как указать, что метод не возвращает значения?
- •Что представляют собой фундаментальные части метода? Как задействовать аргументы в вызове метода?
- •Что представляют собой фундаментальные части метода? Что такое формальные параметры?
- •Для чего используются пространства имен? в чем смысл использования ключевого слова «using»?
- •Что представляют собой фундаментальные части метода? Как связаны аргументы и формальные параметры?
- •Что является атомами программы на Си#?
- •Приведите примеры ключевых слов Си#?
- •Как переменная экземпляра может быть инициализирована при создании объекта?
- •Какие типы существуют Си#? Какие атрибуты отличают разные типы друг от друга?
- •В каких случаях в исходном тексте программы следует использовать константы? в чем их преимущества?
- •19.Что такое статическая переменная класса? Можно ли присвоить статической переменной некоторое значение, когда еще не создано никаких объектов класса?
- •20.Что такое статическая переменная класса? Возможен ли доступ к статической переменной из объекта класса, в котором она объявлена?
- •21.Являются ли методы со следующими заголовками правильно перегруженными?
- •22.Как перегруженные конструкторы делаю класс более удобным при использовании?
- •23.Назовите две основные задачи сборщика мусора?
- •24.Что такое деструктор? Почему он не используется для освобождения ресурсов, не относящихся к памяти?
21.Являются ли методы со следующими заголовками правильно перегруженными?
public double Average(int x, int y);
public int Average(int x, int y);
Не являются. Ниже верные варианты.
using System;
class Average {
public double AverageDemo (double x, double y) {
Console.WriteLine("Два double-параметра: " + x + " "+ y);
return x + y;
}
using System;
class Average {
public int AverageDemo (int x, int y) {
Console.WriteLine("Два int-параметра: " + x + " " + y);
return x + y;
}
22.Как перегруженные конструкторы делаю класс более удобным при использовании?
Перегружая конструктор класса, вы тем самым предоставляете пользователю этого класса определенную гибкость в выборе способа создания объектов.
Одна из самых распространенных причин перегрузки конструкторов — возможность инициализации одного объекта с помощью другого.
При работе с перегруженными конструкторами иногда необходимо обеспечить вызов одного конструктора из другого. В С# это реализуется с помощью еще одной формы ключевого слова t h i s . Общий формат записи такого вызова:
имя_конструктора (список__параметров1) :
t h i s (список__параметров2) {
/I . . . Тело конструктора,
// которое может быть пустым.
}
Преимущество использования ключевого слова t h i s для вызова перегруженных конструкторов состоит в том, что можно избежать ненужного дублирования кода
23.Назовите две основные задачи сборщика мусора?
Система сбора мусора С# автоматически возвращает память для повторного использования, действуя незаметно и без вмешательства программиста. Ее работа заключается в следующем. Если не существует ни одной ссылки на объект, то предполагается, что этот объект больше не нужен, и занимаемая им память освобождается. Эту (восстановленную) память снова можно использовать для размещения других объектов. Система сбора мусора действует только спорадически во время выполнения отдельной программы. Эта система может и бездействовать: она не "включается" лишь потому, что существует один или несколько объектов, которые больше не используются в программе. Поскольку на сбор мусора требуется определенное время, динамическая система С# активизирует этот процесс только по необходимости или в специальных случаях. Таким образом, вы даже не будете знать, когда происходит сбор мусора, а когда — нет.
24.Что такое деструктор? Почему он не используется для освобождения ресурсов, не относящихся к памяти?
Средства языка С# позволяют определить метод, который должен вызываться непосредственно перед тем, как объект будет окончательно разрушен системой сбора мусора. Этот метод называется деструктором, и его можно использовать для обеспечения гарантии "чистоты" ликвидации объекта. Например, вы могли бы использовать деструктор для гарантированного закрытия файла, открытого некоторым объектом. Формат записи деструктора такой:
~имя_класса() {
// код деструктора
}
Очевидно, что элемент имя_класса здесь означает имя класса. Таким образом, деструктор объявляется подобно конструктору за исключением того, что его имени предшествует символ "тильда" (~). (Подобно конструктору, деструктор не возвращает значения.)
Чтобы добавить деструктор в класс, достаточно включить его как член. Он вызывается в момент, предшествующий процессу утилизации объекта. В теле деструктора вы указываете действия, которые, по вашему мнению, должны быть выполнены перед разрушением объекта.
